致敬BTC從誕生以來的3次偉大的革命技術迭代:
2009年:BTC誕生,首次以區塊鏈的結構打通了去中心化的貨幣應用。
2017年:BTC隔離見證升級,支援了最大4MB的存儲,解決了BTC的鏈上存儲問題。這也為現在的爆火的Ordinals協議(發行資產)提供了依據。
2021年:BTC Taproot升級,支援了BTC門限簽章演算法,這給了完全去中心的BTC Layer2技術底層支援。
一,為什麼要做BTC Layer2?
1.有需求:Bitcoin網路滿足了資產登記的需求,但仍有大量的資產需要進行鏈上結算(Layer2)
目前ETH的Layer2都只是ETH Layer1的Copy,沒有解決什麼Layer1解決不了,非得Layer2去解決的實際業務問題。
非得說ETH Layer2解決了ETH Layer1的問題是:Layer2解決了Layer1 Gas費用貴的問題。也因為這項需求,成就了ETH第一大Layer2 Arbitrum上的衍生性商品應用,如GMX。
而BTC的Layer2不像ETH Layer2一樣無關緊要。
因為BTC非圖靈完備的鏈上虛擬機器只能為資產做登記,而不能做結算,所以BTC Layer1必須需要圖靈完備的BTC Layer2來做BTC Layer1發行的資產的結算問題。
2.有能力:BTC能夠做成完全去中心化的Layer2
在2021年BTC Taproot升級前,能夠做到完全去中心化的BTC Layer2是不可能的。但這次升級後,BTC閘限簽章演算法可以讓BTC支援完全去中心化的Layer2計算層。
二,如何實現去中心化的BTC L2?
比特幣改進提案(BIPs)是為比特幣引入新功能和資訊的設計文檔,而taproot升級則是三個BIPs的彙編,這三個BIPs分別是Schnorr簽名(BIP 340)、Taproot(BIP 341)和Tapscript(BIP 342),這三個升級統稱為BIP Taproot。
它將為比特幣帶來更有效率、更靈活、更私密的傳輸方式,其核心在於使用了Schnorr簽章和Merkel抽象語法樹。
Schnorr簽名是一種以其簡單性和安全性而聞名的數位簽章方案。 Schnoor簽章在運算效率、儲存和隱私方面具有多項優勢。
圖1:Schnorr聚合簽章的互動流程
使用者透過公鑰確認簽署者身份,透過資料確認契約內容,從而來認證數位契約的有效性。
Schnorr聚合簽章可以將多個簽章資料壓縮合併成單一聚合簽章。
驗證者透過所有簽署的相關資料和公鑰組成的清單對單一聚合簽章進行驗證,若驗證通過,其效果等同於對所有相關簽章進行獨立驗證且全部通過。
圖2:ECDSA多簽演算法
目前大多數區塊鏈都是採用ECDSA多簽演算法,針對區塊數據,每個節點用自身私鑰產生獨立的數位簽名,並廣播給其他節點。其他節點會驗證該簽名,並將其寫入下一區塊資料中。
使用這種方式,當共識節點數較多時,會導致每輪共識區塊儲存的簽章資料不斷增加,佔用儲存空間。
每當新節點加入網絡,需要同步歷史區塊時,大量簽章資料會對網路頻寬造成很大的挑戰。
使用聚合簽章技術後,每個節點會收集其他節點廣播的聚合簽章名片,然後將簽章分片聚合保存,如圖2.
這樣,當新節點加入時,同步歷史區塊只需下載聚合後的簽章數據,大大減少對網路頻寬的佔用,同時減少交易費用的支出。
此外,金鑰聚合也讓所有的Taproot輸出看起來類似。無論是多重簽章輸出、單簽章輸出或其他複雜智能合約在區塊鏈上看起來都長得一樣,所以許多區塊鏈分析將不可用,從而為所有Taproot用戶保留隱私。
圖3:MAST結構圖
MAST(Merkle Abstract Syntax Tree)是使用默克爾樹來加密複雜的鎖定腳本,其葉子是一系列相互不重疊的腳本(例如,多重簽名或時間鎖)。
支出時,只需揭露相關腳本以及從該腳本通往默克樹根的路徑。如圖3,要使用script1,只要揭露script1、script2以及hash3即可。
MAST的主要優點包括:
1.支援複雜的支出條件
2.不用揭露未執行的腳本或未觸發的支出條件,提供更好的隱私保護
3.壓縮交易大小:隨著腳本數量的增加,非MAST交易大小是線性成長,而MAST交易大小是對數成長。
然而,在Taproot升級中有一個問題,那就是P2SH與常見的支付到公鑰的哈希(Pay-to-Public-Key-Hash,P2PKH)在表現上不一樣,仍然有隱私保護問題。
有沒有可能讓P2SH和P2PKH在鏈上看起來一樣?
為此,Taproot提出了一套解決方案,對於有限數量簽署者的腳本,可以分解成兩個部分:
第一部分是多重簽名,所有簽名者都同意某一支出結果,稱為「協作支出」。
第二部分稱為「非協作式支出」,可以有非常複雜的腳本結構。
這兩部分是「或」的關係。
如圖3,Script3是一個2-of-2型多重簽名,需要Alice和Bob兩人都簽名才有效,是「協作式支出」,Script1和2是「非協作式支出」。
「協作式支出」和「非協作式支出」,都能夠花費這筆輸出,其中:
1.對「非協作式支出」腳本,採取上述MAST的方式,用MerkleRoot表示默克樹根。
2.對「協作式支出」腳本,採取基於Schnoor簽章的多重簽章演算法。用Pa和Pb分別表示Alice和Bob的公鑰,用Da和Db分別表示Alice和Bob的私鑰。
因此,聚合公鑰是P=Pa+Pb,對應的私鑰是Da+Db。
3.將「協作式支出」與「非協作式支出」合在一起表示成P2PKH形式,其公鑰為:PP+H(P||MerkleRoot)G;對應的私鑰是Da+Db+H( P||MerkleRoot)。
4.當Alice 和Bob 同意“協作式支出”,他們用Da+Db+H(P||MerkleRoot)只需他們中的一個人在自己的私鑰上加上H(P||MerkleRoot)即可。
在鏈上,這表現得如同 P2PKH 交易一樣,有一個公鑰和對應的私鑰,而不需要透露底層的 MAST。
三. 我們的完全去中心化的BTC layer2 方案:
3.1 BTC輕節點+分散式閘限簽名合約
圖4:BEVM (BTC EVM layer2)實作框架
在本方案中,選取n個(n可以取值為BEVM上所有的驗證人)固定的驗證人完成分散式閘限簽章的BTC鏈上聚合託管合約。
BEVM layer2中的每個驗證人的出塊私鑰同時衍生出BTC 的門限簽章的聚合私鑰的一部分, n個驗證人的門限私鑰組合成 BTC的聚合簽章合照地址。 n的最大取值範圍可以到 1000 甚至更多。
1)當使用者A 想將 BTC 跨鏈到 BEVM,只需要使用者向 Bitcoin 聚合託管合約發送 BTC,使用者就能在 BEVM layer2 上收到 BTC。
2)相應地,用戶A 進行提現操作時,只需要n個驗證節點中組成聚合簽名中的m個自動完成分佈式門限簽名合約互操作,就能在Bitcoin 上完成從託管合約到用戶A 的轉賬,轉帳完成的同時,會在BEVM上進行BTC 的銷毀。
3.2實作BTC 作為原生Gas費用且相容EVM 的 Layer2
1.EVM原理
以太坊虛擬機器是以太坊智慧合約的執行環境。它不僅是沙盒封裝的,而且實際上是完全隔離的。
這意味著在EVM中運行的程式碼無法存取網路、檔案系統和其他進程。甚至智能合約之間的存取也是受限的。
以太坊底層透過EVM模組支援合約的執行與調用,調用時根據合約地址獲取到合約程式碼,載入到EVM中運行。通常智慧合約的開發流程是用solidlity寫邏輯程式碼,再透過編譯器編譯成字節碼,最後再發佈到以太坊上。
2.EVM主要部分
3.EVM Code
EVM代碼是以太坊虛擬機器代碼, 指以太坊可以包含的程式語言的代碼。與帳戶相關聯的EVM代碼在每次訊息被發送到這個帳戶的時候被執行,並且具有讀取/寫入儲存和自身發送訊息的能力。
4.Mchine State
Mchine State是執行evm程式碼的地方,包含程式計數器、堆疊和記憶體。
5.Storage
Storage是一個可讀、可寫入、可修改的持久性儲存的空間,也是每個合約持久化儲存資料的地方。 Storage是一個巨大的map,總共有2256個插槽,每個插糟有32byte。
6.以BTC作為Gas費用
讓從Bitcoin網路轉過來的 BTC 作為EVM的上交易執行的 Gas費用計算貨幣。