買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > 中幣 > Info

BIP:一文詳解比特幣軟分叉激活方法的變化_ISM

Author:

Time:1900/1/1 0:00:00

作者:BitcoinOptech原地址:https://bitcoinops.org/en/topics/soft-fork-activation/軟分叉激活指的是一個比特幣全節點開始增設一個或多個共識規則的瞬間。這種轉換會在節點之間產生協調風險。所以開發者多年來花了相當多的力氣來創建和提升軟分叉激活機制,以盡可能降低出問題的概率。軟分叉使得網絡整體上可以切換到使用新的共識規則,即使不是每個節點都接受這些規則。不過,每當不同的節點使用不同的共識規則,就有某個區塊被一些接受但被另一些節點拒絕的風險,導致共識錯誤,最終可能出現資金的多重支付以及比特幣系統安全性信譽的損失。這是激活機制嘗試緩解的主要問題。歷史

新的軟分叉激活提議通常被設計成避免之前的軟分叉已經遭遇的問題,所以本節嘗試概述之前比較著名的軟分叉激活嘗試。硬編碼高度:共識層nLockTime啟用

這個已知最早的軟分叉在Bitcoin軟件0.1.6版本中實現,硬編碼在區塊高度31000處激活,實際發生時間是2009年11月22日。在大部分開發工作都是由中本聰完成時,這種硬編碼激活高度的方法至少還用在了另一個早期的軟分叉中。硬編碼時間和手動干預:BIP12OP_EVAL失敗

在中本聰離開比特幣之后,合并到比特幣的第一個軟分叉代碼是BIP12OP_EVAL。本來計劃是使用一個硬編碼時間和在支持變更的算力占比少于50%時手動干預的方法。引自BIP12:新的客戶端和礦工將解釋OP_EVAL為一個no-op,直至2012年2月1日。在此之前,支持的礦工可以將“OP_EVAL”字樣寫在自己生產的區塊里面,方便我們計算支持的算力占比。如果在2012年1月15日之前沒有超過50%的算力支持這一變更,激活將會推遲,直到有超過50%的算力支持OP_EVAL。手動干預可能是有必要的,因為OP_EVAL在激活代碼合并之后、推出之前,被發現有一個嚴重的漏洞。雖然這個bug被修復了,一些開發者擔心這個強大的新操作碼可能會有其它問題,所以人們就放棄了這次軟分叉。再次嘗試硬編碼時間以及手動干預:BIP16P2SH

人們提出了多個替代OP_EVAL的簡化提案。而BIP13/16支付給腳本哈希值獲得了大部分開發者的支持。P2SH使用了跟OP_EVAL一樣的激活機制。最初計劃的激活時間是2012年3月1日,但到了2月15開票日,在最后100個區塊中,只有不到50%的礦工表示他們會在3月之前執行BIP16規則。這導致了一個“相當長的替代鏈”,因為一些仍然在3月1日實行BIP16的礦工拒絕了來自多數礦工的區塊。第二次開票日是在幾千個區塊之后,3月15日;這一次它獲得了足夠多的支持。所以開發者在3月30放出了Bitcoin0.6.0,將激活時間設在了4月1日。硬編碼時間:BIP30拒絕復制txid

寶萊塢明星塔絲·潘努推出NFT平臺“Taapseeclub”:金色財經報道,印度寶萊塢明星塔絲·潘努宣布推出NFT平臺“Taapseeclub”,旨在為粉絲創造積極向上的“追星”環境并與觀眾建立更深入的聯系,該平臺通過NFT鑒別真正的支持者,NFT持有者將能獨家了解塔絲·潘努的生活并參加特別活動。(outlookindia)[2023/7/23 15:53:42]

P2SH的激活完成后,人們發現可能出現多個交易共用同一個txid的情況。就其自身而言,這個bug只會導致嘗試利用這個bug的用戶的資金被銷毀,但它也可以結合比特幣的默克爾樹構建中的一些奇怪的行為打破節點間的共識。第一個修復這個漏洞的軟分叉是BIP30,它簡單將使用同一個txid的后發交易標記為無效交易,如果前發交易還有沒花費的輸出的話。這個修復在開發團隊中沒有爭議,因此在包含P2SH激活參數的Bitcoin0.6.0中以硬編碼時間的方式激活。IsSuperMajority(ISM):BIP34coinbase前綴

