> Perhaps the only things that cannot be usefully changed in a softfork is the 
> block header format and how proof-of-work is computed from the block header.

Why not? I can imagine a soft fork where the block header would contain SHA-256 
and SHA-3 hashes in the same place. The SHA-256 would be calculated as-is, but 
the SHA-3 would be truncated only to cover zero bits in SHA-256 hashes. In this 
way, if SHA-256 would be totally broken, old nodes would see zero hashes in the 
previous block hash and the merkle tree hash, but the new nodes would see 
correct SHA-3 hashes in the same place. So, for example if we have 1d00ffff 
difficulty, the first 32-bits would be zeroes for all old nodes, but all new 
nodes would see SHA-3 truncated to 32-bits in the same place. The difficulty 
could tell us how many zero bits we should truncate our SHA-3 result to. Also, 
in the same way we could introduce SHA-4 in the future as a soft-fork if SHA-3 
would be broken and we would see many zero bits in our mixed SHA-256 plus SHA-3 
consensus.

On 2021-05-23 13:01:32 user ZmnSCPxj via bitcoin-dev 
<bitcoin-dev@lists.linuxfoundation.org> wrote:
> Good morning Jorge, et al,
> 
> > Hardforks can be useful too.
> > But, yes, I agree softforks are preferable whenever possible.
> 
> I think in principle the space of possible softforks is very much wider than 
> can be trivially expected.
> 
> For instance, maaku7 once proposed a softfork that could potentially change 
> the block discovery rate as a softfork.
> Although this required exploiting a consensus bug that has since been closed.
> 
> The example of SegWit shows us that we can in fact create massive changes to 
> the transaction and block formats with a softfork.
> 
> For example, it is possible to change the Merkle Tree to use SHA3 instead, in 
> a softfork, by requiring that miners no longer use the "normal" existing 
> Merkle Tree, but instead to require miners to embed a commitment to the 
> SHA3-Merkle-Tree on the coinbase of the "original" block format, and to build 
> "empty" SHA2-Merkle-Trees containing only the coinbase.
> To unupgraded nodes it looks as if there is a denial-of-service attack 
> permanently, while upgraded nodes will seek blocks that conform to the 
> SHA3-Merkle-Tree embedded in the coinbase.
> 
> (Do note that this definition of "softfork" is the "> 50% of miners is enough 
> to pull everyone to the fork".
> Some thinkers have a stricter definition of "softfork" as "non-upgraded nodes 
> can still associate addresses to values in the UTXO set but might not be able 
> to detect consensus rules violations in new address types", which fits SegWit 
> and Taproot.)
> 
> (In addition, presumably the reason to switch to SHA3 is to avoid potential 
> preimage attacks on SHA2, and the coinbase is still in a SHA2-Merkle-Tree, 
> so... this is a bad example)
> 
> Perhaps the only things that cannot be usefully changed in a softfork is the 
> block header format and how proof-of-work is computed from the block header.
> But the flexibility of the coinbase allows us to hook new commitments to new 
> Merkle Trees to it, which allows transactions to be annotated with additional 
> information that is invisible to unupgraded nodes (similar to the `witness` 
> field of SegWit transactions).
> 
> 
> ------------
> 
> 
> Even if you *do* have a softfork, we should be reminded to look at the 
> histories of SegWit and Taproot.
> 
> SegWit became controversial later on, which delayed its activation.
> 
> On the other hand, Taproot had no significant controversy and it was widely 
> accepted as being a definite improvement to the network.
> Yet its implementation and deployment still took a long time, and there was 
> still controversy on how to properly implement the activation code.
> 
> Any hardforks would not only have to go through the hurdles that Taproot and 
> SegWit had to go through, but will *also* have to pass through the much 
> higher hurdle of being a hardfork.
> 
> Thus, anyone contemplating a hardfork, for any reason, must be prepared to 
> work on it for several **years** before anyone even frowns and says "hmm 
> maybe" instead of everyone just outright dismissing it with a simple 
> "hardfork = hard pass".
> As a simple estimate, I would assume that any hardfork would require twice 
> the average amount of engeineering-manpower involved in SegWit and Taproot.
> (this assumes that hardforks are only twice as hard as softforks --- this 
> estimate may be wrong, and this might provide only a minimum rather than an 
> expected average)
> 
> There are no quick solutions in this space.
> Either we work with what we have and figure out how to get around issues with 
> no real capability to fix them at the base layer, or we have insight on 
> future problems and start working on future solutions today.
> For example, I know at least one individual was maintaining an "emergency" 
> branch to add some kind of post-quantum signature scheme to Bitcoin, in case 
> of a quantum break.
> 
> Regards,
> ZmnSCPxj
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists.linuxfoundation.org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
> 

_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to