關於風險、錢包相容性、升級節奏,甚至很多Core開發者,其中有很多誤解。讓我們先重點關注軟體工程和風險分析的一些基本方面。
迴歸本原
讓我們回顧一下比特幣的一些基本的工程屬性。
比特幣交易是一種經過簽名的訊息,一種極微的實體。這種簽名是一種訊息真實性的證明。建立一個簽名——簽署一筆交易——需要訪問私鑰。
比特幣就是容納經過簽名的訊息的一種容器。
區塊大小更改產生的影響
區塊大小增加(BBSI)就是改變這個容器的大小。
BBSI:改變這個容器的大小並不會影響到簽名訊息的完整性或真實性。每個訊息的簽名程式碼不會被改變。
Segwit:改變每個訊息的簽名不會影響簽名訊息的完整性和真實性。私鑰、資金轉移的程式碼將會受到影響。
區塊大小的可預見性和保證
BBSI在一個可預見的時間裡提供了一種可預見的額外容量增加(+1MB)。
由於選擇性加入(opt-in)的性質,Segwit並不提供任何可預見的容量()增加。可能的區塊容量增加情況包括:短期內增加不多,長期內很多;幾乎不增加,永遠不增加;短期內增加很多。
錢包相容性
BBSI:容器(區塊)大小的改變與今天的錢包之間的相容性非常高。很多著名的比特幣錢包,如Copay(bitcore-lib)或安卓錢包(bitcoinj),受到區塊大小的影響幾乎為零。
再說一遍,對於很多SPV錢包而言,零錢包更改確保了能夠獲得額外的容量增加。對於很多錢包而言,“只需要升級底層程式碼”就行了。
Segwit:更改每一個訊息的簽名意味著[選擇性加入]要部署的更新有時會制定分叉。使用者和企業面臨使用現有軟體的選擇,這些軟體被證明是行之有效的,相反於與私鑰和訊息完整性有關並且引入新的核心資金轉移系統升級風險的新軟體。
因此,在現實世界,站點可以透過(a)一種節點升級來增加容量,不直接影響私鑰和資金[在同一程序記憶體空間],或者透過影響每個訊息完整性的(b)節點升級和錢包升級。
每個站點風險輪廓演算
站點面臨著一種節點升級的選擇,這種升級不會影響每一個訊息簽名的完整性和私鑰。對於大型企業,這實際上是一種用於部署錢包升級的法律規定的去風險流程,相對於一種節點升級,因為軟體更改的私鑰暴露所牽涉的不同風險輪廓。
Segwit的選擇性加入性質是一種好事。這使站點可以以每一個站點為基礎評估他們的風險。能承受更多風險的站點可以很早地升級。帶有自定義錢包庫分叉的站點,大學企業將需要更長的時間完成去風險產品升級流程。有組織地,而不是強制性採用。
整體風險輪廓演算
事實上,在軟體工程和資訊保安規範內觀察到很多迅速升級錢包(不是節點!)到Segwit的站點包含著顯著的整體(社羣範圍)風險:更多站點將大部分使用者暴露給每一個訊息完整性更改,從而導致私人金鑰/資金在很短的時間內處於風險之中。
例如:80%的新交易生成器(錢包)在1-3個月的時間框架內升級訊息簽名程式碼,這對比特幣來說將是一種全系統的風險,相對於一種類似時間框架內的節點升級。
此外,實際上,鑑於選擇性加入性質和不同的風險輪廓,由Segwit單獨增加的區塊容量也許會很低——至少在最初階段如此——因為這是透過選擇性加入進行升級的。企業技術長(CTOs)和社羣必須為Segwit採用率低做好最壞的打算,因此,也要為容量增加不明顯做好準備。務實的CTOs會計劃各種路線:Segwit採用率低,Segwit採用率高,Segwit採用率不高不低。
讓我們用一個具體的例子來說明這一切。
案例研究:比特幣交易所
案例研究是有用的,因為我們可以提供現實的資料,而不只是理論。
案例研究會超出了使用者理論上會做的事情的範圍,到他們承諾的時間,資金和其他資源。
我們首先從一家中國比特幣交易所入手。為了避免洩露敏感資料,採用了閉環架構:P2P節點執行在一種不太安全的DMZ區域。核心的交易所金庫管理軟體,包括比特幣熱錢包,執行在一種更安全的區域。這個錢包基於一種bitcoinj庫的定製分叉。
在區塊大小增加時,這個交易所必須:
- 執行風險和法律責任複查
- 在硬分叉之前升級自己的P2P節點
這就是說,那個核心交易所繫統並未被觸及。他們定製的錢包在大小增加時照樣能夠執行良好。
為了使他們系統實現Segwit支援,這個交易所必須:
- 執行級別更高的風險和法律責任審查,因為這改變了資金除了和私鑰管理軟體。
- 升級P2P節點
- 等待上游開源bitcoinj庫支援Segwit
- 等待上游開源bitcoinj庫釋出產品
- 整合bitcoinj Segwit升級到交易所的定製bitcoinj分叉
- 執行一個核心資金處理和私鑰管理系統的完整產品釋出測試周期。
- 開發運營推動對實時系統的改變。
風險輪廓中並沒有對比。按照正常的科學標準,這個中國交易所的Segwit升級具有明顯更高的風險輪廓:
- 交易簽名程式碼被更改
- 資金處理程式碼受到影響
- 私鑰管理程式碼受到影響
- 核心財務系統進行了更新
- 軟體更新的數量更多
- 更多的被更改的程式碼需要審計
- 更高的法律風險
交易所進行升級的動機是明確的:節點升級將增加網路容量,相對而言錢包升級則增加了工程/時間/風險成本。
理想情況下
在理想情況下,Segwit將會在一種側鏈或競爭幣(萊特幣!)上進行6-12個月的現實資金測試,然後在比特幣網路上推出。但是我們現在就要實施Segwit了;BIP 91已經啟用——正在向前發展。
結論
這就是為什麼——我個人看法——Segwit2x對於社羣來說是最好的的擴容路線:Segwit2x為比特幣增加了一個很好的長期基礎——Segwit——但是對於一種選擇性加入(包括訊息完整性更改)的採用速度,我們應該保持務實的態度。
更改訊息容器(區塊)大小具有更低的風險輪廓並且以一種不要求他們升級核心財務系統的方式提供可證明的容量增加。
基礎區塊大小增加為使用者提供瞭如今所需要的東西,Segwit為明天打下了基礎。
作者:Jeff Garzik
編譯:Kyle
稿源(譯):