Feature request: single payment only addresses #11405

issue ghost opened this issue on September 26, 2017
  1. ghost commented at 2:20 PM on September 26, 2017: none

    I'm not really sure if this is even possible.

    The way I would like to request payments is such that, the address only accepts the requested payment amount, and it only accepts it once. All other attempts are denied.

    Three reasons:

    1. Payers might believe they can send a payment to an old address to pay for a bill. That is wrong, but if it happens, the payee would need to go hunting for their payment, or else coldly deny them their service.
    2. The correct amount is required. (advantage is obvious)
    3. Some people think they can just donate to any address that they believe you hold, and I guess that works technically, but from an accounting stand-point, it is not certain which fund a donation might go to. You'd need to create a new minor account for dust transactions that you never intended to receive.

    Is this possible at any level?

  2. john-light commented at 3:01 AM on September 27, 2017: none

    What you're asking for is possible but would result in extra resource usage for full nodes. Such a new rule would be implemented like this:

    1. When address Y is created with this special rule, the owner broadcasts transaction X specifying that address Y can only accept amount Z, no more or less, and no further transactions after balance Z is reached.
    2. After transaction X is confirmed, all nodes would then have to check each new transaction that is relayed to make sure it conforms with the rule set by transaction X. It's basically adding a new protocol rule for each address that has this special rule.
    3. Any transactions (or blocks that include such transactions) that violate this rule for address Y will be rejected as invalid.

    So this special rule will result in at least 2x blockchain load for each special address that is used (one tx to create the rule, one tx to receive the payment) and will also result in an additional resource load on all nodes (akin to permanently increasing the UTXO set by the number of special addresses that are created, since the rule must be enforced forever).

    To sum up, you have two concerns:

    1. You don't want people to reuse an address, and
    2. You only want the address to accept a specified amount.

    (1) can be addressed using BIP-0047 bitcoin payment codes. (2) can be addressed off-chain using e.g. BIP-0070 payment requests; if the payer overpays, you can refund them the difference, and if the payer underpays, you (or the UI) can tell them as much and request they send more, else refund the balance (minus tx fees, perhaps).

  3. jonasschnelli commented at 2:51 AM on September 28, 2017: contributor

    I think this is the wrong place to discuss this (although I think it's an important topic).

    Please move this to the bitcoin-dev mailing list or contribute/read the current Thread with a similar topic by @petertodd: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2017-September/015063.html

    Closing.

  4. jonasschnelli closed this on Sep 28, 2017

  5. MarcoFalke locked this on Sep 8, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-17 15:15 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me