How were previous soft forks tested prior to being considered for activation? Were they added to the default testnet? Was a custom testnet setup with the soft fork functionality available on that custom testnet? Were they tested on a sidechain like Liquid? I know we have signet now (generally considered to be superior to today's testnet) but that is a relatively recent development. It was available for Taproot but none of the previously activated soft forks.
What is the history on how previous soft forks were tested prior to being considered for activation?
1 Answer
AJ Towns answered this on the bitcoin-dev mailing list.
p2sh was briefly tested on testnet (and an alternative was tested on mainnet) https://bitcointalk.org/index.php?topic=58579.msg786939#msg786939
cltv and csv were mostly tested on elements alpha (liquid precursor testnet); though they were activated on testnet 6 and 11 weeks prior
to mainnet http://diyhpl.us/wiki/transcripts/gmaxwell-sidechains-elements/segwit was also tested via elements alpha, though in a different
form to what was deployed for bitcoin (ie, the elements approach
would have been a hard fork). because of the p2p changes (you need
additional data to validate blocks post segwit), segwit had dedicated test networks, up to segnet4, from 1st Jan 2016 to 30th Mar 2016.
segwit was activated on testnet on 13th May 2016, merged into core on 25th June 2016, and included in the 0.13.1 released on 27th October 2016. I couldn't find very good public references about segnet, and don't think it saw much use outside of people implementing segwit
consensus features themselves.taproot was merged 15th October 2020 (#18267), and activated on
signet as of genesis around 21st October 2020 (#20157). It was locked in on mainnet on 12th June 2021, activated on testnet on 8th July
2021, and activated on mainnet on 14th November 2021.CTV had ctv-signet created around 17th December 2020, but it wasn't really announced or encouraged until 17th Feb 2022. The core PR
(#21702) was opened 16th April 2021. https://www.erisian.com.au/bitcoin-core-dev/log-2020-12-17.html#l-845 https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-February/019925.htmlI think Drivechains has a DriveNet testnet (since 2018 or earlier?), though I don't see an explorer, and it looks like the bitcoin code it's based on predates taproot.
Other than CTV, Drivechains and ideas being explored on Liquid,
most other ideas for bitcoin consensus changes haven't really
progressed past a gist, mailing list post, bip or draft patch to somewhere that you can actually experiment (great consensus
cleanup, anyprevout, OP_TX/TXHASH, TLUV, SIGHASH_GROUP, PUSH_ANNEX,
checkblockatheight, g'root/graftroot, etc...)I thing segnet was mostly used for development of segwit itself, rather than testing or application development -- it was reset about once a month as changes to the segwit design occurred, and after the design was finalised, was active on testnet, either using -addnode to connect directly to know segwit-enabled peers, or, eventually, with seed nodes updated and filtering via the WITNESS feature. The 23rd June 2016 meeting logs have some relevant discussion: https://www.erisian.com.au/bitcoin-core-dev/log-2016-06-23.html#l-178