雖然BIP30修復了txid重合導致的短期問題,比特幣開發者知道這只是權宜之計,軟件沒理由每次收到一筆新交易都要搜索帶有未花費輸出的所有交易的索引。所以第二個解決方案開始提上日程,旨在消除讓txid復制變成實用攻擊向量的弱點。這就是BIP34。對這一次更新,開發者使用了類似于BIP16P2SH的礦工投票方法,但這一次,準備好支持EIP34的礦工需要增加他們的區塊的nVersion的數值。更重要的是,開發者自動化了比特幣代碼中新規則的實行,因此他們可以在等待礦工升級期間發布支持軟分叉的軟件。這個來自BIP34的規則用一個叫做IsSUperMajority()的函數實現了。最開始它包含了一個單項的激活閾值,達到了便開始實行BIP34的新共識規則:75%規則:如果最新的1000個區塊中有75%是vision2或者更大的,就開始拒絕無效的vision2區塊在這個功能的開發期間,人們決定加入第二項激活閾值,決定性地修復使用BIP34所要解決的問題:95%規則:如果最新的1000個區塊中有950個都是vision2乃至更大的,就拒絕所有vision1區塊拒絕舊版本區塊這個規則的一個已知問題是,除非所有礦工都已經升級,每天都可能有幾個無效區塊產生。已經升級并執行ISM規則的節點會拒絕這些區塊,但更老的節點和輕客戶端不知道這個規則,所以會接受這些區塊。這會讓網絡比普通情形更加依賴于不在無效塊后面繼續挖礦的礦工。ISM以及無驗證挖礦:BIP66嚴格DER激活

美銀:美聯儲加息預期升溫,資金流出傳統風險資產:金色財經報道,美銀數據顯示,在截至2月15日當周,投資者變得更加謹慎,因為一系列數據促使許多人上調了對美聯儲加息幅度的預期。美銀全球研究周五發布的周度資金流報告顯示,科技基金出現自去年9月以來最大的資金流出,新興市場債券基金出現14周以來最大的資金流出,垃圾債券基金出現8周以來最大的資金流出。美國本月公布的就業、零售銷售和通脹數據強于預期,推高了市場對美聯儲加息幅度的預期,對于風險較高的股票和新興市場資產來說并不是個好消息。美銀分析師表示,這些數據意味著“美聯儲的使命遠未完成”。[2023/2/17 12:13:47]

在2014年9月,PieterWuille發現OpenSSL在處理不同平臺的DER編碼簽名時存在分歧。這個可以被利用來,比如說,創建一個在Linux操作系統上可以通過驗證但在windows操作系統上會失敗的區塊——攻擊者定點創造鏈分裂。Wuille和其他幾位開發者秘密開發了補丁,并致力于以軟分叉激活,保證所有簽名都使用同樣的格式。BIP66就是為這件事創建的,在公開宣傳中,是作為移除比特幣對OpenSSL依賴的一步。在BIP66獲得用戶和開發者充分多的支持之后,它使用與BIP34相同的ISM激活機制,將區塊版本號遞增為v3,并要求達到95%的閾值后就拒絕v2和更低版本號的區塊。75%的閾值在2015年7月4日達到,而95%閾值在區塊高度363725處達成,所有的節點都運行BitcoinCorev0.10.0乃至更高版本的軟件,開始實行新規則。不過,在區塊高度363731處,一個沒升級的礦工生產了一個沒包含當前版本號的區塊,在新的ISM激活規則下不是有效區塊。但其他礦工都在這個無效區塊后面繼續生產,最終產生了一條帶有6個無效區塊的鏈。這意味著未升級的節點和許多輕客戶端都會將第一個無效區塊中的96筆交易當成積累了6個區塊確認的交易,即使它們在當時還沒獲得過哪怕一個有效區塊的確認。最終,開發者只能聯系礦池運營者,讓他們手動重啟軟件并回到有效的鏈上。這樣的事件在第二天又重演了一次,使一些交易獲得了三次無效的確認。幸運的是,這六個和三個區塊中的所有常規交易,后來都打包到了有效區塊內,意味著普通用戶沒有損失。最初位于363731高度的無效區塊就是僅僅因為使用舊的版本號而變成無效的、預計每天都有可能出現的約5%區塊之一。而下一個區塊是未升級礦工挖出的概率也是5%,所以連續兩個區塊都是版本號取消區塊的概率是0.25%。給定95%的礦工都已升級,連續6個區塊都是版本號無效區塊的概率是0.000002%——但罪魁禍首還不是極端壞運氣。沒有考慮到的是礦工可能會做“無驗證挖礦”,也就是礦工在收到一個新區塊之后,不加驗證,直接在后面繼續生產,這樣可以提高一點效率。雖然無驗證挖礦軟件理論上很容易就能處理無效區塊版本號,這個功能在當時挖掘那五個區塊的礦工所用的軟件中還沒有實現。最終,足夠多的礦工升級了他們的無驗證挖礦軟件,或者升級了他們的節點,而BIP66激活相關的意外鏈分裂就此絕跡。為了應對這些導致2015年7月出現分叉的問題,開發者加倍努力減少對無驗證驗證挖礦的需求,成果如BIP152壓縮區塊的中繼以及FIBRE軟件。開發者也開始思考一種更好的激活機制,也就是后面會提到的BIP9協議。最后一次ISM:BIP65OP_CHECKLOCKTIMEVERIFY激活

