Gregory Maxwell [ARCHIVE] on Nostr: 📅 Original date posted:2014-12-30 📝 Original message:On Mon, Dec 29, 2014 at ...
📅 Original date posted:2014-12-30
📝 Original message:On Mon, Dec 29, 2014 at 7:21 PM, Sergio Lerner
<sergiolerner at certimix.com> wrote:
> I propose to allow miners to voluntarily lock funds by letting miners
> add additional inputs to the coinbase transaction. Currently the
> coinbase transaction does not allow any real input to be added (only a
> pseudo-input).
> This is a hard-fork, and we could include it the next time a hardfork is
> made.
> The modifications to the code are minimal (no more than 12 lines
> modified where IsCoinBase() is called), and they generally involve
> removing code, not adding.
If the motivation is purely enabling different rules in a soft-fork
than I think nothing needs to be done.
Instead of providing inputs to a coinbase: you provide an unusual
anyone can spend transaction in the block which pays to fees; and
simultaneously add a soft-forking rule that makes that anyone can
spend rule no longer anyone can spend.
To make that more concrete. E.g. You make your anyone can spend
output "PUSH<hash of coinbase output script_pubkeys> OP_NOP3". Now
this anyone can pay transaction is really just a coinbase input.
The construction is reasonably efficient, and also more flexible-- in
that it could control the data under the hash in more flexible ways
than available in the existing sighash flags.
As an aside, I'm not sure that I agree with the claim that making
coinbases have inputs is a simple modification... as we use one of the
inputs already as the special coinbase field and at least that must be
special cased.
📝 Original message:On Mon, Dec 29, 2014 at 7:21 PM, Sergio Lerner
<sergiolerner at certimix.com> wrote:
> I propose to allow miners to voluntarily lock funds by letting miners
> add additional inputs to the coinbase transaction. Currently the
> coinbase transaction does not allow any real input to be added (only a
> pseudo-input).
> This is a hard-fork, and we could include it the next time a hardfork is
> made.
> The modifications to the code are minimal (no more than 12 lines
> modified where IsCoinBase() is called), and they generally involve
> removing code, not adding.
If the motivation is purely enabling different rules in a soft-fork
than I think nothing needs to be done.
Instead of providing inputs to a coinbase: you provide an unusual
anyone can spend transaction in the block which pays to fees; and
simultaneously add a soft-forking rule that makes that anyone can
spend rule no longer anyone can spend.
To make that more concrete. E.g. You make your anyone can spend
output "PUSH<hash of coinbase output script_pubkeys> OP_NOP3". Now
this anyone can pay transaction is really just a coinbase input.
The construction is reasonably efficient, and also more flexible-- in
that it could control the data under the hash in more flexible ways
than available in the existing sighash flags.
As an aside, I'm not sure that I agree with the claim that making
coinbases have inputs is a simple modification... as we use one of the
inputs already as the special coinbase field and at least that must be
special cased.