區(qū)塊鏈的政策規(guī)則和共識規(guī)則以及軟分叉藝術(shù)介紹
軟分叉是修正和引入新的比特幣共識規(guī)則的主要方式。
共識規(guī)則和軟分叉
共識規(guī)則決定著每個交易或每個區(qū)塊的有效性。比特幣網(wǎng)絡上的每個用戶和礦工都遵守著同一套共識規(guī)則,代表著他們都愿意接受和同意一個賬本。
當大多數(shù)用戶和/或礦工決定采用更嚴格的共識規(guī)則時,軟分叉就可能出現(xiàn),這使一些以前有效的交易/區(qū)塊將變?yōu)闊o效,而不是相反。如果大多數(shù)人執(zhí)行新的規(guī)則的話,其他任何違規(guī)分叉(統(tǒng)計上)都不會在工作量證明方面趕上新的更嚴格的共識分叉。遵守舊規(guī)則的少數(shù)人將始終遵循更長,更嚴格的分叉,使得網(wǎng)絡上的每個人都會最終接受和同意一個賬本。
政策規(guī)則和共識規(guī)則
雖然共識規(guī)則是確定交易有效性的唯一標準,但是傳播節(jié)點或挖礦節(jié)點可能偏好某種交易。例如:
作為垃圾郵件控制機制,費用非常低的或 “微產(chǎn)量”(輸出值很低)的交易將被拒絕。
一些礦工拒絕將 “鏈上DU場” 交易包括在內(nèi),這些交易被認為是垃圾郵件。
未知版本的交易被拒絕(目前只有版本 1 和 2 是 “已知的” )。
非常規(guī)的腳本(即不是 P2PKH , P2SH , v0 segwit 或其他一些情況)和未知的 NOPx 代碼(目前僅知道 OP_NOP2 和 OP_NOP3 )的交易將被拒絕。
更換費用( Replace-by-fee )和母費子付( child-pay-for-parent )也屬于政策規(guī)定,因為他們確定了哪些是礦工首選的交易。
根據(jù)定義,政策規(guī)則必須至少與共識規(guī)則一樣嚴格。很明顯,礦工們不希望在一個區(qū)塊中包含無效交易(這會導致采礦獎勵的喪失),或者將其傳播(這將被同行排斥)。
雖然政策規(guī)定可能比共識規(guī)定更嚴格,但要注意,政策規(guī)定并不決定交易的有效性。一旦交易被包含在有效的區(qū)塊中,即使它違反了一些政策規(guī)則,所有的網(wǎng)絡節(jié)點也將會接受并承認它。
同樣要注意的是政策規(guī)則是區(qū)域性的,而共識性規(guī)則是普遍性的。這意味著不同的網(wǎng)絡節(jié)點可能有不同的策略規(guī)則。只要運行相同的共識規(guī)則,他們?nèi)匀粫恢峦鈪^(qū)塊鏈賬本。
違反政策規(guī)則的交易有時被稱為“非標準交易”,我們需要將其與 “無效交易” 區(qū)分開。
政策規(guī)則和軟分叉
理想情況下,所有的礦工都應該在軟分叉激活之前升級到新的更嚴格的規(guī)則版本。在經(jīng)濟利益上,他們有強烈的動力去做這件事,因為挖掘一個無效區(qū)塊(就新規(guī)則而言)會形成重大的財務成本。但是,像比特幣這樣的去中心化系統(tǒng),礦工的行為是不能保證的。
雖然礦工們理論上應該關(guān)注所有規(guī)則變化的提案并及時采取行動,但是一旦礦工挖掘無效區(qū)塊便會導致市場中斷和普通用戶的經(jīng)濟損失。因此,任何計劃良好的軟分叉都應該考慮到這一點,并將風險降至最低。
訣竅是,軟分叉的內(nèi)容應該限制在現(xiàn)有并廣泛采用的政策規(guī)定所涵蓋的范圍內(nèi)。擁有政策規(guī)定,但不了解新的共識規(guī)則的礦工,將會自動拒絕這些交易,因此,他們絕不會將新交易規(guī)則中的交易包括在內(nèi)。這在比特幣歷史上的一些案例中有詳細闡述。
在上述圖像中,工人在一條無法使用的道路上擺放 “道路封閉” 的標示牌,該障礙物在工人放置標示牌之前已經(jīng)存在。新的交通標示牌只能防止一些 “非標準” 的行為,因此造成的影響很有限。
政策保護不是萬能的
讀至此時,讀者可能會發(fā)現(xiàn),上述的政策保護手段只會阻止未升級的礦工在軟分叉激活后主動產(chǎn)出第一個無效塊。然而,如果這個無效塊被創(chuàng)造出來,那么未經(jīng)升級的礦工會接受它,同時如果得到更多工作證明的支持,那么這個區(qū)塊鏈就會越來越長。所以這只是一種減少而不是完全消除在軟分叉激活中發(fā)生意外區(qū)塊鏈分叉的方法。如果在大量礦工正在通過不同的完整節(jié)點運行不同的政策規(guī)則的情況下,那么這個政策保護也是存在問題的。