簡介
Bitcoin Cash
(BCH)在區(qū)塊高度478,558上產(chǎn)生走越,一直致力于為世界帶來一種可靠的電子現(xiàn)金,履行最初的比特幣作為「點對點數(shù)字現(xiàn)金」的承諾瞳别。其具有全球無縫流通抖坪、無許可(Permissionless)創(chuàng)新等特點。在Bitcoin Cash
如何實現(xiàn)發(fā)行通證(Token)邢疙,眾多的開發(fā)者已經(jīng)有過不少的研究,比如染色幣的方案Colored-Coins望薄,之后Andrew Stone 提出了Enable representative tokens via OP_GROUP on Bitcoin Cash疟游,提議增加OP_GROUP的操作碼來實現(xiàn)發(fā)Token的方案。OP_GROUP方案需要修改Bitcoin Cash的共識規(guī)則才可以實現(xiàn)痕支。更具體地說颁虐,類似于在Ethereum網(wǎng)絡上廣受歡迎的ERC20協(xié)議所具備的那些功能。
凡是需要更改共識才能實現(xiàn)的通證發(fā)行技術提議卧须,都不可避免地會遇到問題另绩。首先是技術上的風險,其次是對這種風險的顧慮常常引發(fā)技術開發(fā)社區(qū)甚至整個經(jīng)濟生態(tài)都陷入巨大的爭議花嘶。爭議中的反對方笋籽,其顧慮很可能也確實是真實的。不論這樣的爭議中誰對誰錯椭员,結果常常是有爭議的提議無法被實現(xiàn)车海。這樣的困難可以被視為一種保險機制,讓具有的風險更改很難被添加到協(xié)議之中隘击,保證協(xié)議的穩(wěn)健與安全侍芝;但是喘沿,協(xié)議的創(chuàng)新就面臨了著巨大的困難。導致了Bitcoin Cash社區(qū)獨立的區(qū)塊擴容大爭論竭贩,曠日持久而沒有共識的產(chǎn)生,就是一個更加令人不能回避的社會心理學證據(jù)莺禁。
快速活躍的創(chuàng)新留量,需要一種無需許可的環(huán)境。我們也一直在探索無許可創(chuàng)新的方法哟冬,在不需要改變共識的情況下楼熄,在Bitcoin Cash的區(qū)塊鏈上實現(xiàn)智能合約。經(jīng)過研究浩峡,我們關注到了OmniLayer協(xié)議可岂,它是一種利用OP_RETURN操作碼實現(xiàn)通證發(fā)行的方案。這個方案是廣受歡迎的泰達幣(USDT)日常發(fā)行和流通的技術基礎翰灾。Omni Layer是運行在Bitcoin的區(qū)塊鏈之上的缕粹。Omni Layer協(xié)議采用了MIT開源許可證。我們Fork了Omni Layer的協(xié)議纸淮,在Bitcoin Cash的區(qū)塊鏈上實現(xiàn)了發(fā)行通證的技術方案平斩。我們將這種技術方案命名為Wormhole協(xié)議,協(xié)議中的原生代幣命名為Wormhole Cash咽块。
安全模型和執(zhí)行流程
Wormhole 節(jié)點
節(jié)點認知
Wormhole節(jié)點是Bitcoin Cash 節(jié)點的超集绘面,是在Bitcoin Cash
客戶端上增加了Wormhole協(xié)議的實現(xiàn)。
Wormhole
客戶端既可以作為一個Wormhole
全節(jié)點使用侈沪,同時也可以作為Bitcoin Cash
全節(jié)點使用揭璃,它實現(xiàn)了Bitcoin Cash協(xié)議與Wormhole協(xié)議。
Wormhole節(jié)點接收的交易
- 既可以接收亭罪,驗證
Wormhole
交易瘦馍,也可以接收,驗證Bitcoin Cash
交易皆撩。
節(jié)點運行
[圖片上傳失敗...(image-320119-1534417741420)]
Wormhole節(jié)點啟動后扣墩,會與網(wǎng)絡中其它節(jié)點(包含:Bitcoin Cash節(jié)點)通信,接收區(qū)塊及交易消息扛吞;當從網(wǎng)絡中收到一個新區(qū)塊時:進行如下操作
- 先使用
Bitcoin Cash
協(xié)議檢測該區(qū)塊及塊中的所有交易呻惕,符合協(xié)議規(guī)則,就繼續(xù)向下執(zhí)行滥比,否則亚脆,丟棄該區(qū)塊; - 接著使用
Wormhole
協(xié)議檢測該區(qū)塊中的每個交易盲泛,使用符合Wormhole
規(guī)則的交易來構建節(jié)點中的Wormhole
數(shù)據(jù)集濒持; - 當區(qū)塊中的所有交易處理完畢后键耕,會對當前節(jié)點的
Wormhole
數(shù)據(jù)集做鏡像,并寫入磁盤文件柑营。
Wormhole交易
Wormhole
交易本質上來說一種特殊的Bitcoin Cash
交易屈雄,利用了Bitcoin Cash
腳本中一個特殊的操作碼OP_RETURN
,將Wormhole
協(xié)議附加在該操作碼后面官套。
Wormhole
交易與Bitcoin Cash
交易具有如下關系
-
Wormhole
交易是Bitcoin Cash
交易的子集
Wormhole
交易在塊鏈中具有兩種狀態(tài)酒奶,并且處于這兩種狀態(tài)的交易都是正確的Bitcoin Cash
交易。
- 有效:
Wormhole
交易滿足該交易類型所需的條件奶赔; - 無效:
Wormhole
交易不滿足該交易類型所需的條件惋嚎; -
Wormhole
交易類型所需的條件見:Wormhole-Spec
基于上述前提:只要是正確的Bitcoin Cash
交易,Wormhole
節(jié)點就會接收站刑,并打包驗證另伍,因此區(qū)塊鏈上會存在狀態(tài)失敗的Wormhole
交易。
示例:當創(chuàng)建了一筆Wormhole交易绞旅,處理流程如下:
[圖片上傳失敗...(image-635b7a-1534417741420)]
Wormhole
賬戶與Bitcoin Cash
地址
Wormhole
協(xié)議采用的是賬戶模型摆尝,每個Bitcoin Cash
地址是一個賬戶,每個賬戶可以含有多種類型的Token玻靡。
WHC基礎貨幣
Wormhole
系統(tǒng)創(chuàng)建了一種基礎貨幣WHC
结榄,為未來智能合約Gas
收費,鏈上去中心化交易所囤捻,以及創(chuàng)建各種Token提供交易媒介臼朗。
系統(tǒng)中WHC
的來源是通過燃燒BCH
生成;通過構建一筆燃燒交易蝎土,獲取相應金額的WHC
视哑。
燃燒交易的要求如下:
- 第一個交易輸出(索引為0):必須為燃燒輸出,即向燃燒地址轉
BCH
誊涯,金額必須 >= 1 BCH 挡毅。 - 第二個交易輸出(索引為1):必須為Wormhole交易的載荷數(shù)據(jù),標識該交易為燃燒BCH獲取
WHC
類型的交易暴构。 - 注意:
- 直接向燃燒地址地址轉賬是不會生成
WHC
跪呈,會造成轉賬的BCH
丟失; - 向燃燒地址轉賬的
BCH
金額 < 1 BCH 時取逾,也不會生成WHC
耗绿,會造成轉賬的BCH
丟失;
- 直接向燃燒地址地址轉賬是不會生成
兌換比例如下:
- 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)建燃燒交易后砾隅,相應的WHC
不會立即達到發(fā)送者的賬戶误阻,需要經(jīng)過一定的確認時間(成熟度),WHC
才會到達發(fā)送者的賬戶。
燃燒成熟度:
- 主網(wǎng):在1000個區(qū)塊確認后究反,相應的
WHC
會到達發(fā)送者的賬戶寻定;在隨后的區(qū)塊中,允許對這筆到賬的WHC
進行花費或轉賬等精耐。- 示例:在區(qū)塊高度500時狼速,確認了1筆有效的燃燒交易(tx1),此時燃燒成熟度為1卦停;在區(qū)塊高度1499時唐含,該筆燃燒交易(tx1)被確認了1000次,此時燃燒成熟度為1000沫浆,
WHC
到達發(fā)送者的賬戶。在區(qū)塊高度1499后滚秩,允許對這筆燃燒得到的WHC
進行花費专执。
- 示例:在區(qū)塊高度500時狼速,確認了1筆有效的燃燒交易(tx1),此時燃燒成熟度為1卦停;在區(qū)塊高度1499時唐含,該筆燃燒交易(tx1)被確認了1000次,此時燃燒成熟度為1000沫浆,
- 測試網(wǎng):在3個區(qū)塊確認后,相應的
WHC
會到達發(fā)送者賬戶郁油。 - 回歸測試網(wǎng):在1個區(qū)塊確認后本股,相應的
WHC
會到達發(fā)送者賬戶。
Wormhole節(jié)點處理區(qū)塊的流程
在Wormhole的節(jié)點中桐腌,每個接收的新區(qū)塊需要被鏈接到主鏈拄显,此時會有兩種情況出現(xiàn);
- 將接收的區(qū)塊追加到當前主鏈的尾部案站;
- 當節(jié)點接收新區(qū)塊后(未發(fā)生鏈重組)躬审,先對該區(qū)塊中的所有交易進行
Bitcoin Cash
協(xié)議的檢查,不符合Bitcoin Cash
協(xié)議規(guī)則的區(qū)塊會被丟棄蟆盐;符合Bitcoin Cash
協(xié)議規(guī)則的區(qū)塊會進行Wormhole
協(xié)議的檢查承边,在這步,遍歷區(qū)塊中所有的交易石挂,找到符合Wormhole規(guī)則的交易并進行驗證博助,更新Wormhole節(jié)點的Wormhole數(shù)據(jù)記錄,當區(qū)塊中的所有交易都處理完畢后痹愚,會將當前系統(tǒng)中的Wormhole數(shù)據(jù)寫入磁盤文件富岳,作為當前區(qū)塊高度的鏡像。
- 當節(jié)點接收新區(qū)塊后(未發(fā)生鏈重組)躬审,先對該區(qū)塊中的所有交易進行
- 接收新塊后拯腮,發(fā)生塊鏈重組窖式;
- 當節(jié)點處于鏈重組狀態(tài)時,Wormhole節(jié)點會先刪除內存中重組區(qū)塊高度后的所有數(shù)據(jù)疾瓮,然后加載分叉點區(qū)塊的磁盤鏡像文件脖镀,如果加載成功,則從分叉點重新掃描新鏈的區(qū)塊,構建Wormhole數(shù)據(jù)集蜒灰,每個區(qū)塊處理完后弦蹂,將當前系統(tǒng)的狀態(tài)寫入磁盤,作為當前區(qū)塊高度的鏡像强窖;如果加載鏡像文件失敗凸椿,Wormhole系統(tǒng)刪除內存中所有的Wormhole數(shù)據(jù)集,然后從部署該功能的區(qū)塊高度開始翅溺,重新掃描主鏈上的所有區(qū)塊數(shù)據(jù)脑漫,構建Wormhole數(shù)據(jù)集。
Wormhole的安全模型
Wormhole
的安全有兩層保護咙崎。
第一層是Bitcoin Cash
的交易安全优幸,Bitcoin Cash
采用POW的挖礦算法作為去中心化的時間戳服務器,該算法已經(jīng)穩(wěn)定運行將近10年褪猛,UTXO模型有以下的一些好處:
- UTXO無需維護余額
- UTXO是獨立的數(shù)據(jù)記錄單位网杆,可以提升驗證交易的速度
- UTXO模型無需關心事務問題,只關心鎖定腳本和解鎖腳本
- UTXO在處理交易的時候具有很高的性能
Wormhole
協(xié)議復用了整個Bitcoin Cash
中UTXO的安全模型伊滋,使用了Bitcoin Cash
的去中心化時間戳服務器模型碳却。
第二層保護是運行Wormhole
協(xié)議的節(jié)點,不符合Wormhole
協(xié)議的數(shù)據(jù)不會被Wormhole
協(xié)議的節(jié)點解析笑旺,每個節(jié)點都有能力通過重新解析交易數(shù)據(jù)昼浦,計算出Wormhole
的最近的合法最終狀態(tài)。
未來方向
Wormhole 路線圖 : https://github.com/copernet/spec/blob/master/whcwhitepaper.md#wormhole路線圖
結論
智能合約的缺失一直是基于UTXO模型的公鏈的一大弱點筒主,Wormhole
協(xié)議可以在完全復用UTXO的安全可靠等特性的情況下关噪,增加了賬戶模型,來實現(xiàn)智能合約乌妙,將會給Bitcoin Cash帶來更多的可能性色洞。
本文由 Wormhole團隊 姚永芯
寫作,轉載無需授權冠胯。