簡介
Bitcoin Cash(BCH)在區(qū)塊高度478,558上產(chǎn)生,一直致力于為世界帶來一種可靠的電子現(xiàn)金,履行最初的比特幣作為「點(diǎn)對點(diǎn)數(shù)字現(xiàn)金」的承諾。其具有全球無縫流通、無許可(Permissionless)創(chuàng)新等特點(diǎn)。在Bitcoin Cash如何實(shí)現(xiàn)發(fā)行通證(Token),眾多的開發(fā)者已經(jīng)有過不少的研究,比如染色幣的方案Colored-Coins,之后Andrew Stone 提出了Enable representative tokens via OP_GROUP on Bitcoin Cash,提議增加OP_GROUP的操作碼來實(shí)現(xiàn)發(fā)Token的方案。OP_GROUP方案需要修改Bitcoin Cash的共識(shí)規(guī)則才可以實(shí)現(xiàn)。更具體地說,類似于在Ethereum網(wǎng)絡(luò)上廣受歡迎的ERC20協(xié)議所具備的那些功能。
凡是需要更改共識(shí)才能實(shí)現(xiàn)的通證發(fā)行技術(shù)提議,都不可避免地會(huì)遇到問題。首先是技術(shù)上的風(fēng)險(xiǎn),其次是對這種風(fēng)險(xiǎn)的顧慮常常引發(fā)技術(shù)開發(fā)社區(qū)甚至整個(gè)經(jīng)濟(jì)生態(tài)都陷入巨大的爭議。爭議中的反對方,其顧慮很可能也確實(shí)是真實(shí)的。不論這樣的爭議中誰對誰錯(cuò),結(jié)果常常是有爭議的提議無法被實(shí)現(xiàn)。這樣的困難可以被視為一種保險(xiǎn)機(jī)制,讓具有的風(fēng)險(xiǎn)更改很難被添加到協(xié)議之中,保證協(xié)議的穩(wěn)健與安全;但是,協(xié)議的創(chuàng)新就面臨了著巨大的困難。導(dǎo)致了Bitcoin Cash社區(qū)獨(dú)立的區(qū)塊擴(kuò)容大爭論,曠日持久而沒有共識(shí)的產(chǎn)生,就是一個(gè)更加令人不能回避的社會(huì)心理學(xué)證據(jù)。
快速活躍的創(chuàng)新,需要一種無需許可的環(huán)境。我們也一直在探索無許可創(chuàng)新的方法,在不需要改變共識(shí)的情況下,在Bitcoin Cash的區(qū)塊鏈上實(shí)現(xiàn)智能合約。經(jīng)過研究,我們關(guān)注到了OmniLayer協(xié)議,它是一種利用OP_RETURN操作碼實(shí)現(xiàn)通證發(fā)行的方案。這個(gè)方案是廣受歡迎的泰達(dá)幣(USDT)日常發(fā)行和流通的技術(shù)基礎(chǔ)。Omni Layer是運(yùn)行在Bitcoin的區(qū)塊鏈之上的。Omni Layer協(xié)議采用了MIT開源許可證。我們Fork了Omni Layer的協(xié)議,在Bitcoin Cash的區(qū)塊鏈上實(shí)現(xiàn)了發(fā)行通證的技術(shù)方案。我們將這種技術(shù)方案命名為Wormhole協(xié)議,協(xié)議中的原生代幣命名為Wormhole Cash。
安全模型和執(zhí)行流程
Wormhole 節(jié)點(diǎn)
節(jié)點(diǎn)認(rèn)知
Wormhole節(jié)點(diǎn)是Bitcoin Cash 節(jié)點(diǎn)的超集,是在Bitcoin Cash客戶端上增加了Wormhole協(xié)議的實(shí)現(xiàn)。
Wormhole客戶端既可以作為一個(gè)Wormhole全節(jié)點(diǎn)使用,同時(shí)也可以作為Bitcoin Cash全節(jié)點(diǎn)使用,它實(shí)現(xiàn)了Bitcoin Cash協(xié)議與Wormhole協(xié)議。
Wormhole節(jié)點(diǎn)接收的交易
- 既可以接收,驗(yàn)證
Wormhole交易,也可以接收,驗(yàn)證Bitcoin Cash交易。
節(jié)點(diǎn)運(yùn)行
[圖片上傳失敗...(image-320119-1534417741420)]
Wormhole節(jié)點(diǎn)啟動(dòng)后,會(huì)與網(wǎng)絡(luò)中其它節(jié)點(diǎn)(包含:Bitcoin Cash節(jié)點(diǎn))通信,接收區(qū)塊及交易消息;當(dāng)從網(wǎng)絡(luò)中收到一個(gè)新區(qū)塊時(shí):進(jìn)行如下操作
- 先使用
Bitcoin Cash協(xié)議檢測該區(qū)塊及塊中的所有交易,符合協(xié)議規(guī)則,就繼續(xù)向下執(zhí)行,否則,丟棄該區(qū)塊; - 接著使用
Wormhole協(xié)議檢測該區(qū)塊中的每個(gè)交易,使用符合Wormhole規(guī)則的交易來構(gòu)建節(jié)點(diǎn)中的Wormhole數(shù)據(jù)集; - 當(dāng)區(qū)塊中的所有交易處理完畢后,會(huì)對當(dāng)前節(jié)點(diǎn)的
Wormhole數(shù)據(jù)集做鏡像,并寫入磁盤文件。
Wormhole交易
Wormhole交易本質(zhì)上來說一種特殊的Bitcoin Cash交易,利用了Bitcoin Cash腳本中一個(gè)特殊的操作碼OP_RETURN,將Wormhole協(xié)議附加在該操作碼后面。
Wormhole交易與Bitcoin Cash交易具有如下關(guān)系
-
Wormhole交易是Bitcoin Cash交易的子集
Wormhole交易在塊鏈中具有兩種狀態(tài),并且處于這兩種狀態(tài)的交易都是正確的Bitcoin Cash交易。
- 有效:
Wormhole交易滿足該交易類型所需的條件; - 無效:
Wormhole交易不滿足該交易類型所需的條件; -
Wormhole交易類型所需的條件見:Wormhole-Spec
基于上述前提:只要是正確的Bitcoin Cash交易,Wormhole節(jié)點(diǎn)就會(huì)接收,并打包驗(yàn)證,因此區(qū)塊鏈上會(huì)存在狀態(tài)失敗的Wormhole交易。
示例:當(dāng)創(chuàng)建了一筆Wormhole交易,處理流程如下:
[圖片上傳失敗...(image-635b7a-1534417741420)]
Wormhole賬戶與Bitcoin Cash地址
Wormhole協(xié)議采用的是賬戶模型,每個(gè)Bitcoin Cash地址是一個(gè)賬戶,每個(gè)賬戶可以含有多種類型的Token。
WHC基礎(chǔ)貨幣
Wormhole系統(tǒng)創(chuàng)建了一種基礎(chǔ)貨幣WHC,為未來智能合約Gas收費(fèi),鏈上去中心化交易所,以及創(chuàng)建各種Token提供交易媒介。
系統(tǒng)中WHC的來源是通過燃燒BCH生成;通過構(gòu)建一筆燃燒交易,獲取相應(yīng)金額的WHC。
燃燒交易的要求如下:
- 第一個(gè)交易輸出(索引為0):必須為燃燒輸出,即向燃燒地址轉(zhuǎn)
BCH,金額必須 >= 1 BCH 。 - 第二個(gè)交易輸出(索引為1):必須為Wormhole交易的載荷數(shù)據(jù),標(biāo)識(shí)該交易為燃燒BCH獲取
WHC類型的交易。 - 注意:
- 直接向燃燒地址地址轉(zhuǎn)賬是不會(huì)生成
WHC,會(huì)造成轉(zhuǎn)賬的BCH丟失; - 向燃燒地址轉(zhuǎn)賬的
BCH金額 < 1 BCH 時(shí),也不會(huì)生成WHC,會(huì)造成轉(zhuǎn)賬的BCH丟失;
- 直接向燃燒地址地址轉(zhuǎn)賬是不會(huì)生成
兌換比例如下:
- 1 BCH = 100 WHC; 1 WHC = 100,000,000 C ;
燃燒地址:
- 主網(wǎng):bitcoincash:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqu08dsyxz98whc
- 測試網(wǎng):bchtest:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqdmwgvnjkt8whc
- 回歸測試網(wǎng):bchreg:pqqqqqqqqqqqqqqqqqqqqqqqqqqqqp0kvc457r8whc
WHC的成熟度:在創(chuàng)建燃燒交易后,相應(yīng)的WHC不會(huì)立即達(dá)到發(fā)送者的賬戶,需要經(jīng)過一定的確認(rèn)時(shí)間(成熟度),WHC才會(huì)到達(dá)發(fā)送者的賬戶。
燃燒成熟度:
- 主網(wǎng):在1000個(gè)區(qū)塊確認(rèn)后,相應(yīng)的
WHC會(huì)到達(dá)發(fā)送者的賬戶;在隨后的區(qū)塊中,允許對這筆到賬的WHC進(jìn)行花費(fèi)或轉(zhuǎn)賬等。- 示例:在區(qū)塊高度500時(shí),確認(rèn)了1筆有效的燃燒交易(tx1),此時(shí)燃燒成熟度為1;在區(qū)塊高度1499時(shí),該筆燃燒交易(tx1)被確認(rèn)了1000次,此時(shí)燃燒成熟度為1000,
WHC到達(dá)發(fā)送者的賬戶。在區(qū)塊高度1499后,允許對這筆燃燒得到的WHC進(jìn)行花費(fèi)。
- 示例:在區(qū)塊高度500時(shí),確認(rèn)了1筆有效的燃燒交易(tx1),此時(shí)燃燒成熟度為1;在區(qū)塊高度1499時(shí),該筆燃燒交易(tx1)被確認(rèn)了1000次,此時(shí)燃燒成熟度為1000,
- 測試網(wǎng):在3個(gè)區(qū)塊確認(rèn)后,相應(yīng)的
WHC會(huì)到達(dá)發(fā)送者賬戶。 - 回歸測試網(wǎng):在1個(gè)區(qū)塊確認(rèn)后,相應(yīng)的
WHC會(huì)到達(dá)發(fā)送者賬戶。
Wormhole節(jié)點(diǎn)處理區(qū)塊的流程
在Wormhole的節(jié)點(diǎn)中,每個(gè)接收的新區(qū)塊需要被鏈接到主鏈,此時(shí)會(huì)有兩種情況出現(xiàn);
- 將接收的區(qū)塊追加到當(dāng)前主鏈的尾部;
- 當(dāng)節(jié)點(diǎn)接收新區(qū)塊后(未發(fā)生鏈重組),先對該區(qū)塊中的所有交易進(jìn)行
Bitcoin Cash協(xié)議的檢查,不符合Bitcoin Cash協(xié)議規(guī)則的區(qū)塊會(huì)被丟棄;符合Bitcoin Cash協(xié)議規(guī)則的區(qū)塊會(huì)進(jìn)行Wormhole協(xié)議的檢查,在這步,遍歷區(qū)塊中所有的交易,找到符合Wormhole規(guī)則的交易并進(jìn)行驗(yàn)證,更新Wormhole節(jié)點(diǎn)的Wormhole數(shù)據(jù)記錄,當(dāng)區(qū)塊中的所有交易都處理完畢后,會(huì)將當(dāng)前系統(tǒng)中的Wormhole數(shù)據(jù)寫入磁盤文件,作為當(dāng)前區(qū)塊高度的鏡像。
- 當(dāng)節(jié)點(diǎn)接收新區(qū)塊后(未發(fā)生鏈重組),先對該區(qū)塊中的所有交易進(jìn)行
- 接收新塊后,發(fā)生塊鏈重組;
- 當(dāng)節(jié)點(diǎn)處于鏈重組狀態(tài)時(shí),Wormhole節(jié)點(diǎn)會(huì)先刪除內(nèi)存中重組區(qū)塊高度后的所有數(shù)據(jù),然后加載分叉點(diǎn)區(qū)塊的磁盤鏡像文件,如果加載成功,則從分叉點(diǎn)重新掃描新鏈的區(qū)塊,構(gòu)建Wormhole數(shù)據(jù)集,每個(gè)區(qū)塊處理完后,將當(dāng)前系統(tǒng)的狀態(tài)寫入磁盤,作為當(dāng)前區(qū)塊高度的鏡像;如果加載鏡像文件失敗,Wormhole系統(tǒng)刪除內(nèi)存中所有的Wormhole數(shù)據(jù)集,然后從部署該功能的區(qū)塊高度開始,重新掃描主鏈上的所有區(qū)塊數(shù)據(jù),構(gòu)建Wormhole數(shù)據(jù)集。
Wormhole的安全模型
Wormhole的安全有兩層保護(hù)。
第一層是Bitcoin Cash的交易安全,Bitcoin Cash采用POW的挖礦算法作為去中心化的時(shí)間戳服務(wù)器,該算法已經(jīng)穩(wěn)定運(yùn)行將近10年,UTXO模型有以下的一些好處:
- UTXO無需維護(hù)余額
- UTXO是獨(dú)立的數(shù)據(jù)記錄單位,可以提升驗(yàn)證交易的速度
- UTXO模型無需關(guān)心事務(wù)問題,只關(guān)心鎖定腳本和解鎖腳本
- UTXO在處理交易的時(shí)候具有很高的性能
Wormhole協(xié)議復(fù)用了整個(gè)Bitcoin Cash中UTXO的安全模型,使用了Bitcoin Cash的去中心化時(shí)間戳服務(wù)器模型。
第二層保護(hù)是運(yùn)行Wormhole協(xié)議的節(jié)點(diǎn),不符合Wormhole協(xié)議的數(shù)據(jù)不會(huì)被Wormhole協(xié)議的節(jié)點(diǎn)解析,每個(gè)節(jié)點(diǎn)都有能力通過重新解析交易數(shù)據(jù),計(jì)算出Wormhole的最近的合法最終狀態(tài)。
未來方向
Wormhole 路線圖 : https://github.com/copernet/spec/blob/master/whcwhitepaper.md#wormhole路線圖
結(jié)論
智能合約的缺失一直是基于UTXO模型的公鏈的一大弱點(diǎn),Wormhole協(xié)議可以在完全復(fù)用UTXO的安全可靠等特性的情況下,增加了賬戶模型,來實(shí)現(xiàn)智能合約,將會(huì)給Bitcoin Cash帶來更多的可能性。
本文由 Wormhole團(tuán)隊(duì) 姚永芯 寫作,轉(zhuǎn)載無需授權(quán)。