Exploring: limiting transaction output amount as a function of total input value



Summary:

The author of a post to a Bitcoin email list has proposed new scripting capabilities that would allow the maximum amount that can be sent from an address to be limited based on the total value of its inputs. The author suggests two use cases for such a feature: firstly, enabling a user to add protection to their funds by rate-limiting the amount they are allowed to send over a certain period; secondly, allowing exchanges to rate-limit addresses containing large amounts of bitcoin, adding warm or hot wallet functionality to a cold-storage address and reducing the number of times a cold wallet must be accessed with private keys that give access to the full amount. The author envisions a typical setup where multisig is used so that the user has two sets of private keys to their encumbered address. One set of private keys allows only for sending with rate-limiting restrictions in place, while a second set of private keys allows for sending any amount without rate-limiting, effectively overriding such restriction. The parameters defining how an output is rate-limited include a block height "h0" indicating the first block height of an epoch; a block height "h1" indicating the last block height of an epoch; an amount "a" in satoshi indicating the maximum amount allowed to be sent in any epoch; and an amount "a_remaining" (in satoshi) indicating the maximum amount allowed to be sent within the current epoch. The author provides examples of how rate-limiting would work in practice, including the need for change output created by a transaction from a rate-limited address to also be rate-limited. Rate-limiting parameters are part of the transaction and chosen by the user, meaning that they must be validated to ensure that they do not violate the intended constraints. The author proposes defining all validations and describing aggregate behavior of multiple (rate-limited) inputs as future pieces of work.


Updated on: 2023-05-21T03:21:36.021588+00:00