英國考慮建立加密立法:金色財經報道,英國立法者于 1 月 25 日舉行了一場關于加密貨幣和監管的議會辯論,盡管立法者很快指出了當前監管中的漏洞,但對于監管的實際情況給出的細節相對較少。 在英國議會網站上發布的辯論序言中,財政大臣 Jeremy Hunt 表示,“我們致力于確保英國作為最開放,最具活力和最具競爭力的金融服務中心之一的世界地位。”

隨著英國在退出歐盟后關注自己的立法,英國金融服務部長Griffit承諾在幾周內對加密貨幣規則進行澄清和制定一份工作政策文件。[2023/1/26 11:30:08]

BIP66嚴格DER軟分叉之前,就有人提出要用軟分叉為比特幣增加一個新的操作碼OP_CHECKLOCKTIMEVERIFY,但因為修復OpenSSL漏洞而推遲了。這就體現了ISM機制使用遞增版本號的另一個弱點——一個礦工如果發出信號支持最新的提議也就隱含地表示了支持之前所有的提議。這就限制了使用ISM同時協調多個升級的能力。不過,盡管BIP66激活時出了一些問題,ISM被再一次用到了推遲的BIP65的激活中。這一次就沒有再出問題了。BIP9versionbits:BIP68/112/113相對鎖定時間激活

BIP9提出了一種新的激活機制來解決ISM的幾個問題:沒必要地懲罰礦工:ISM激活會導致區塊版本號遞增,沒有遞增版本號的礦工所生產的區塊就會被當成無效的,即使這個區塊并沒有違反軟分叉的其它規則。舉個例子,在2015年7月4日的鏈分裂中,所有的交易都遵守軟分叉規則——這些礦工損失50萬美元的唯一理由就是升級要求區塊頭里應該包含一個3而沒升級的礦工使用了2。很難并行化:使用ISM,即使開發者認為有必要,也必須等待一個分叉結束,另一個分叉才能開始收集信號。不允許失敗:ISM不設過期時間。等待激活信號的節點軟件一旦放出,運行了新軟件的節點就會一直監控信號,直到激活完成。沒有辦法確定人們是不是完全不需要這個軟分叉。不可預期的激活時間:無法提前知道確切的激活時間,意味著協議開發者、商戶系統管理員以及礦池運營者,都很難在激活之后短時間內立即投入使用,即使出現了需要快速反應的問題。BIP9versionbits嘗試解決這些問題。它將區塊頭內的vision字段用作bit字段。這個字段里面的數據只用來表示信號——不會被當成無效區塊的依據——并且可以并行地設置。測量每2016個區塊運行一次,以壓縮某一小部分算力足夠幸運便能冒充95%支持的可能性。最后,當達到了95%的信號門檻,激活之前會有額外的2016個區塊的“鎖定期”,以便各方準備升級。如果過期時間之前未能達到激活的門檻,整個軟分叉的嘗試就結束,沒有用上的代碼可以在后來的軟件版本中刪除。這個激活方法第一次使用是在BIP68共識強制的序列號、BIP112OP_CHECKSEQUENCEVERIFY以及BIP113中位時間定義的nLockTime的軟分叉中。這個分叉很快進入了鎖定階段,然后自動進入了激活階段。BIP9、BIP148以及BIP91:BIP141/143隔離見證激活

