1

Can I transfer to as many addresses as I'd like in a given transaction? Is there a technical upper bound? If there is an upper bound that is not technical, is there a reason why the upper bound was chosen? Is it a "consensus" limit or just a software default? If there is a limit, was there always a limit?

2

There is no hard coded limit to the quantity of destinations in a single transaction. However, there is an overall transaction weight limit, which is roughly half the block weight. Therefore, if you tried to pack in an unusually high quantity of inputs / outputs, you could end up with a transaction that exceeds the maximum allowed tx weight limit and thus gets rejected.

So:

Can I transfer to as many addresses as I'd like in a given transaction?

No.

Is there a technical upper bound?

Yes. The transaction cannot exceed its overall weight limit, which is half the penalty-free block weight.

is there a reason why the upper bound was chosen?

Presumably to prevent spam attacks.

Is it a "consensus" limit or just a software default?

It's consensus level.

If there is a limit, was there always a limit?

There has always been a limit to the maximum tx weight. Prior to HF version 8, this limit was the set to the penalty-free block weight. Since version 8, it's half the penalty-free block weight.

UPDATE

Since bulletproofs, there is also a maximum of 16 outputs per transaction.

  • 1
    Note that, with Bulletproofs, the output limit is currently set to 16. Thus, technically the maximum number of recipients / addresses is 15 (one output is reserved for change). – dEBRUYNE Apr 5 at 7:07
  • 1
    Thanks dEBRUYNE. I forgot about that constraint. – jtgrassie Apr 5 at 13:36
2

The current limit for bulletproof transactions is 16 outputs per transactions. This is an arbitrary limit, not a limit inherent in the bulletproof construction. It is enforced by consensus. I don't actually remember why this limit was set (originally it was to avoid a very small transaction costing a lot of time to verify, but the weight system prevents this). Thus you are limited to 16 destination addresses per transaction.

This was not always the case. Before bulletproofs, the only limit was the block size (and by extension, maximum transaction size).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.