基于區(qū)塊鏈的雙向錨定介紹
什么是雙向錨定
雙向錨定(2WP)允許比特幣從比特幣區(qū)塊鏈轉(zhuǎn)移到第二層區(qū)塊鏈,并且反之亦然。“轉(zhuǎn)移”其實(shí)是一個(gè)錯(cuò)覺:比特幣是不能被轉(zhuǎn)移的,但可以暫時(shí)性地將比特幣在比特幣區(qū)塊鏈上鎖定,同時(shí)等量的等價(jià)代幣在第二層區(qū)塊鏈上被釋放。當(dāng)?shù)攘康葍r(jià)的代幣在第二層區(qū)塊鏈上被鎖定時(shí),則比特幣區(qū)塊鏈上的原始比特幣就可以被釋放。這就是雙向錨定的本質(zhì)。這一本質(zhì)存在一個(gè)問題,理論上第二層區(qū)塊鏈已經(jīng)清算完畢,但如何保證實(shí)際執(zhí)行是一個(gè)問題。因此,任何雙向錨定系統(tǒng)必須做的承諾都基于假設(shè)雙向錨定的參與者是誠實(shí)的。最重要的一個(gè)假設(shè)是,第一層區(qū)塊鏈?zhǔn)强箤彶榈?,并且大多?shù)比特幣礦工是誠實(shí)的。另外一個(gè)假設(shè)是主要的保管鎖定的比特幣的第三方也是誠實(shí)的。如果這些假設(shè)不成立,那么比特幣和等量等價(jià)的第二層區(qū)塊鏈代幣可能被同時(shí)釋放,這就導(dǎo)致了惡意的雙花。任何一個(gè)雙向錨定系統(tǒng)必須選出一個(gè)實(shí)施方案,以保證參與的各方承諾的誠實(shí)性是在經(jīng)濟(jì)上和法律上有根據(jù)。這涉及到那些由關(guān)鍵性參與方發(fā)起的攻擊的成本分析,和攻擊因果關(guān)系分析。雙向錨定方案的安全性取決于其激勵(lì)體制是否能夠強(qiáng)化系統(tǒng)中關(guān)鍵性的參與方對(duì)系統(tǒng)做出的承諾。
什么不是雙向錨定
質(zhì)押托管合同(BEC)是比特股上創(chuàng)建的一種方法,這種方法可以讓比特幣(或法定貨幣)在一個(gè)智能支付平臺(tái)上創(chuàng)建和平臺(tái)本身不同的代幣(如 bts)進(jìn)行交易。這種方法也適應(yīng)于其他平臺(tái)。這種方法可以在平臺(tái)上鎖定發(fā)行者的當(dāng)?shù)刎泿呕虮忍貛艁戆l(fā)行債券,一般來說鎖定的貨幣或比特幣價(jià)值要超過他們創(chuàng)建的債券價(jià)值,或等值,然后他們就可以創(chuàng)建債券白條在平臺(tái)上銷售。平臺(tái)監(jiān)控比特幣的實(shí)時(shí)價(jià)格可以實(shí)現(xiàn)發(fā)行的債券總量的動(dòng)態(tài)調(diào)整。顯然,這種方法不是雙向錨定,因?yàn)檫@種方法創(chuàng)建了新的“比特幣”,并且沒有等量的比特幣在比特幣區(qū)塊鏈上被鎖定。質(zhì)押托管合同(BEC)的安全性通常是弱于雙向錨定(2WP)的,因?yàn)橛脩舯仨毿湃螞]有對(duì)應(yīng)利益關(guān)系的記賬方,他們可能沒有獲得高額的獎(jiǎng)勵(lì),但用戶卻必須信任他們是誠實(shí)的。并且,因?yàn)楸镜卮鷰攀袌鰞r(jià)格的波動(dòng)性,讓持有債券的參與方幾乎只有很少甚至沒有經(jīng)濟(jì)利益。
任何雙向錨定系統(tǒng)只是一個(gè)投票系統(tǒng)
當(dāng)?shù)诙訁^(qū)塊鏈最終沒有清算,我們可以將任何雙向錨定系統(tǒng)簡化,并且看出雙向錨定系統(tǒng)就相當(dāng)于有一組保管人投票來決定鎖定比特幣和發(fā)送已經(jīng)鎖定的比特幣。投票可以以數(shù)字簽名、哈希算力(工作量證明 PoW)、存儲(chǔ)空間(存儲(chǔ)空間證明 Proof of space),或者加密數(shù)字貨幣權(quán)益(股權(quán)證明 POS),或者其他任何已有區(qū)塊鏈的共識(shí)系統(tǒng)。我們可以調(diào)整每一個(gè)參與方的投票權(quán),調(diào)整可投票的參與方數(shù)量,調(diào)整某個(gè)參與方在某種情況下是否被允許投票,可以設(shè)定多個(gè)允許投票條件,等等,但我們無法改變這個(gè)系統(tǒng)的投票本身。
雙向錨定設(shè)計(jì)
我們目前已經(jīng)有的最常見的雙向錨定設(shè)計(jì)是:側(cè)鏈,驅(qū)動(dòng)鏈和多重簽名監(jiān)管和混合設(shè)計(jì)。為了簡化說明,我們將從比特幣區(qū)塊鏈轉(zhuǎn)移到第二層區(qū)塊鏈的代幣稱為第二層鏈代幣(secoins)
單一保管人
雙向錨定的一種可實(shí)現(xiàn)形式是建立一個(gè)交易所擔(dān)保托管鎖定比特幣和執(zhí)行監(jiān)管解鎖等量第二層鏈代幣。在第二層區(qū)塊鏈代幣沒有被鎖定前需要鎖定比特幣,可以由交易所手動(dòng)執(zhí)行,也可以通過軟件協(xié)議來執(zhí)行操作。這個(gè)操作過程可用下圖來描述:
多重簽名聯(lián)邦
雙向錨定的一個(gè)更好的實(shí)現(xiàn)方式是建立由一組公證人控制的多重簽名,其中大部分公證人被批準(zhǔn)執(zhí)行資金解鎖。這種設(shè)置方式要比由單個(gè)組織來控制資金更合理,但控制權(quán)依然有可能中心化。為了實(shí)現(xiàn)真正的去中心化,需要仔細(xì)選擇公證人,讓他們分布在不同的司法管轄范圍,不同的地理位置,并且每一個(gè)人都要擁有良好的聲譽(yù)和足夠好的保密性。他們不能太少,也不能太多。這個(gè)操作過程可用下圖來描述:
側(cè)鏈
為了不讓更多第三方參與雙向錨定,每個(gè)區(qū)塊鏈可以通過協(xié)議來實(shí)現(xiàn)強(qiáng)制執(zhí)行的共識(shí)。一個(gè)區(qū)塊鏈系統(tǒng)性能能夠理解其它區(qū)塊鏈的共識(shí)系統(tǒng),能夠?qū)崿F(xiàn)在獲得其它區(qū)塊鏈系統(tǒng)提供的鎖定交易證明之后,自動(dòng)釋放比特幣??梢杂孟聢D來描述:
然而,當(dāng)使用比特幣的側(cè)鏈時(shí)存在幾個(gè)問題:
· 大多數(shù)公共區(qū)塊鏈沒有最終結(jié)算方案。如果第二層區(qū)塊鏈也沒有最終結(jié)算方案,那么比特幣區(qū)塊鏈就不能確認(rèn)第二層區(qū)塊鏈的交易是否被第二層區(qū)塊鏈網(wǎng)絡(luò)所接受。(例如:鎖定第二層鏈代幣(secoins))它所能得到的只是一個(gè)概率保證:越多的工作量證明被用來驗(yàn)證一個(gè)交易,就意味著它越有可能已經(jīng)被接受。
· 即使第二層區(qū)塊鏈有最終結(jié)算方案,如果沒有區(qū)塊鏈糾纏(見下一節(jié))那么第二層區(qū)塊鏈將遇到與比特幣區(qū)塊鏈相同的問題。如果存在糾纏,那么第二層區(qū)塊鏈的出塊率不能高于比特幣的出塊率。
· 比特幣的側(cè)鏈需要一個(gè)軟分叉或者硬分叉來添加新的復(fù)雜操作碼。Blockstream 的方案現(xiàn)在是不完整的,沒有解決簡單支付驗(yàn)證(SPV)證明的工作量證明(POW)的驗(yàn)證問題。
區(qū)塊鏈糾纏
解決雙向錨定缺乏最終交易確認(rèn)問題的一種方式是區(qū)塊鏈糾纏,例如在第一層區(qū)塊鏈中鎖定交易的被撤消,就等同于第二層區(qū)塊鏈中解鎖交易的撤消。有幾種區(qū)塊鏈糾纏的方式:
1. 第二層區(qū)塊鏈的交易被嵌入到第一層區(qū)塊鏈的交易中(例如嵌入到OP_RETURN 支付載荷中,像合約幣(Counterparty))
2. 第二層區(qū)塊鏈的區(qū)塊有兩個(gè)父塊,一個(gè)在第二層區(qū)塊鏈,一個(gè)在第一層區(qū)塊鏈。第二層區(qū)塊鏈節(jié)點(diǎn)驗(yàn)證第一層區(qū)塊鏈里的父塊是否是在比特幣的最長鏈。
3. 第二層區(qū)塊鏈的區(qū)塊被錨定在被監(jiān)管的第一層區(qū)塊鏈的加密交易中。
前兩種方式允許第二層區(qū)塊鏈驗(yàn)證簡單支付驗(yàn)證(SPV)證明,而不需要證明者提供確認(rèn)區(qū)塊頭部信息(header),因?yàn)榈诙訁^(qū)塊鏈客戶端也保存了一份比特幣區(qū)塊鏈的副本(第一種方式中的整個(gè)區(qū)塊鏈,第二種方式是只保存區(qū)塊頭部信息)。而第三種方式并不可行。
下圖顯示了側(cè)鏈將比特幣轉(zhuǎn)移到第二層區(qū)塊鏈中而無需額外確認(rèn)(以比特幣盡可能快的速度):
區(qū)塊鏈糾纏有以下幾個(gè)缺點(diǎn):
· 它阻止了第二層區(qū)塊鏈以比比特幣更高的速率創(chuàng)建區(qū)塊,因?yàn)樵阱^定前,區(qū)塊鏈分支的接受情況存在不確定性。有可能出現(xiàn)描定的是一條短鏈,而不是錨定在最長鏈嗎?
· 在比特幣交易中嵌入了第二層區(qū)塊鏈的交易時(shí),第二層區(qū)塊鏈的所有用戶都需要處理兩個(gè)鏈的交易。
· 區(qū)塊鏈糾纏解決了最終結(jié)算方案的某方面問題,但沒有解決第一層區(qū)塊鏈中被鎖定的比特幣的監(jiān)管問題。
驅(qū)動(dòng)鏈
驅(qū)動(dòng)鏈將被鎖定比特幣的監(jiān)管權(quán)交給比特幣礦工,并且允許比特幣礦工們投票決定何時(shí)解鎖比特幣和將解鎖的比特幣發(fā)送到哪里。礦工使用比特幣區(qū)塊鏈投票,使用區(qū)塊里的某些字段來實(shí)現(xiàn)投票(例如 coinbase 字段)。越多的誠實(shí)礦工參與進(jìn)來投票,則安全性就越高。下圖是對(duì)驅(qū)動(dòng)鏈的描述:
混合型
迄今為止所提出的所有設(shè)計(jì)都是對(duì)稱的:用于解鎖第二層鏈代幣的方法與解鎖比特幣的方法是相同的。但第一層區(qū)塊鏈和第二層區(qū)塊鏈有本質(zhì)的不同:第一
9層區(qū)塊鏈主要是在發(fā)行貨幣,而第二層鏈則不發(fā)行貨幣。這在安全性方面存在巨大的隱患,它表明了對(duì)稱的雙向錨定模型可能是不夠完善的?;旌想p向錨定是對(duì)兩邊使用了不同的解鎖方法,例如在第二層區(qū)塊鏈上使用側(cè)鏈而在第一層區(qū)塊鏈網(wǎng)絡(luò)上使用驅(qū)動(dòng)鏈。
根鏈(RSK)案例
根鏈(RSK)是很特別的。根鏈基于這樣一種基本的設(shè)計(jì)選擇:必須與比特幣聯(lián)
合挖礦。因此,我們必須分析出最佳設(shè)計(jì)。我們要考慮到:
? 哪一方控制著被鎖定的比特幣
? 攻擊的成本是什么
? 攻擊的后果是什么
? 參與的激勵(lì)機(jī)制是什么
我們發(fā)現(xiàn),如果幾乎全體的比特幣礦工都加入到聯(lián)合挖礦中,當(dāng)監(jiān)管者是比特幣礦工時(shí),參與各方可以被激發(fā)出最高的誠實(shí)性,但只有當(dāng)幾乎所有礦工都參與其中。在聯(lián)合挖礦的情況下,驅(qū)動(dòng)鏈和側(cè)鏈都完全依靠比特幣礦工的誠實(shí),兩者的安全性是相同的。然而,側(cè)鏈在比特幣一側(cè)實(shí)現(xiàn)起來要復(fù)雜得多,所以在比特幣這一側(cè),根鏈的最佳選擇是使用驅(qū)動(dòng)鏈。而在根鏈這一層,我們使用側(cè)鏈的方式來實(shí)現(xiàn)。所以從這一點(diǎn)來說,根鏈?zhǔn)遣捎没旌闲驮O(shè)計(jì)方案,可以被稱為驅(qū)動(dòng)鏈/側(cè)鏈。
當(dāng)?shù)V工參與聯(lián)合挖礦的程度比較低時(shí),“驅(qū)動(dòng)鏈/側(cè)鏈”的安全性是很低的。因此,我們建議采用這樣一種混合模型,其中被鎖定比特幣的安全性是基于驅(qū)動(dòng)鏈外加一組公證人。礦工和公證人(擁有不同的權(quán)重)共同投票決定解鎖哪些比特幣。公證人使用數(shù)字簽名進(jìn)行投票,而礦工則在他們的 coinbase 交易中寫入一個(gè)特殊的標(biāo)記進(jìn)行投票。這是中心化和安全性之間的一種權(quán)衡。最終的根鏈雙向錨定設(shè)計(jì)可以被稱為“驅(qū)動(dòng)鏈 +公證人/側(cè)鏈”。我們會(huì)基于比特幣全體礦工參與到聯(lián)合挖礦的程度來動(dòng)態(tài)調(diào)整投票權(quán)重。在初期,只有公證人才有投票權(quán),使用傳統(tǒng)的多重簽名交易。在中期,當(dāng)驅(qū)動(dòng)鏈功能被加載到比特幣時(shí),公證人和礦工將一起參與投票。從長遠(yuǎn)來看,當(dāng) 90%以上的礦工參與了聯(lián)合挖礦時(shí),公證人的投票權(quán)將被刪除,屆時(shí)只有礦工才有投票權(quán)。這個(gè)演變的過程可以用來圖來描述:
在本質(zhì)上,我們建議將鎖定的比特幣的安全性建立在礦工和一組公證人身上,但是這兩者之間的投票權(quán)重會(huì)因全體礦參與聯(lián)合挖礦的程度而動(dòng)態(tài)調(diào)整。
在之后文章中,我們將展示驅(qū)動(dòng)鏈+公證人的設(shè)計(jì)是如何在比特幣上實(shí)現(xiàn)的,只需要在比特幣上植入一個(gè)單一的操作碼 OP_CHECK_VOTES_MULTISIG_VERIFY 。這個(gè)操作碼很容易理解,編程實(shí)現(xiàn)也很簡單,并且可以以軟分叉的方式在比特幣網(wǎng)絡(luò)上部署。