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



Summary:

The author of this post is proposing the implementation of new scripting capabilities in Bitcoin that would limit the output amount of a transaction based on the total value of its inputs. This would enable users to rate-limit the amount they are able to send during a certain period, adding additional protection to their funds and preventing an attacker from sweeping all their funds in a single transaction. Exchanges may also wish to rate-limit addresses containing large amounts of Bitcoin, adding warm- or hot-wallet functionality to a cold-storage address. The proposed parameters for rate-limiting include a block height indicating the first and last block height of an epoch, an amount indicating the maximum amount that is allowed to be sent in any epoch, and an amount indicating the maximum amount that is allowed to be sent within the current epoch.To enforce rate limiting, any change output created by a transaction from a rate-limited address must also be rate-limited. The rate-limiting parameters are part of the transaction and chosen by the user (or their wallet), and must be validated to ensure that they do not violate the intended constraints. The author notes that further work is needed to define all validations and describe the aggregate behavior of multiple (rate-limited) inputs, proof that two rate-limited addresses cannot spend more than the sum of their individual limits.


Updated on: 2023-06-15T00:28:22.051568+00:00