安全團隊:NFT系列Brainless Spikes的Discord服務器被攻擊:金色財經報道,據CertiK監測顯示,NFT系列Brainless Spikes的Discord服務器已被攻擊,提醒用戶在修復之前不要點擊任何發布的鏈接。[2022/12/1 21:14:59]

隔離見證軟分叉是用BIP9激活參數發布的。少數礦工很快地表示了支持,但支持率遠低于95%的門檻。一些比特幣用戶認為礦工是在不合理地拖延一個有用的新特性,所以開發出了自愿的激活措施,就是BIP148。BIP148的最終形式指定,從某個日期開始,拒絕一切不支持segwit的區塊,實現BIP148的軟件出現后,網絡中就有了三類節點——不升級的節點,BIP9/141節點,以及BIP148/141節點——陷入共識錯誤的幾率更大了。如果礦工沒有支持隔離見證,而大部分用戶都繼續把這些區塊當成有效的,BIP148的用戶可能就會收到在其他用戶看來無效的比特幣。此外,如果大部分用戶都支持BIP148,但礦工繼續生產許多在BIP148看來無效的區塊,那些不實行BIP148的用戶就會接受BIP148用戶認為無效的比特幣。只有用戶都遵守同樣的規則,且大部分算力都支持BIP148規則,升級才是安全的。一種降低風險的辦法是,給出足夠的時間,讓用戶可以升級到強制激活隔離見證的節點,但BIP148無法做到這一點,因為它的目標是觸發現有的BIP9流程,也就意味著,它要在BIP9到期日很久以前就強迫礦工發信號表示支持。作為BIP148可能不得人心的替代方案,BIP149提議給用戶多一年的時間來升級。BIP149從未獲得足夠多的公開支持,但它是第一個使用BIP8的提案,而BIP8在未來幾年里引發了更多的討論。在BIP148開始獲得重大的公開支持時,多個礦工、交易所和業界人士表示支持一個兩步驟的提議,在激活隔離見證的同時會與支持BIP148的節點保持共識。第一個步驟寫在BIP91中,它改進了BIP9的規則。礦工可以使用BIP9的位字段來表示他們是否會實行一個暫時的規則:拒絕一切不發信號支持BIP141/143隔離見證的區塊。與BIP9不同,BIP91的閾值從95%降到了80%,而其監控和鎖定期的長度從2016個區塊降低到了336個區塊。BIP91鎖定并且激活了。隨后,BIP141/143鎖定并激活。在它們鎖定時,BIP148的強制支持措施過期。這個來自礦工、交易所和業界人士的提議的第二個階段需要一個硬分叉,在遭到大量個人用戶和企業的激烈反對之后,提案的簽名人撤回了這個提議。至今,人們仍然在爭論,這些事件以及同期發生的其他事件,到底為隔離見證激活造成了多大的影響。緊急激活

螞蟻集團數字科技AIoT石易:區塊鏈+IoT構建源頭可信的物理世界鏈接:金色財經報道,6月23日,鏈上新能源在線研討會舉辦。螞蟻集團數字科技AIoT石易指出,螞蟻鏈沉淀多項可信科技的技術優勢,包括端云結合可信上鏈、跨多平臺數據隱私、分布式身份管理、實物資產數字化。在技術和產品的進展上,螞蟻鏈與客戶一同拓展螞蟻鏈可信IoT應用場景,當前我們在新能源行業已經管理了500w+設備,日平均上鏈量2000w+。實踐案例包括:與奇瑞商用車初探車規級SDK錨定技術,實現車輛數據源頭可信,助力完善車輛全生命周期管理,促進產業上下游高頻協同;通過在無錫英臻科技自主研發的分布式新能源數據采集設備中嵌入深度優化的可信上鏈模組AntChainMaas,將分布式新能源場景中的核心通訊節點逆變器上鏈;螞蟻鏈為哈啰助力車植入深度優化區塊鏈模塊,行車數據、電池加密上鏈,為金融機構提供可靠的風控評估依據。在這其中,區塊鏈+IoT構建了源頭可信的物理世界鏈接,未來螞蟻鏈將持續構建全棧可信的數字技術,共建實體經濟可信高效協作底座。[2022/6/23 1:26:32]

