北京時間2月3日,Bitcoin SV 即將在24小時內進行「創世紀」升級。
在 2018 年 11 月份的 Coin Geek 大會上,Craig Wright 第一次提出了 Metanet 概念,這是一條看似是網際網路,但實際透過區塊鏈交易儲存方式來訪問網路資料,來用他的話來說網際網路是比特幣的一條側鏈。
Metanet 雖然還沒有真正完善,但 Bitcoin SV 上的應用已經有了 Metanet 的雛形,鏈上 Twitter、鏈上微博、鏈上 58 同城等等應用已經在小規模的使用。資料顯示,2019 年Bitcoin SV 上已經有超過 300 個類似這樣的日常網際網路應用。
根據官方宣告,此次「創世紀」升級後區塊容量將沒有限制,礦工可以自定義區塊大小。
目前在有限的區塊大小中,不足以容納大規模微交易,例如明星社媒下動則上萬的點贊評論中產生的微交易規模之大,只有擴大區塊容量才能在不違反協議下安全地進行。
可以說,Bitcoin SV 目前的目標是要做出一條 Metanet,一條能夠基於區塊鏈交易儲存資料的網際網路,這條網路上不僅會有 to C 的網際網路應用,還會有 to B 的企業應用,可能會有成千上萬筆交易同時發生。
如果要滿足大規模交易,就需要擴容,而唯一能保證不改變比特幣協議的擴容方法,就是增大區塊。
而同時對於礦工來說,按照比特幣的經濟模型,區塊獎勵越來越少,為了能讓這個經濟系統繼續穩定,礦工們必須要增加交易手續費的交易,最有效的辦法,就是擴大區塊容量讓區塊可打包大規模交易。這樣才能保證 Bitcoin SV 同時是一個長久有效的資料網路,也是一個穩定的經濟系統。
附Bitcoin SV 「創世紀」升級詳細內容:
重點變更
必要共識引數
必要共識引數必須由系統管理員進行配置。 當未配置引數時,軟體無法正常啟動。 如需瞭解必要共識引數的更多資訊,請訪問此連結。
區塊體積硬頂
區塊體積硬頂引數定義了軟體允許進行交易驗證的最大區塊體積。對於體積大於該引數的區塊,軟體將不進行檢索及驗證。
指令碼運算允許使用的最大棧記憶體
本必要共識引數定義了指令碼在運算時允許使用的最大棧記憶體。如果指令碼嘗試使用超過引數定義值的記憶體量,將中止指令碼的執行,導致指令碼失敗。
共識變更
恢復 OP_RETURN 的功能
將OP_RETURN的功能恢復到其最初的設計,從而使開發人員能夠輕鬆地提前中止指令碼執行,同時還可得到有效的返回值。
用 BigNumber 替代 32 位操作碼
將大大提高比特幣指令碼語言的數學能力。 32位的容量十分有限,在執行復雜的數學運算(例如簽名驗證)時,會很棘手且效率不高。此項更改將恢復最初的設計,提升複雜運算的效率,並啟用提供各種高階功能的複雜指令碼。
在新交易中廢止使用P2SH
Pay-to-script-hash(或P2SH)是比特幣引入的一種新機制,用於在建立輸出指令碼時隱藏行蹤。這與比特幣誠實記錄的哲學背道而馳。此外,P2SH鼓勵了不良的隱秘活動在其上大肆交易,並且與比特幣至關重要的點對點主張相背離。現有P2SH地址上的比特幣將不受影響,因此不需要整理舊錢包。這項變更是為了阻止進行新的P2SH輸出。
恢復nLockTime 和 nSequence 的最初用法
這兩個欄位是支付通道機制中不可或缺的一部分,中本聰將它們設計為用於進行高速微支付的基本機制。但是後來BTC Core開發人員將它們重新定義為兩個新的操作碼。除了要刪除這些操作碼,還要恢復nLockTime和nSequence的最初用法。
其它必需的變更
點對點傳播非標交易
將允許任何人都可以使用複雜交易。在創世紀升級之前,只有標準交易(如支付交易或普通資料交易)才會被點對點傳播,並傳至礦工。這意味著,如果你想使用複雜的交易,你必須先與一個礦工達成協議,要求礦工進行確認並打包。在創世紀升級之後,所有交易型別都可進行點對點傳播,這樣任何人都可以使用複雜交易。
補充共識變更
- 創世紀升級的區塊高度啟用機制
- UTXO 繼承依賴規則
- 正式指令碼語法
- scriptSig中只能包含OP_PUSHDATA操作
- 在新交易中廢止使用OP_CHECKLOCKTIMEVERIFY和OP_CHECKSEQUENCEVERIFY
- 新增max_script_memory_usage的策略限制,預設值為100MB
- 新增max_script_memory_usage的共識限制,預設值為無限大
- 取消對每MB塊空間的簽名數的共識上限
- 取消對每筆交易的簽名數的共識上限
- 取消對每個指令碼的操作碼數量的共識上限
- 取消對每個指令碼物件體積的共識上限
- 取消對指令碼中物件數量的共識上限
- 取消對每個multisig公鑰數量的共識上限
- 將交易體積的共識上限提高到1 GB
效能改善
- 並行區塊驗證
- 單獨處理低優先順序佇列中的非標交易
- 為標準交易和非標交易設定評估超時策略的指令碼
- Inv資訊中包含按驗證次序排序的tx
- 並行區塊驗證的增強測試
- 常見的創世紀啟用程式碼與命令列選項
- 在創世紀升級之後,在主網上啟用對非標準交易的驗證
- 將記憶體池的預設值設為1GB
- 刪除User Agent中的區塊大小欄位
- 更改預設交易費(預設打包費率為0.5預設允許的最低轉播費率為0.25聰/位元組)
- 更新SPV布隆過濾器,以避免重放攻擊
- 提高無序化預分配的效能
- 更改日誌訊息,使其內容更加精準
- 修復:驗證非標準事務時,可能將節點鎖定超過一分鐘
- 修復:在驗證交易時,使用“拒絕提示”和“封禁記分”功能
- 修復:區塊傳送列隊溢位
- 修復:bsv::deserialize函式中的未定義行為
- 修復:“bitcoin-cli help getblock”無法正常執行
- 修復:當檢測不到Boost引數時,應當配置失敗
- 修復:對創世紀新功能的測試,設定執行許可權位
- 修復:最近區塊中位數時間
- 修復:無輸入的非最終交易,會被錯誤拒絕
- 修復:asn1_integer的記憶體洩露
- 修復:boost::optional 函式的警告
- 修復:原始碼包中未包含py
- 修復:Fundrawtransaction RPC changePosition 引數導致訪問超出範圍
- 新增基本的 –enable-tcmalloc 選項
- 修復:CTxnDoubleSpendDetector 刪除向量末尾
- 修復:大於2GB的資料的lshift和rshift
- 為創世紀升級作準備,更新RDP
- 設定非同步驗證的最長任務時間