0
本文作者: 溫曉樺 | 2017-01-13 21:21 |
雷鋒網(wǎng)按:本文作者為網(wǎng)錄科技創(chuàng)始人兼CEO呂旭軍、網(wǎng)錄科技產(chǎn)品總監(jiān)楊濤。呂旭軍是原Factom(公證通)聯(lián)合創(chuàng)始人兼CTO,畢業(yè)于北京大學(xué)、俄亥俄州立大學(xué),經(jīng)濟(jì)學(xué)、計算機(jī)碩士,MBA。雷鋒網(wǎng)已獲得授權(quán),未經(jīng)同意不得轉(zhuǎn)載。
比特幣的成功,區(qū)塊鏈概念的火熱讓基于區(qū)塊鏈的分布式賬本技術(shù)被眾多國家的中央銀行視為國家數(shù)字貨幣的重要技術(shù)選擇之一。我國央行也積極進(jìn)行區(qū)塊鏈技術(shù)的探索,國家數(shù)字貨幣項目組也正式成立并高舉招聘大旗。從全球范圍來看,英國央行步伐稍快,已經(jīng)完成了一版被稱為RSCoin的分布式賬本數(shù)字貨幣系統(tǒng)概念證明。
本文將基于英國發(fā)表的中央銀行數(shù)字貨幣白皮書對其原理和機(jī)制進(jìn)行解讀,能夠?qū)鴥?nèi)的區(qū)塊鏈從業(yè)者有所啟發(fā)。
中央銀行發(fā)行數(shù)字貨幣的目標(biāo)各有不同,但是需要遵循什么原則幾乎出奇的一致:
數(shù)字貨幣的發(fā)行量和發(fā)行過程不能類似比特幣一樣不受中央銀行的控制,數(shù)字貨幣不影響目前中央銀行——商業(yè)銀行的貨幣發(fā)行二元機(jī)制。
從技術(shù)層面上看,目前比特幣最大的局限,交易吞吐量是重點需要解決的問題,比特幣網(wǎng)絡(luò)支持的交易量為7筆/秒,與其相比現(xiàn)實中的運行的支付系統(tǒng),PayPay每秒可以處理100筆,Visa每秒可以處理2000-7000筆,國內(nèi)的支付寶雙11的峰值早已大于5萬筆。從技術(shù)上來說由于業(yè)務(wù)邏輯的復(fù)雜程度不同,應(yīng)用環(huán)境不同等因素,單純對比吞吐量并沒有實際的意義,但從實際應(yīng)用來看,7筆/秒的交易是遠(yuǎn)遠(yuǎn)無法支撐中央銀行的數(shù)字貨幣系統(tǒng)。
基于以上的原則,RSCoin的最終目標(biāo)是提供一個由中央銀行控制發(fā)行的性能優(yōu)越的數(shù)字貨幣。為了實現(xiàn)這一目標(biāo),RSCoin在設(shè)計過程中充分借鑒了各類數(shù)字貨幣、信用卡等的機(jī)制,打造了一個獨特的數(shù)字貨幣原型。主要體現(xiàn)在幾個方面:
1)雙層鏈架構(gòu)
2)改進(jìn)版的2PC共識
3)交叉驗證機(jī)制
下面我們將詳細(xì)分析這一貨幣原型的原理和機(jī)制:
首先RSCoin將區(qū)塊分成了兩層,高層級區(qū)塊(higher-lever block)和低層級區(qū)塊(low-lever block)。
高層級區(qū)塊由中央銀行控制,主要職責(zé)是:
1)控制貨幣的發(fā)行。
2)節(jié)點的授權(quán)、審查和激勵。
3)整體賬本的維護(hù)。
但是,它不處理具體的交易。
低層級區(qū)塊由商業(yè)銀行或央行授權(quán)的機(jī)構(gòu)維護(hù),每個節(jié)點被稱為“ mintette”,節(jié)點的主要職責(zé)是:
1)處理用戶的交易請求并驗證合法性。
2)記錄交易并更新賬本。
3)相互交叉驗證。
這一雙層設(shè)計并非RSCoin的首創(chuàng),作者提到是受到了Factom(公正通)設(shè)計的啟發(fā)。除此之外與比特幣、以太坊等數(shù)字貨幣架構(gòu)最大的不同是:各節(jié)點之間并不同步交易數(shù)據(jù),相當(dāng)于每個節(jié)點有一個自己的鏈條,只是鏈條中包含了其他節(jié)點鏈條的信息以進(jìn)行交叉驗證,一段時間的交易統(tǒng)一合并到高層級區(qū)塊中。這樣做很重要的原因是大大降低了節(jié)點之間通信的負(fù)荷,對提升性能有較大的幫助。
雙層架構(gòu)(摘自原文)
影響比特幣吞吐量很重要的原因是比特幣采用的工作量證明機(jī)制(POW),由于比特幣是一個開放網(wǎng)絡(luò),基本假設(shè)是誠實節(jié)點和作惡節(jié)點都可以隨意進(jìn)出這個網(wǎng)絡(luò),為了避免遭受女巫攻擊,通過算力的競爭來獲得記賬的權(quán)利是保證整個網(wǎng)絡(luò)安全的有效方法。而在RSCoin中這個假設(shè)變?yōu)椋貉胄凶鲪旱目赡苄院苄?,其他?jié)點都是央行授權(quán)并已知的節(jié)點。在這一假設(shè)下,對于系統(tǒng)的整體安全的保障要求可以相對降低,設(shè)計上更偏向于性能的考慮。
RSCoin把自己的共識機(jī)制稱為改進(jìn)版的Two-Phase Commit,首先節(jié)點并不需要“挖礦”,也就是不需要進(jìn)行Hash隨機(jī)數(shù)計算。任何交易系統(tǒng)最重要的要求之一是避免“雙花”(同一筆錢被花了兩次),“雙花”的一種情況是用戶有意或者無意將同一筆資金提交了兩次交易,系統(tǒng)沒有識別并認(rèn)可了這兩次交易;另一種情況是惡意節(jié)點或者用戶攻擊系統(tǒng),對賬本進(jìn)行控制,讓系統(tǒng)接受了兩次交易,或者直接修改賬本。嚴(yán)格來看工作量證明機(jī)制本身并沒有直接解決第一種情況,而是為了第二種情況設(shè)計的。上面提到了RSCoin的假設(shè)情況沒有 比特幣那樣惡劣,因此并不一定需要使用工作量證明來避免第二種情況的雙花。解決第一種情況的雙花最簡單的方法就是交易請求時檢查任何一次交易的輸出至多只能基于一次其他交易的輸入。對于這一點RSCoin仍然采用了比特幣UTXO(unspent transaction output)的模式來進(jìn)行記賬,這里的output是相對于上一筆支付的付款方而言的,對于收款方則是input,為了避免混淆,下文中將統(tǒng)一用針對付款方而言的輸出(output)來表示該內(nèi)容。
這里,簡單介紹一下UTXO模型。下圖1為傳統(tǒng)的記賬模式,圖2為UTXO記賬模式。二者的區(qū)別是傳統(tǒng)模式通過交易記錄與余額的對賬保障余額的準(zhǔn)確,在執(zhí)行支付時只需判斷余額是否足夠,不需要重新計算余額從何而來。UTXO模式下,余額是多個上一筆支付方作為標(biāo)記的來款(output)之和,支付時需要被花費的來款被打上自己的標(biāo)記成為收款方的來款(這種模式非常類似于銀行匯票的背書轉(zhuǎn)讓:每次轉(zhuǎn)讓簽上轉(zhuǎn)讓方的名字,以此傳遞)。在這種模式下,避免雙花的方法就是檢查本筆交易相關(guān)的UTXO是否被其他交易花費。
下面,我們詳細(xì)介紹RSCoin的共識過程。
首先為了提升性能,交易并不向全網(wǎng)廣播,而是將交易隨機(jī)分配到不同的節(jié)點處理,每個節(jié)點處理一部分交易,但每一個交易不會只有一個節(jié)點處理。需要提及的是以太坊提升性能的改進(jìn)方案中已經(jīng)提出過分片(sharding)處理的理念并將在新版本中實現(xiàn)。
簡要介紹RSCoin的一些標(biāo)識符號和定義:
addr代表地址,也就是賬號。
addrid代表與該地址有關(guān)的某一筆輸出,addrid由交易的hash(用tx表示),輸出地址的索引(用i表示),交易的值(v)組成。
addrid被記錄在三個表中分別是UTXO list,代表所有未被花費的輸出,pset list代表某段時間內(nèi)已關(guān)聯(lián)交易但未記賬的UTXO,txset list代表記入賬本的交易。簡單來說三個列表分別記錄同一筆資金在一段時間內(nèi)的三個不同狀態(tài):未花費、已花費未記賬、已記賬。每個列表中包含了一段時間內(nèi)的每一筆資金。
整個共識過程被分成為兩步。
第一步發(fā)生在用戶與節(jié)點之間,用戶提起交易并通過地址索引(中心化的服務(wù))自動找到該交易中所有UTXO對應(yīng)的輸出地址的管理節(jié)點(owner),不同的地址對應(yīng)不同的管理節(jié)點,地址索引是一個中心化的服務(wù),便于用戶快速找到不同地址對應(yīng)的管理節(jié)點。管理節(jié)點將對用戶提交的交易進(jìn)行檢查:交易的合法性、地址是否由其管理、該地址對應(yīng)的UTXO是否雙花。檢查雙花的具體過程是:首先驗證該地址下的輸出未被花費(addrid在utxo列表中)以及該地址下的輸出沒有與其他交易關(guān)聯(lián)(addrid不在pset列表中);如果驗證通過,該節(jié)點將addrid從utxo列表中放入pset列表中,意味著這筆addrid已經(jīng)與該筆交易關(guān)聯(lián),如果其他交易進(jìn)行驗證時會發(fā)現(xiàn)這筆addrid已經(jīng)雙花。從全局看,如果所有負(fù)責(zé)節(jié)點中的多數(shù)返回確認(rèn)信息,意味著UTXO雙花檢查通過,用戶將交易以和帶有所有確認(rèn)節(jié)點簽名的結(jié)果發(fā)送給收款地址對應(yīng)的管理節(jié)點。
第二步,收款地址的管理節(jié)點首先確認(rèn)該地址歸其管理,然后檢查是否所有的輸出都已經(jīng)被多數(shù)節(jié)點確認(rèn)以及他們的簽名是否正確。如果檢查通過,節(jié)點將這些輸出加入他們的utxo列表(成為新的UTXO)并將交易加入txset列表。節(jié)點隨后將通知用戶“交易將被加入高級區(qū)塊中”(如果沒有加入,用戶將以此為證據(jù)問責(zé)節(jié)點)。一段時間后,所有的節(jié)點將txset列表發(fā)送給中央銀行進(jìn)行合并。
在交易過程中,節(jié)點之間并沒有直接通信,而是在用戶和節(jié)點之間完成,這降低了網(wǎng)絡(luò)傳輸?shù)呢?fù)荷,提升了RSCoin的整體性能。
由于每一個節(jié)點有自己的鏈條,RSCoin設(shè)計了交叉驗證的方式確保整個系統(tǒng)的整體性。節(jié)點進(jìn)行每一筆交易的相關(guān)操作都嚴(yán)格按順序產(chǎn)生日志,當(dāng)節(jié)點完成一個區(qū)塊時,日志和前一個區(qū)塊頭的Hash被作為自己的區(qū)塊頭。在節(jié)點進(jìn)行交易的對外通信時,會將區(qū)塊頭作為簽名信息的一部分進(jìn)行發(fā)送,這些信息會被交易相關(guān)的節(jié)點獲得。當(dāng)一個節(jié)點完成一個區(qū)塊時,節(jié)點的區(qū)塊中還需要同時包含自己的和已獲得的其他節(jié)點鏈條的最新區(qū)塊頭。這樣低層級鏈的一個區(qū)塊由這幾部分構(gòu)成:b = (h,txset,σ,mset),h代表區(qū)塊的hash,txset交易列表,σ代表節(jié)點簽名,mset代表其他節(jié)點的最新區(qū)塊信息。這樣不同節(jié)點鏈“你中有我,我中有你”完成交叉驗證。
白皮書中也分析了交叉驗證保障的安全性,結(jié)論是當(dāng)分片(shards)越多時,系統(tǒng)不安全的概率越高,系統(tǒng)實際運行時效率和分片數(shù)量需要進(jìn)行平衡。
高層級鏈合并所有節(jié)點的交易后,一個區(qū)塊由如下幾部分構(gòu)成:
他們分別代表區(qū)塊的hash,交易列表,央行簽名,下一個區(qū)塊授權(quán)的節(jié)點。高層級鏈負(fù)責(zé)貨幣的發(fā)行,發(fā)行數(shù)量和接收方由央行控制,產(chǎn)生的過程是產(chǎn)生新幣的同時轉(zhuǎn)移到需要接收的銀行地址??刂聘邔蛹夋湹闹醒脬y行通過記錄每個節(jié)點在交易的兩個步驟中發(fā)揮作用的次數(shù)以及每個節(jié)點的日志對節(jié)點進(jìn)行費用獎勵。
白皮書中對兩種交易在局域網(wǎng)和廣域網(wǎng)條件下進(jìn)行了吞吐量測試,并且選取了一個輸入兩個輸出,兩個輸入兩個輸出兩種交易模式,測試結(jié)果如下圖(摘自原文)。測試結(jié)果還反映吞吐量隨著節(jié)點數(shù)量的增加直線上升。
由于目前描述的RSCoin只是一個最小的概念版本,在RSCoin白皮書的最后,作者在幾個方面提到了RSCoin可能的拓展性。A、剪枝:為了防止央行的賬本過大,可以由央行對一些小額交易進(jìn)行統(tǒng)一匯總軋差,將最終軋差的結(jié)果記錄到鏈上,當(dāng)然這樣做的前提是中央銀行是完全誠信的。需要說明的是主要國家現(xiàn)行的央行清算體系也是基于對央行的信任和彼此的對賬,而對賬過程正是清算中效率較低的部分。如果進(jìn)行剪枝,對賬就是必要的。B、節(jié)點激勵:對于節(jié)點的激勵可以引入類似POS(權(quán)益證明)的機(jī)制,各節(jié)點存入貨幣在央行并根據(jù)存入數(shù)量的多少安排交易的處理數(shù)量,如果存在錯誤行為將從這些預(yù)存的貨幣中扣除一定金額作為懲罰。C、多種貨幣平臺:作者提到了一種大膽的設(shè)想,不同的中央銀行都是用同一個平臺發(fā)行不同的數(shù)字貨幣。這樣更利于跨境的資金清算,減少目前比特幣等數(shù)字貨幣面臨的夸幣種交易無法直接進(jìn)行的問題。但筆者認(rèn)為這完全是一種理想,貨幣關(guān)系國家安全和利益,方便和效率在國家利益面前不值一提,統(tǒng)一貨幣發(fā)行系統(tǒng)就像統(tǒng)一貨幣一樣困難。
無論如何RSCoin結(jié)合主權(quán)政府對于貨幣體系的要求,對于性能的要求。結(jié)合了區(qū)塊鏈和數(shù)字貨幣領(lǐng)域的多種創(chuàng)意和經(jīng)驗,提出了一套適合中央銀行發(fā)行數(shù)字貨幣的框架,并且在原理分析、實驗測試等方面展現(xiàn)了嚴(yán)謹(jǐn)?shù)膽B(tài)度和科學(xué)的方法。
注釋:本文主要基于英國國家數(shù)字貨幣原型白皮書撰寫:“Centrally Banked Cryptocurrencies”by George Danezis and Sarah Meiklejohn
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。