不止一次,人們在共識代碼中發現了嚴重的漏洞,開發者沒有經過激活的流程就放出了補丁。這樣做可能導致共識失敗,但也為升級的節點立即消除了漏洞。重大的事件包括:使用chainwork來替換高度:比特幣一開始認定最多區塊的鏈為有效的鏈。如果每個區塊都有同樣的難度,那這樣的最長鏈同時也會是積累了最多工作量證明的鏈。但是不同的區塊有不一樣的難度,所以chainwork軟分叉在Bitcoin0.3.3中放出,將累積最多工作量證明的鏈視為有效鏈。消除繞過腳本的bug:比特幣一開始將花費UTXO的腳本和保護UTXO的腳本結合起來、同時求值。這種設計使得人們可以在鎖定機制計算之前就終止腳本,以成功狀態退出,例如,在運行OP_CHECKSIG以檢查簽名之前就終止腳本。這個bug最初被報告為使用OP_TRUEOP_RETURN的scriptSig可以花費任何人的比特幣。這個漏洞在Bitcoin0.3.6中第一次修復,辦法是讓OP_RETURN必定以失敗收場,而且為腳本的其它顯示安排了數字。雖然所有這些變更都是軟分叉,但相同代碼的修改也會造成硬分叉式的更改。即使是這么重大的變更,scriptSig可以篡改scriptPubKeys運行的底層問題仍然存在,所以第二次軟分叉在Bitcoin0.3.8中實現,它讓兩者獨立執行。修復溢出漏洞:某人創建了一筆交易來花費0.5btc并創建了兩個價值92,233,720,368.54277039BTC的輸出。比特幣的確要求輸出的數值不能大于輸入的數值,但檢測方法是把輸出的數值加入到一個最多能表示9,223,372,036,854,776聰的64位整數中,這個整數溢出后就會從-9,223,372,036,854,776聰開始。這就意味著,這個交易似乎只花費了總計-0.1btc。這還繞過了另一條規則,就是禁止單個為負的輸出,但是不禁止總計為負的數值——因為它假設了任何正值的總和都仍會是正的。這使得某人創造出了1840億btc,而且這樣的把戲可以不斷重復,沒有任何代價,產生無數的比特幣。幾個小時內,Bitcoin0.3.10放出了一個軟分叉補丁,限制輸出為2100萬btc。它還要求放棄帶有溢出交易的鏈——這是有意制造的共識失敗,但為了比特幣仍然有意義就必須這么做。臨時修復BDB鎖定問題:2012年初,比特幣開發者意識到,如果同時對UTXO數據庫做太多更改,可能會超出鏈狀態數據的默認容量限制之一。因為當時的比特幣區塊比較小,只有在區塊鏈重組、需要同時處理來自多個區塊的交易時才會觀察到這個情形。當時人們實現了一個簡單的解決方案:在重組期間,一次只處理來自一個區塊的交易。后來,一些人開始請求礦工把可選的默認區塊大小從250KB提高。在2013年3月12日,某個礦工生產了一個約1MB的區塊,包含了超過1700筆交易——也是截至當時最大的比特幣區塊——在許多節點上都超過了數據庫的容量,導致它們認為這個區塊時無效的,即使它完全符合比特幣的明示的共識規則。把水攪得更渾的是,一個新版BitcoinCore已經發布,它用上了不一樣的數據庫引擎,沒有這種限制,因此也能安然地接收這個更大的區塊——所以不同版本的節點之間出現了共識錯誤。在快速分析了情況之后,開發者鼓勵用戶暫時降級到舊版本,然后更新到一個緊急版本,以軟分叉暫時將區塊大小的上限降到500KB,好留出時間讓每個用戶都能升級新的數據庫引擎,而這種暫時的下調會在幾個月之后自動過期。未來的激活

