{"id":17683,"date":"2021-02-12T13:34:23","date_gmt":"2021-02-12T13:34:23","guid":{"rendered":"http:\/\/ci027cfe6cb0052697"},"modified":"2025-01-30T12:53:52","modified_gmt":"2025-01-30T12:53:52","slug":"bitcoin-developers-on-taproot-activation","status":"publish","type":"post","link":"https:\/\/bitcoinmagazine.com\/technical\/bitcoin-developers-on-taproot-activation","title":{"rendered":"In First Activation Meeting, Bitcoin Developers Discuss Paths For Taproot"},"content":{"rendered":"<div id=\"bsf_rt_marker\"><\/div><figure><img decoding=\"async\" src=\"https:\/\/bitcoinmagazine.com\/wp-content\/uploads\/2025\/01\/taproot-is-coming-what-it-is.jpg\" title=\"\"><\/figure>\n<p>Taproot <a href=\"https:\/\/bitcoinmagazine.com\/articles\/taproot-merged-into-bitcoin-core\">was merged into Bitcoin Core<\/a> in October 2020, leaving only the activation method for this highly-anticipated protocol upgrade focused on adding smart contract flexibility and more transactional privacy to Bitcoin.<\/p>\n<p>Last week, the Bitcoin development community gathered via Internet Relay Chat (IRC) to discuss the parameters of the Taproot activation and two code pull requests (PRs) of the BIP 8 signaling mechanism.&nbsp;<\/p>\n<p>\u201cIn an effort to get this closer to the finish line we are organizing a meeting on IRC on the ##taproot-activation channel on Tuesday 2nd February at 19:00 UTC,\u201d Bitcoin development organizer Michael Folkson <a href=\"https:\/\/lists.linuxfoundation.org\/pipermail\/bitcoin-dev\/2021-January\/018370.html\" target=\"_blank\" rel=\"noopener\">announced via the bitcoin-dev mailing list<\/a>. \u201cThe primary objective will be to finalize the revised BIP 8 activation method&#8230;\u201d<\/p>\n<p>Ultimately, that meeting provided more insight into how Bitcoin\u2019s most significant protocol change since SegWit might move forward.<\/p>\n<p><em>Editor\u2019s note: The statements reproduced from IRC below have been edited slightly for clarity but are otherwise presented as they were written.<\/em><\/p>\n<h2>Giving Shape To The Proposal<\/h2>\n<p>Bitcoin developer <a href=\"https:\/\/twitter.com\/ajtowns\" target=\"_blank\" rel=\"noopener\">Anthony Towns<\/a> has compiled the <a href=\"https:\/\/en.bitcoin.it\/wiki\/Taproot_activation_proposals#BIP9_equivalent.2C_BIP8.28false.2C_1y.29\" target=\"_blank\" rel=\"noopener\">proposals and possible scenarios<\/a> for the activation of Taproot. <a href=\"http:\/\/gnusha.org\/taproot-activation\/2021-02-02.log\" target=\"_blank\" rel=\"noopener\">In the February 2 meeting<\/a>, the ones that seem to have the most support are \u201cBIP 8 (false, 1y)\u201d and \u201cBIP 8 (true, 1y).\u201d However, no vote was taken, there was just discussion of each alternative activation method.<\/p>\n<p>But what does this mean? BIP 8 is a mechanism that allows for upgrading the consensus in the Bitcoin network through a soft fork, and, specifically a miner-activated soft fork or MASF with the option to add a user activated soft fork (UASF) after some time. In the last consensus update (SegWit), a user-activated soft fork (UASF) was used in addition to <a href=\"https:\/\/bitcoinmagazine.com\/articles\/lombrozo-bitcoin-core-developers-may-never-use-miner-focused-bip-9-signaling-again1\">BIP 9&#8217;s <\/a>MASF. However, Taproot seems to be <a href=\"https:\/\/bitcoinmagazine.com\/articles\/poolin-launches-initiative-to-activate-taproot-encouraging-other-mining-pools-to-join\">non-controversial for miners<\/a>, so it seems less likely that a UASF would be necessary this time.<\/p>\n<p>Coming back to the proposal, the parameters are \u201clockinontimeout\u201d and \u201ctimeout,\u201d where lockinontimeout<em><\/em>basically means whether or not the activation would be forced and \u201ctimeout\u201d means<em><\/em>the window in which it would be activated. Another relevant parameter that didn&#8217;t get enough discussion was \u201cstartheight\u201d.&nbsp;<\/p>\n<p>If lockinontimeout is false, and the update doesn\u2019t have enough support, it gets cancelled and a new proposal is defined. (Bitcoin Developer <\/p>\n<p>To clarify:<br \/>BIP8 w\/LockinOnTimeout is a MASF w\/ UASF fallback.<br \/>So long as miners activate, no UASF occurs.<\/p>\n<p>The pre-planned UASF also ensures the MASF happens:<br \/>It avoids giving the miners a veto power, and creates the proper incentive to ensure a MASF occurs.<a href=\"https:\/\/twitter.com\/hashtag\/Bitcoin?src=hash&amp;ref_src=twsrc%255Etfw\" target=\"_blank\" rel=\"noopener\">#Bitcoin<\/a><a href=\"https:\/\/twitter.com\/hashtag\/Taproot?src=hash&amp;ref_src=twsrc%255Etfw\" target=\"_blank\" rel=\"noopener\">#Taproot<\/a><\/p>\n<p>\u2014 Luke Dashjr (@LukeDashjr) <a href=\"https:\/\/twitter.com\/LukeDashjr\/status\/1356751577705553922?ref_src=twsrc%255Etfw\" target=\"_blank\" rel=\"noopener\">February 2, 2021<\/a><\/p>\n<p>&#8220;&gt;Luke Dashjr described lockintimeout=false as giving miners an additional power that they were never intended to have),<\/p>\n<p>\u201cIf you start off with (<em>timeout=T<\/em>, <em>lockinontimeout=false<\/em>) there&#8217;s three possibilities when T is hit: the activation fails, you try again with a new activation (<em>timeout=T+1yea<\/em>r, <em>lockinontimeout=true<\/em>, eg); before then you tell everyone to switch their software to (<em>timeout=T<\/em>, <em>lockinontimeout=true<\/em>) at which point you&#8217;ve upgraded the MASF to a UASF,\u201d Towns wrote on IRC. \u201cThere&#8217;s also the possibility of getting everyone to upgrade to software that specifies (timeout=T-6 months, <em>lockinontimeout=true<\/em>) in which case the people who&#8217;ve upgraded will start rejecting blocks at T-6months, and if the longest chain activates by that time, both old and new software will have the soft-fork activated.\u201d<\/p>\n<p>However, Dashjr disagrees on lockinontimeout=false:<\/p>\n<p>\u201c&#8230;are we happy with lockingtimeout = false in general?,\u201d Bitcoin Developer <a href=\"https:\/\/twitter.com\/dr_orlovsky\" target=\"_blank\" rel=\"noopener\">Maxim Orlovsky<\/a> asked.<\/p>\n<p>\u201cYes,\u201d Lightning Developer <a href=\"https:\/\/twitter.com\/rusty_twit\" target=\"_blank\" rel=\"noopener\">Rusty Russell<\/a> responded. \u201cWe have a UASF hammer if we need it, but obv it&#8217;s better not to use it.\u201d<\/p>\n<p>\u201clot=true doesn&#8217;t mean we use it, lot=false means the intent is to let miners decide,\u201d Dashjr wrote. \u201cBIP8(false) is a regression.\u201d<\/p>\n<p>But Russell argued against what he sees as a developer imposition: \u201cI feel that avoiding the appearance of developer mandate over the protocol is important, and also I like having an escape hatch should problems be found before activation,\u201d he wrote. \u201cThus I prefer to start with lockin=false, and revisit at 6 months if it hasn&#8217;t activated.\u201d<\/p>\n<p>\u201cThere\u2019s no developer mandate\u2026 makes more sense to do 1y,false then 1y,true for the same 1y period [in the case of two subsequent deployments],\u201d Dashjr responded.<\/p>\n<p>But Russell did not appear to be swayed:<\/p>\n<p>\u201cI disagree,\u201d he wrote. \u201cMiners get coordination power because we can reliably measure them in a decentralized manner, unlike other groups. That implies the ability to *not* coordinate, yes. But we have a plan for that too, as BIP-8 makes a UASF much less likely to cause a split. That&#8217;s as good as we can do.\u201d<\/p>\n<p>\u201clot=true IS planning for that,\u201d Dashjr wrote in response, \u201cit doesn&#8217;t stop miners from doing MASF.\u201d<\/p>\n<p>Others in the chat proposed to make lockinontimeout=false optional, but the default:<\/p>\n<p>\u201clot=false is safer than lot=true, so it&#8217;s worth doing lot=false first given that we know hashpower is ~90% already pro-taproot,\u201d wrote CoinSwap developer <a href=\"https:\/\/twitter.com\/chris_belcher_\" target=\"_blank\" rel=\"noopener\">Chris Belcher<\/a>.<\/p>\n<p>Iif users can easily change lot=false to lot=true at some point without requiring a new core release, I&#8217;d support leaving lot=false the default,\u201d <a href=\"https:\/\/twitter.com\/ProofOfKeags\" target=\"_blank\" rel=\"noopener\">Keagan McClelland<\/a> wrote.<\/p>\n<h2>The UASF Hammer<\/h2>\n<blockquote class=\"twitter-tweet\" data-width=\"550\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">To clarify:<br \/>BIP8 w\/LockinOnTimeout is a MASF w\/ UASF fallback.<br \/>So long as miners activate, no UASF occurs.<\/p>\n<p>The pre-planned UASF also ensures the MASF happens:<br \/>It avoids giving the miners a veto power, and creates the proper incentive to ensure a MASF occurs.<a href=\"https:\/\/twitter.com\/hashtag\/Bitcoin?src=hash&amp;ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"noopener\">#Bitcoin<\/a> <a href=\"https:\/\/twitter.com\/hashtag\/Taproot?src=hash&amp;ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"noopener\">#Taproot<\/a><\/p>\n<p>&mdash; Luke Dashjr (@LukeDashjr) <a href=\"https:\/\/twitter.com\/LukeDashjr\/status\/1356751577705553922?ref_src=twsrc%5Etfw\" target=\"_blank\" rel=\"noopener\">February 2, 2021<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/p>\n<p>Dashjr wants to use \u201cBIP 8 (true),\u201d a UASF fallback, as a game theory device to make sure that miners will activate Taproot, and give them no option of \u201cveto\u201d power, just like what happened with SegWit.<\/p>\n<p>\u201cGiven the signaling requirements, What type of stalling or griefing attack could a mining pool achieve if they value stalling taproot?\u201d a user called \u201cgloved\u201d asked in the IRC on February 2. \u201cEg abusing the marginal hashrate required for activation.\u201d<\/p>\n<p>As a reminder, signaling is about reducing fork risks and has nothing to do with political support or voting.<\/p>\n<p>\u201cMASF is the preferred path, with UASF as a fallback if miners fail to signal,\u201d Dashjr wrote back. \u201cThe community could move the UASF sooner if it&#8217;s clear someone is stalling it.\u201d<\/p>\n<h2>PRs 1020 and 1021<\/h2>\n<p>To make BIP 8 functional, it would have to be modified. This implies changes in the signaling mechanism and these are the code PRs that aim to do so:<\/p>\n<ul>\n<li>1020: Would make miner signaling unnecessary after the LOCKED_IN phase, as by this phase the soft fork is already definitely going to be activated.<\/li>\n<li>1021: Allow some MUST_SIGNAL blocks to not signal.<\/li>\n<\/ul>\n<p>1020 had obtained acknowledgement in the February 2 meeting, and 1021 was initially considered unnecessary.<\/p>\n<p>\u201cOk, so 1021 is only relevant when miners have NOT activated the fork,\u201d Dashjr wrote. \u201c1021 is in the UASF scenario ONLY\u2026 it allows up to 5% of blocks to be missing the required signal\u2026 IMO this is pointless and just increases complexity.\u201d<\/p>\n<p>But later on in the exchange, Blockstream researcher <a href=\"https:\/\/twitter.com\/n1ckler\" target=\"_blank\" rel=\"noopener\">Nick Jonas<\/a> pointed out 1021 could be necessary.<\/p>\n<p>\u201cRe #1021, if you decide run bip8(true) with most nodes still running bip8(false) you really wouldn&#8217;t run code that doesn&#8217;t implement #1021 because you might end up on the wrong chain otherwise,\u201d Jonas wrote.<\/p>\n<p>\u201cNick has a strong point,\u201d Dashjr responded, later on in the IRC. \u201cWithout 1021, you could run LOT=true and fail to follow the Taproot-activated chain!\u201d<\/p>\n<p>In another exchange relevant to these PRs, Towns noted how these PRs could be relevant for the potential of bad actors.<\/p>\n<p>\u201c(1) the argument here is that during a UASF, requiring signalling creates a risk of chain splits &#8212; if a block doesn&#8217;t signal, a non-UASF miner will build upon that, but everyone knows both blocks will be rejected, so that&#8217;s an opportunity for attackers to double spend. accepting as many non-signalling blocks as possible (ie, up to 5%) limits that attack,\u201d Towns wrote. \u201c(2) the other consideration is if you start with a longer timeout (timeout=2 years, lockinontimeout=true\/false) and then want to speed up the activation, because everyone&#8217;s upgraded, markets say they want it, and there&#8217;s 6% of miners who are trying to convince everyone bitcoin sucks and we should move to another chain, then we can set (timeout=1 year, lockinontimeout=true).\u201d<\/p>\n<p>\u201cBut these miners will create a problem once we reach 5% anyway, right?\u201d Dashjr asked.<\/p>\n<p>\u201c\u2018Create a problem once we reach 5%\u2019 &#8212; yes,\u201d Towns responded, \u201cif there&#8217;s &gt;threshold miners they can create a problem; if there&#8217;s only 2% or so, this avoids there being a problem if we do the shorter timeout with lockinontimeout=true, then if we hit the timeout, and get 98% of blocks signalling but not 100%, this ensures everyone remains in consensus, and even if it&#8217;s the 98% chain that continues with the longest weight, the people who did the bip148-style speedy UASF don&#8217;t have to downgrade their software.\u201d<\/p>\n<p>\u201cGiven 1021 is the UASF scenario only does it need to be merged until an unlikely point where it is needed?\u201d Folkson asked.<\/p>\n<p>\u201cYes, it&#8217;s only meaningful if \u2018old\u2019 nodes run this code,\u201d user ghost43 answered.<\/p>\n<p>In the end, both PRs were merged.<\/p>\n<p>In Summary<\/p>\n<p>BIP 8 (which is a variant of BIP 9) appears to be the most serious activation mechanism at the moment. But there is controversy over whether the activation should be firm, even if it represents the risk of a UASF, denying a veto power to the miners; do it safely with the probability of delaying activation in case of insufficient signaling; or set false as default and if necessary, activate true. The supporters of the first option think that miners should not have to be able to disrupt a community process, while supporters of the second option think a UASF fallback is unnecessary and shows an unjustified imposition since miners have shown acceptance of Taproot.<\/p>\n<p>PR 1021 is a safer general bugfix of BIP 8, since it prevents a chain split in some cases where more than 95 percent but less than 100 percent of all hash power supports the soft fork.&nbsp;<\/p>\n<p>The next Taproot activation meeting (Tuesday, February 16 at 19:00 UTC) is set to be focused on code review, which will be followed by another meeting to discuss the parameters. As the discussion continues, Bitcoin gets closer to its most significant protocol upgrade in years.<\/p>\n<p><em>This is a guest post by Solairis. Opinions expressed are entirely their own and do not necessarily reflect those of BTC Inc or <\/em>Bitcoin Magazine<em>.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In a recent meeting via IRC, the Bitcoin development community discussed and debated methods for activating Taproot.<\/p>\n","protected":false},"author":3355,"featured_media":15987,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[337,1140,1075],"class_list":{"0":"post-17683","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-technical","8":"tag-development","9":"tag-luke-dashjr","10":"tag-taproot"},"author_data":{"id":3355,"name":"Solairis","nicename":"solairis","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b1cf31aa5f56d14a1ccc6a1535b6d52e61d23fd5c66614d3ad93c6bb831fe9a9?s=96&d=robohash&r=g"},"featured_image_url":"https:\/\/bitcoinmagazine.com\/wp-content\/uploads\/2024\/11\/taproot-is-coming-what-it-is.jpg","_links":{"self":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/posts\/17683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/users\/3355"}],"replies":[{"embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/comments?post=17683"}],"version-history":[{"count":0,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/posts\/17683\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/media\/15987"}],"wp:attachment":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/media?parent=17683"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/categories?post=17683"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/tags?post=17683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}