Segwit激活幾個月出現問題之后,一些人開始考慮BIP8。BIP8的支持者們認為它能解決BIP9的一些問題:允許強制激活:BIP8是BIP148的一般化,礦工可以在等待激活的時間段里自愿發信號表示支持,但它還設了一個最后通牒時間段,礦工在這段時間里必須發信號表示支持,否則所生產的區塊就有可能變作無效的。后來,人們設計了一個參數LockinOnTimeout來觸發這種動作:使用LOT=true的節點,會要求礦工在激活即將超時的最后一段時間里發出信號;使用LOT=false的節點,不會這么要求,但如果有足夠多的區塊帶有信號,仍然會實行新規則。使用高度而非時間:BIP9開始和停止監控激活信號的時間都基于礦工寫入區塊的時間的平均值。所以礦工是有可能操控這個時間的,這會阻礙LOT=true的功能,所以BIP8提議使用區塊高度而非時間。BIP8的靈活性使其成為了taproot軟分叉的多種候選激活提案之一,雖然批評者也批評了它的某些方面,比如某些設置允許礦工拒絕激活得到廣泛社區支持的提議、鼓勵一個團體“俘虜”另一個團體所用的信號機制、要求礦工對所生產的區塊作沒有實質意義的更改、看起來給了開發者凌駕于共識規則的權威以及提高了共識失敗的風險。截至本文撰寫之時,taproot激活方法的討論仍在進行。其它想法也一直在討論,包括“概率性的軟分叉激活”、“多階段軟分叉激活”、“閾值遞減型激活”、“返回硬編碼高度或時間的激活”,以及“激活推遲后使用更短信號期的方法”。主要的代碼和文檔

BIP9BIP8Optech新聞和網站相關部分

又見

BIP激活高度、時間和閾值Taproot

Tags:BIP比特幣BITISMArbiPad炒比特幣和萊特幣的軟件bitJobETNA Metabolism

中幣
ETH:以太坊通縮后閃崩,燃燒的EIP -1559_GAS

昨天,加密市場經歷了一次嚴重的杠桿清算。根據Skew數據,交易所報告的清算金額超過21億美元,實際數字可能更高。BTC和ETH價格在過去24小時內下降了超20%.

1900/1/1 0:00:00
ITA:雙周融資速遞 | 交易所、鏈游賽道熱度攀升;a16z頻繁出手(9.27-10.10)_TAL

經Odaily星球日報不完全統計,9月27日-10月10日,海內外區塊鏈融資事件共74起,已披露融資總額約為8.324億美元.

1900/1/1 0:00:00
加密貨幣:【Deribit期權市場播報】0921——閃崩_VOL

播報數據由Greeks.liveDataLab格致數據實驗室和Deribit官網提供。受外圍因素影響,主流幣全面下跌,目前的閃崩已經全面跌破趨勢線.

1900/1/1 0:00:00
NFT:Foresight Ventures合伙人WhiteForest:NFT的價值探討和未來發展方向_FORT

9月28日,Conflux聯合Odaily星球日報舉辦線下活動《當Thinker遇上Artist》,希望以此活動連接藝術家市場與主流市場,共同探尋藝術與創新的結合.

1900/1/1 0:00:00
SOLA:一文說透高性能、低費用,不走尋常路的底層公鏈——Solana_solana幣的最新價格

8月16日,CoinMarketCap數據顯示,Solana的市值突破160億美元,成功躋身加密貨幣項目市值前十名,而在隨后的9月9日,Solana鎖倉量突破75億美元,創下歷史新高.

1900/1/1 0:00:00
ZERO:【Deribit期權市場播報】0919——本周期權總結_以太坊交易所清算

播報數據由Greeks.liveDataLab格致數據實驗室和Deribit官網提供。主流幣本周前半段拉升均超過10%,后半段進入橫盤。整體價格走勢雖上升,但是IV反而是持續大幅下降.

1900/1/1 0:00:00
ads