基于DAG技術(shù)的通用區(qū)塊鏈編程平臺(tái)Nerthus介紹
Nerthus是一個(gè)基于DAG技術(shù)的通用的區(qū)塊鏈編程平臺(tái),一個(gè)去中心化分布式區(qū)塊鏈操作系統(tǒng)。Nerthus內(nèi)置圖靈完備的編程語(yǔ)言,用戶(hù)可以用之來(lái)建構(gòu)和定義他自己的各種特性,可以開(kāi)發(fā)自己的應(yīng)用與區(qū)塊鏈系統(tǒng),可以發(fā)行自己的貨幣。
背景
DAG,英文全稱(chēng)是 Directed Acyclic Graph(有向無(wú)環(huán)圖)。在圖論中,如果一個(gè)有向圖無(wú)法從某個(gè)頂點(diǎn)出發(fā)經(jīng)過(guò)若干條邊回到該點(diǎn),這個(gè)圖則叫有向無(wú)環(huán)圖。下圖便是一個(gè)典型的有向無(wú)環(huán)圖。圓代表頂點(diǎn),線(xiàn)叫邊,代表頂點(diǎn)與頂點(diǎn)之間的關(guān)系。
DAG 結(jié)構(gòu)由 IOTA 團(tuán)隊(duì)率先使用,之后 Byteball 借鑒 IOTA 的 DAG 結(jié)構(gòu),并加以改進(jìn)。在 IOTA 中,要驗(yàn)證新的交易前,必須直接驗(yàn)證之前的兩個(gè)交易,這也使得在這兩個(gè)交易之前所有被驗(yàn)證過(guò)的交易得到間接驗(yàn)證。在 DAG 中,頂點(diǎn)代表交易,帶箭頭的線(xiàn)代表交易的驗(yàn)證關(guān)系。在 IOTA 中,有一個(gè)權(quán)重積分的概念,所謂權(quán)重積分是指它自身的權(quán)重與它驗(yàn)證過(guò)的所有交易的自身權(quán)重之和。在DAG 結(jié)構(gòu)中,交易總是自己創(chuàng)建并發(fā)布。從理論上看,攻擊者總是可以建構(gòu)比它要推翻掉的那個(gè)交易權(quán)重更高的交易用以雙花。Byteball 在 IOTA 的基礎(chǔ)上,做了改進(jìn),引入主鏈與見(jiàn)證人概念,并鼓勵(lì)驗(yàn)證多個(gè)父輩交易單元。但是它在每個(gè)交易單元都有一個(gè)見(jiàn)證人列表,除了會(huì)造成單元數(shù)據(jù)變大之外,還會(huì)在惡意攻擊者嘗試雙花時(shí),故意發(fā)布不同見(jiàn)證人列表的雙花單元引起混亂。同時(shí)他的確認(rèn)機(jī)制是沿著一條 MC 前行的,一路遇到多少見(jiàn)證人,這都將增加交易證驗(yàn)的復(fù)雜度與不確定性。雖然交易最終會(huì)達(dá)到一個(gè)穩(wěn)定的確定性,但是交易確認(rèn)的時(shí)間是不確定的。NERTHUS 在 Byteball 的基礎(chǔ)上,做了進(jìn)一步的改進(jìn)——維護(hù)用戶(hù)級(jí)別的見(jiàn)證人列表。并受 DPOS 機(jī)制的啟發(fā),交易單元一旦發(fā)布且經(jīng)所有見(jiàn)證人共同簽署的見(jiàn)證單元驗(yàn)證后,該交易單元就是最終確認(rèn)的。具體情況,將在后面詳細(xì)介紹。
單元
Nerthus 底層數(shù)據(jù)結(jié)構(gòu)采用的不是像比特幣、以太坊那種傳統(tǒng)的鏈?zhǔn)浇Y(jié)構(gòu)模式。而是采用一種 DAG(有向無(wú)環(huán)圖)結(jié)構(gòu)模式。
上圖是 DAG 的結(jié)構(gòu)模型,圓表示頂點(diǎn),線(xiàn)條表示頂點(diǎn)與頂點(diǎn)的關(guān)系,箭頭表示從子單元到父輩單元的方向,G 是創(chuàng)世單元,每個(gè)單元,通過(guò)其箭頭所指的父輩單元,一直追溯,可達(dá)創(chuàng)世單元。對(duì)應(yīng)于 Nerthus,圓表示一個(gè)單元。Nerthus中的單元包含引用之前一個(gè)和多個(gè)單元作為其的父輩單元,以此建立單元次序。單元可以包含多條不同類(lèi)型的數(shù)據(jù),如支付,文本消息,智能合約等等。
DAG 中的每個(gè)新單元,驗(yàn)證并確認(rèn)其父輩單元,父輩單元的父輩單元,可達(dá)創(chuàng)世單元,并將其父輩單元的哈希包含到自己的單元里面。如果有人篡改數(shù)據(jù),其單元的哈希必將改變,那就會(huì)使得它與直接或間接驗(yàn)證確認(rèn)它的子單元中引用它的哈希不一致。如果要成功篡改單元數(shù)據(jù),需要與它的所有的子單元合作,子單元修改它引用的 Hash,這又會(huì)導(dǎo)致子單元的 Hash 發(fā)生改變,那么子單元又要與子單元的所有子單元合作,直到最后的子單元。所以,如果一個(gè)單元被廣播到網(wǎng)絡(luò)中,被其它單元驗(yàn)證確認(rèn)并建構(gòu)在其上后,篡改數(shù)據(jù)需要協(xié)調(diào)的人數(shù)便會(huì)呈指數(shù)級(jí)增長(zhǎng)。傳統(tǒng)的單線(xiàn)鏈?zhǔn)浇Y(jié)構(gòu),理論上它們要修改數(shù)據(jù),只需和后面幾個(gè)區(qū)塊達(dá)成一致,就可以達(dá)到篡改數(shù)據(jù)的目的(51%攻擊,通過(guò)算力快速產(chǎn)生幾個(gè)區(qū)塊,這些區(qū)塊都是自己控制的,相互合作,就可以篡改數(shù)據(jù)了)。DAG 這個(gè)模式相比來(lái)說(shuō),篡改數(shù)據(jù)的復(fù)雜度更高,更難以篡改。
雙花與地址順序單元系列鏈
在去中心化系統(tǒng)里面,有效防止雙花,是必要條件,更是基礎(chǔ)。如果不能有效防止雙花,整個(gè)系統(tǒng)就不成立了。DAG 通過(guò)下面協(xié)議規(guī)則解決雙花問(wèn)題。
1、 一個(gè)單元不能引用它的其它父單元直接或間接引用過(guò)的單元做父單元。
2、 一個(gè)地址如果創(chuàng)建發(fā)布超過(guò)一個(gè)單元,后發(fā)布的單元必須直接或間接地包含引用其之前發(fā)布的所有單元,形成這個(gè)地址的順序單元系列。
3、 如果一個(gè)地址發(fā)布的單元,違反規(guī)則二,發(fā)布一個(gè)或多個(gè),沒(méi)有順序引用關(guān)系的單元或單元系列,都會(huì)視為雙花,不論是否存在實(shí)質(zhì)性雙花行為。
4、 在遵守規(guī)則二的情況下,出現(xiàn)雙花問(wèn)題,順序單元系列里,發(fā)布較早的有效,發(fā)布晚的無(wú)效。如果不遵守規(guī)則二,發(fā)布多個(gè)非順序引用關(guān)系的單元或單元系列,根據(jù)最優(yōu)順序單元系列算法,只有一個(gè)單元或順序單元系列有效,其余單元或順序單元系列無(wú)效。
5、 如果一個(gè)地址的單元間接或直接包含引用兩個(gè)或以上的自己發(fā)布的沒(méi)有順序的單元,該單元無(wú)效,不論是否存在實(shí)質(zhì)性雙花行為。
圖二中,橙色實(shí)心圓點(diǎn)代表了是同一個(gè)地址所發(fā)布的所有單元。后面的直接或間接地包含前面的單元,形成一個(gè)有序的單元序列。
圖三中,橙色實(shí)心圓點(diǎn)與藍(lán)色實(shí)心圓點(diǎn)都是同一個(gè)地址所發(fā)布的單元。可以看出藍(lán)色實(shí)心圓點(diǎn)與橙色實(shí)心圓點(diǎn)之間沒(méi)有順序包含引用關(guān)系。這種情況下,只有一個(gè)順序單元系列被承認(rèn)。其它順序單元的所有交易都會(huì)被視為無(wú)效的。
圖四中,橙色實(shí)心圓點(diǎn)與藍(lán)色實(shí)心圓點(diǎn)都是同一個(gè)地址所發(fā)布的單元。藍(lán)色單元 D,間接包含引用了沒(méi)有順序關(guān)系的橙色單元與藍(lán)色單元。根據(jù)規(guī)則四,因此,單元 D 是不被承認(rèn)的無(wú)效單元。建構(gòu)在 D 之上的由該地址發(fā)布的后續(xù)單元,由于 D 引用了沒(méi)有順序關(guān)系的多個(gè)同地址單元,所以 D 的后續(xù)單元也間接地引用了它們,因而也都是無(wú)效的。
在圖二、圖三與圖四中,可以看到,從右到左,從一個(gè)單元出發(fā),用粗箭頭線(xiàn)指向它的一個(gè)父單元,它的這個(gè)父單元又用粗箭頭線(xiàn)指向這個(gè)父單元的一個(gè)父單元,直到創(chuàng)世塊,形成了一個(gè)鏈條,我們稱(chēng)其為地址順序單元系列鏈。
地址順序單元系列鏈?zhǔn)侵?,從一個(gè)子單元開(kāi)始,選出其最佳父單元,其最佳父單元又選出這個(gè)父單元的最佳父單元,直至創(chuàng)世塊。最佳父單元由單元高度、包含的見(jiàn)證單元數(shù),時(shí)間戳,包含該子單元的順序單元數(shù)量及路徑,共同計(jì)算一個(gè)權(quán)重而獲得。
根據(jù)規(guī)則五,兩條開(kāi)始相互獨(dú)立,而在后面的某一點(diǎn)上又相互交叉的地址順序單元系列,我們簡(jiǎn)化了其引起的不必要的復(fù)雜性。因而,如果出現(xiàn)兩條或多條地址順序單元系列鏈(為了簡(jiǎn)化表述,我們把同一地址發(fā)布的沒(méi)有包含引用關(guān)系的相互獨(dú)立單元,即使只有一個(gè)獨(dú)立的單元構(gòu)不成順序單元系列,稱(chēng)為地址順序單元系列鏈),根據(jù)規(guī)則四,相互獨(dú)立的地址順序單元序列,只有一條被認(rèn)為有效。用下面原則,選定一條地址順序單元系列鏈為有效,其余的皆為無(wú)效而不被承認(rèn)。
1、 如果出發(fā)點(diǎn)是無(wú)效的,那么其后續(xù)的所有都是無(wú)效的。在同一地址的多個(gè)不同地址順序單元系列中,如果在這些地址順序單元系列鏈中,第一個(gè)地址單元無(wú)效,那么這個(gè)地址順序單元系列鏈都無(wú)效。
2、 根據(jù)規(guī)則一,我們把問(wèn)題簡(jiǎn)化為,當(dāng)同一地址出現(xiàn)多個(gè)不同的地址順序單元系列時(shí),只需比較這些順序單元系列中的第一個(gè)地址單元,并選擇出一個(gè)最優(yōu)的地址單元,那么這個(gè)最優(yōu)地址單元所在的地址順序單元系列鏈就是有效的,其余的都是無(wú)效的。
見(jiàn)證人
單個(gè)地址順序單元中,每個(gè)單元都會(huì)有先后次序關(guān)系。當(dāng)出現(xiàn)雙花問(wèn)題時(shí),根據(jù)先后次序關(guān)系,判定早的單元有效,后的單元無(wú)效。這就很容易就解決了雙花問(wèn)題。但是,如果攻擊者發(fā)布故意多個(gè)沒(méi)有順序關(guān)系的單元或單元系列,那么情況就變得復(fù)雜了。因?yàn)樵?DAG 中,單元是可以自己創(chuàng)建并發(fā)布的,他可以選擇自己的父單元,可選擇自己的高度,偽造時(shí)間戳,他可以根據(jù)規(guī)則偽造出比他想要推翻的單元權(quán)重更高的單元,可以創(chuàng)建更多的單元來(lái)確認(rèn)這個(gè)雙花單元,用來(lái)進(jìn)行雙花。而且他可能會(huì)創(chuàng)建一個(gè)隱藏的單元系列鏈,然后在某一時(shí)刻公布這個(gè)單元系列鏈,把之前所有的單元全都推翻,更致命的是,你不知道他會(huì)在什么時(shí)候公布這條隱藏的鏈。為此,我們引入了見(jiàn)證人機(jī)制來(lái)解決這個(gè)問(wèn)題。
見(jiàn)證人機(jī)制是受傳統(tǒng)區(qū)塊鏈的委托權(quán)益證明(DPOS)啟發(fā)而設(shè)計(jì)的。見(jiàn)證人通過(guò)選舉產(chǎn)生,用戶(hù)可以提交競(jìng)選,并繳納一筆保證金后,就成為候選見(jiàn)證人。
系統(tǒng)根據(jù)候選見(jiàn)證人的得票數(shù),保證金,聲譽(yù)以及是否有實(shí)名信息,以及平時(shí)表現(xiàn)等,計(jì)算出一個(gè)指數(shù),并根據(jù)指數(shù),為其分配它的見(jiàn)證用戶(hù)。作為報(bào)酬,他會(huì)與其被見(jiàn)證用戶(hù)的所有其它見(jiàn)證人分享被見(jiàn)證用戶(hù)的所有單元的交易費(fèi),但見(jiàn)證者的報(bào)酬,會(huì)凍結(jié)三個(gè)月,三個(gè)月后方可領(lǐng)取。如果見(jiàn)證人長(zhǎng)時(shí)間不履行其職責(zé),不發(fā)布見(jiàn)證單元,將會(huì)被取消見(jiàn)證人資格,并在一定時(shí)間內(nèi)不得參選見(jiàn)證人。如果見(jiàn)證人不遵守見(jiàn)證規(guī)則,發(fā)布無(wú)效惡意見(jiàn)證區(qū)塊,將會(huì)被沒(méi)收保證金,并永遠(yuǎn)不得參選見(jiàn)證人。
每個(gè)用戶(hù)都有其見(jiàn)證人列表,這個(gè)見(jiàn)證人列表的數(shù)量為奇數(shù)。在用戶(hù)創(chuàng)建第一個(gè)單元之前,系統(tǒng)會(huì)為它分配一個(gè)見(jiàn)證人列表,并公布到網(wǎng)絡(luò)。網(wǎng)絡(luò)會(huì)維護(hù)每一個(gè)用戶(hù)的見(jiàn)證人列表。為了防止用戶(hù)與見(jiàn)證人串通,用戶(hù)無(wú)法選擇見(jiàn)證人,而見(jiàn)證人也無(wú)法選擇用戶(hù),并且會(huì)每間隔一定的時(shí)間,更新一次見(jiàn)證人列表,全網(wǎng)也會(huì)記錄所有的更新,并記錄見(jiàn)證人成為該用戶(hù)見(jiàn)證人的起止時(shí)間。
用戶(hù)發(fā)布單元后,其見(jiàn)證人列表中的見(jiàn)證人將給單元進(jìn)行見(jiàn)證確認(rèn),其過(guò)程如下:
1、 用戶(hù)發(fā)布單元到網(wǎng)絡(luò)(同時(shí)也直接發(fā)送給他的見(jiàn)證人)。
2、 見(jiàn)證人接收到單元,并與該被見(jiàn)證人的其他所有見(jiàn)證人通信,以確定所有見(jiàn)證人收到的單元是一致的。這是必要的步驟。如果一個(gè)惡意的用戶(hù),想攻擊網(wǎng)絡(luò),他可能會(huì)給不同的見(jiàn)證人發(fā)送不同的無(wú)序單元。如果見(jiàn)證人之間不進(jìn)行通信確認(rèn)的話(huà),每個(gè)見(jiàn)證人將會(huì)對(duì)不同的無(wú)序單元進(jìn)行確認(rèn),這樣系統(tǒng)將會(huì)進(jìn)入混亂狀態(tài)。舉個(gè)極端例子,某用戶(hù)擁有一個(gè) 21 人的見(jiàn)證人列表,在還沒(méi)形成單元系列時(shí),他同時(shí)發(fā)布出 21 個(gè)不同的無(wú)順序關(guān)系的單元,并分別給每個(gè)見(jiàn)證人發(fā)送一個(gè)不相同的單元。在見(jiàn)證人之間不進(jìn)行相互通信的情況下,都對(duì)收到的單元進(jìn)行確認(rèn)驗(yàn)證。那么就有 21 個(gè)獨(dú)立的單元同時(shí)有效,這肯定是不可接受的。
3、 如果所有在場(chǎng)見(jiàn)證人收到的單元是一致的,經(jīng)由所有在場(chǎng)見(jiàn)證人校驗(yàn),如果沒(méi)有錯(cuò)誤,則所有在場(chǎng)見(jiàn)證人共同簽署見(jiàn)證單元,并發(fā)布到網(wǎng)絡(luò)。在場(chǎng)見(jiàn)證人一定要超過(guò)該用戶(hù)見(jiàn)證人列表里所有見(jiàn)證人的 50%。用戶(hù)的見(jiàn)證人列表有 21 個(gè)見(jiàn)證人,那么需要的在場(chǎng)見(jiàn)證人至少要有 11個(gè)。之所以有在場(chǎng)見(jiàn)證人這個(gè)概念是因?yàn)?,可能存在網(wǎng)絡(luò)問(wèn)題、有時(shí)有些見(jiàn)證人離線(xiàn),或者有些見(jiàn)證人可能有惡意,留有 49%的冗余,以確保系統(tǒng)的健壯。
4、 如果所有在場(chǎng)見(jiàn)證人獲得的用戶(hù)單元是不一致的,他們將相互交換單元,并檢查這些單元是否存在有效包含關(guān)系,如果存在有效包含關(guān)系,以最后的子單元為準(zhǔn)。如果單元中在惡意含包關(guān)系(惡意包含關(guān)系指單元直接或間接包含引用了自己兩個(gè)非序順單元系列),則此單元被拋棄。如果多個(gè)單元間是相互獨(dú)立,沒(méi)有順序關(guān)系的,所有在場(chǎng)見(jiàn)證人根據(jù)最小哈希原則選擇其中一個(gè)單元作為有效單元,共同簽署見(jiàn)證單元,發(fā)布到網(wǎng)絡(luò)。
5、 見(jiàn)證單元一經(jīng)發(fā)布,該用戶(hù)被驗(yàn)證的單元及其引用自身的前輩單元皆被確認(rèn),并具有最終性。
見(jiàn)證規(guī)則:
1、 在同一分叉點(diǎn),同一驗(yàn)證者只能對(duì)其中的一個(gè)單元或單元系列投票,來(lái)作有效驗(yàn)證。
2、 如果用戶(hù)單元或單元系列已經(jīng)存在了驗(yàn)證單元,其后的驗(yàn)證單元只能在這條已有的驗(yàn)證單元的地址順序單元系列鏈上進(jìn)行,并且驗(yàn)證單元間也要建立次序關(guān)系。
3、 如果見(jiàn)證者違反上規(guī)則一和二,則其保證金及凍結(jié)的三個(gè)月交易手續(xù)費(fèi)都將被沒(méi)收,并且將永遠(yuǎn)不能成為見(jiàn)證人。
圖五中,橙色與藍(lán)色是同一地址發(fā)布的兩個(gè)獨(dú)立的順序單元序列,在它們的第一個(gè)單元之前,都沒(méi)有自己的單元,那么我們把沒(méi)有包含自己任何單元的單元稱(chēng)為 0 點(diǎn)單元。在這里分叉我們稱(chēng)為 0 點(diǎn)分叉。紫色的 V 單元是見(jiàn)證人簽署的驗(yàn)證單元,它確認(rèn)的是橙色地址順序單元系列。
圖六中,橙色地址序順單元系列在第一個(gè)驗(yàn)證單元后出現(xiàn)了 B 與 C 兩個(gè)分叉單元,驗(yàn)證單元選擇了 B,那么 B 就是有效的,C 是無(wú)效的。我們以橙色單元為出發(fā)點(diǎn),排除與地址無(wú)關(guān)的節(jié)點(diǎn)單元計(jì)數(shù),B 與 C 處于第四層的位置。我們稱(chēng)為 4 分叉點(diǎn)。
在 0 分叉點(diǎn)上,見(jiàn)證單元支持了橙色,在 4 分叉點(diǎn)上它支持了 B,根據(jù)見(jiàn)證規(guī)則一,在 0 分叉點(diǎn)上與 4 分叉點(diǎn)上任何現(xiàn)有或后來(lái)可能偽造的其它地址順序單元系列或單元都是無(wú)效的。根據(jù)見(jiàn)證規(guī)則二,如果用戶(hù)單元或單元系列已經(jīng)存在了驗(yàn)證單元,其后的驗(yàn)證單元只能在這條已有驗(yàn)證單元的地址順序單元系列鏈上進(jìn)行,并且驗(yàn)證單元間也要建立次序關(guān)系。那就可以確保任何用戶(hù)地址,都只有一條明確清晰的被認(rèn)可的順序單元系列。
最終性
比特幣與以太坊,有一個(gè)最大的問(wèn)題就是沒(méi)有一個(gè)確定的不可更改的最終狀態(tài)。理論是,如果有足夠的算力,足夠的出塊速度,產(chǎn)生一條更長(zhǎng)的隱藏鏈,就可以把之前的區(qū)塊推翻。Nerthus 單元經(jīng)過(guò)見(jiàn)證人發(fā)布見(jiàn)證區(qū)塊后,就已是最終確定的狀態(tài),無(wú)法推翻。
確認(rèn)時(shí)間
確認(rèn)時(shí)間取決于見(jiàn)證者發(fā)布見(jiàn)證區(qū)塊的時(shí)間。我們把見(jiàn)證者發(fā)布見(jiàn)證區(qū)塊的時(shí)間分為加急,急,快,普通,慢五個(gè)等級(jí),每個(gè)等級(jí)需要支付的驗(yàn)證費(fèi)用不同,以平衡見(jiàn)證者的負(fù)載及被見(jiàn)證者的時(shí)間需求。最快的加急,在不考慮網(wǎng)絡(luò)狀況的情況下,一秒內(nèi)完成。
NERTHUS 的五大突破
1、 更徹底去中心化
傳統(tǒng)的區(qū)塊+鏈?zhǔn)浇Y(jié)構(gòu),需要有一個(gè)類(lèi)中心化的操作,即需要一個(gè)記賬人,將當(dāng)前所有交易進(jìn)行驗(yàn)證處理,然后打包到一個(gè)區(qū)塊,再發(fā)布到網(wǎng)絡(luò)。而 Nerthus系統(tǒng),如上所述,采用的是單元+DAG 結(jié)構(gòu),沒(méi)有區(qū)塊這一概念。所有單元由用戶(hù)自己創(chuàng)建與發(fā)布。其驗(yàn)證與確認(rèn)由引用其作為先輩單元的后輩單元來(lái)承擔(dān)。無(wú)需傳統(tǒng)區(qū)塊+鏈?zhǔn)浇Y(jié)構(gòu)那樣,需要一個(gè)記賬人,將當(dāng)前所有交易打包到區(qū)塊這一中心化的操作,因而是一種更徹底的去中心化系統(tǒng)。
2、 無(wú)吞吐量瓶頸
因?yàn)閭鹘y(tǒng)區(qū)塊+鏈?zhǔn)浇Y(jié)構(gòu)存在著中心化的操作過(guò)程,即需要記賬人將交易打包到區(qū)塊。那么區(qū)塊鏈系統(tǒng)處理交易能力的大小,必定受制于以下三點(diǎn):(1)記賬人節(jié)點(diǎn)機(jī)器的性能;(2)記賬人節(jié)點(diǎn)的網(wǎng)絡(luò)帶寬;(3)區(qū)塊的大小。因?yàn)榇嬖谶@一中心化色彩的操作,無(wú)論怎樣優(yōu)化,始終都會(huì)存在著一個(gè)處理能力的瓶頸點(diǎn)。如上所述,Nerthus 系統(tǒng),采用的是單元+DAG 結(jié)構(gòu),沒(méi)有記賬人打包區(qū)塊這一中心化的操作,因此也不存在區(qū)塊這一概念。單元由用戶(hù)創(chuàng)建發(fā)布,并由其它單元驗(yàn)證確認(rèn),因而不存在吞吐量瓶頸。
3、 無(wú)區(qū)塊擴(kuò)容與數(shù)據(jù)膨脹的悖論性?xún)呻y
傳統(tǒng)區(qū)塊+鏈?zhǔn)浇Y(jié)構(gòu)需要所有交易要打包到區(qū)塊才有效。若區(qū)塊的容量設(shè)置小,當(dāng)交易量大時(shí),很多交易無(wú)法及時(shí)打包進(jìn)區(qū)塊。若區(qū)塊容量設(shè)置大,則會(huì)使區(qū)塊鏈數(shù)據(jù)迅速膨脹,普通個(gè)人電腦無(wú)法運(yùn)行全節(jié)點(diǎn),只有少數(shù)人才可能運(yùn)行全節(jié)點(diǎn),會(huì)造成中心化的結(jié)果。這也是比特幣擴(kuò)容之爭(zhēng)的根本矛盾點(diǎn)。如上所述,Nerthus 沒(méi)有區(qū)塊這一概念,所以對(duì)于傳統(tǒng)區(qū)塊+鏈?zhǔn)浇Y(jié)構(gòu)先天性的悖論兩難問(wèn)題,在 Nerthus 中就根本不存在。
4、 明確可預(yù)期的最終性
傳統(tǒng)區(qū)塊+鏈?zhǔn)浇Y(jié)構(gòu),不排除可能同時(shí)產(chǎn)生兩個(gè)甚至多個(gè)區(qū)塊,由此導(dǎo)致分叉。對(duì)于出現(xiàn)分叉的情況,傳統(tǒng)區(qū)塊鏈將以最長(zhǎng)鏈作為有效鏈。該機(jī)制在理論上會(huì)將無(wú)法確定最終性,因?yàn)闊o(wú)法保證是否存在一條隱藏長(zhǎng)鏈。而 nerthus 通過(guò)見(jiàn)證人機(jī)制,只要通過(guò)見(jiàn)證人發(fā)布的見(jiàn)證單元驗(yàn)證確認(rèn),即具最終性,無(wú)法推翻。
5、 可選交易確認(rèn)速度
見(jiàn)證人發(fā)布見(jiàn)證區(qū)塊分為加急、急、快、普通、慢五個(gè)等級(jí)。用戶(hù)可根據(jù)自身需求,選擇交易確認(rèn)速度。
NERTHUS 的生態(tài)系統(tǒng)與三層架構(gòu)
Nerthus 是一個(gè)通用的智能合約平臺(tái)與區(qū)塊鏈操作系統(tǒng)。同時(shí)也致力于打造一個(gè)基于 Nerthus 的生態(tài)系統(tǒng)。
Nerthus 在底層采用單元+DAG 結(jié)構(gòu),無(wú)需記賬者打包,打造了一個(gè)更為徹底的去中心化區(qū)塊鏈系統(tǒng)。一個(gè)沒(méi)有吞吐量瓶頸限制的區(qū)塊鏈系統(tǒng),是 Nerthus的核心部分,也是 Nerthus 提供的基礎(chǔ)設(shè)施。在整個(gè) Nerthus 系統(tǒng)中,它處于底層,是基礎(chǔ)層。
在 Nerthus 基礎(chǔ)層之上,我們還引入了服務(wù)層,以供基于 Nerthus 開(kāi)發(fā)的開(kāi)發(fā)者快速開(kāi)發(fā)各種應(yīng)用。在服務(wù)層中,我們除了封裝好核心層的各種 API 之外,還提供了區(qū)塊鏈翻譯系統(tǒng)與側(cè)鏈系統(tǒng)。區(qū)塊鏈翻譯系統(tǒng)主要是指,使兩個(gè)相互獨(dú)立的區(qū)塊鏈,能夠相互讀懂對(duì)方,能夠無(wú)障礙通迅。側(cè)鏈系統(tǒng)是指企業(yè)用戶(hù),可以快速生成基于 Nerthus 的私有鏈和聯(lián)盟鏈,并鏈結(jié)在 Nerthus 主鏈上,可以利用 Nerthus 翻譯系統(tǒng)與其它鏈相互通信與交易。建立一個(gè)良好的生態(tài)系統(tǒng),除了擁有先進(jìn)性技術(shù)之外,還應(yīng)該能夠整合各種資源。區(qū)塊鏈翻譯系統(tǒng),主要目的在于整合現(xiàn)有的各種區(qū)塊鏈資源,讓現(xiàn)有的各個(gè)區(qū)塊鏈項(xiàng)目,通過(guò) Nerthus 能夠相互通訊,并且能夠相互交互,成為 Nerthus 生態(tài)圈的一環(huán)。而基于 Nerthus 的應(yīng)用開(kāi)發(fā)者,能開(kāi)發(fā)出跨越各種鏈的應(yīng)用。而側(cè)鏈系統(tǒng)則為建立聯(lián)盟鏈與私有鏈的企業(yè)與機(jī)構(gòu),提供一個(gè)快速、低成本的方式。雖然這些企業(yè)與機(jī)構(gòu)因?yàn)楦鞣N原因,只能建立聯(lián)盟鏈或私有鏈,但他們依然有與其它公有鏈用戶(hù)的通訊交易需求,Nerthus 的側(cè)鏈系統(tǒng)正好為它們提供這樣的功能接口。
在服務(wù)層之上,是 Nerthus 的應(yīng)用層。Nerthus 應(yīng)用層是指,基于 Nerthus 上開(kāi)發(fā)的各種區(qū)塊鏈應(yīng)用,這些應(yīng)用主要由第三方開(kāi)發(fā)者開(kāi)發(fā)。目前,區(qū)塊鏈的各種應(yīng)用,最典型的比如錢(qián)包,用戶(hù)體驗(yàn)還不是很好。區(qū)塊鏈開(kāi)發(fā)者更多的還是注重于功能的實(shí)現(xiàn),對(duì)于用戶(hù)體驗(yàn)關(guān)注度不是很高。一項(xiàng)技術(shù),一個(gè)系統(tǒng),一項(xiàng)應(yīng)用,如果想要大家都使用,用戶(hù)體驗(yàn)是非常重要的一環(huán)。Nerthus 非常關(guān)注用戶(hù)體驗(yàn),借鑒 IOS 的經(jīng)驗(yàn),將建立一套 Nerthus 應(yīng)用層的規(guī)范與標(biāo)準(zhǔn)。
Nerthus 核心基礎(chǔ)層是 Nerthus 生態(tài)系統(tǒng)的根基。Nerthus 上的開(kāi)發(fā)者以及基于各區(qū)塊鏈系統(tǒng),是 Nerthus 生態(tài)中的上游參與者,我們?cè)诜?wù)層為他們提供各種便利的服務(wù)接口。普通用戶(hù)則是 Nerthus 生態(tài)中的消費(fèi)者,我們制定一套用戶(hù)友好的應(yīng)用層規(guī)范標(biāo)準(zhǔn),方便普通用戶(hù)體驗(yàn)。
Witstone 與 OVM
智能合約編程語(yǔ)言與運(yùn)行環(huán)境是實(shí)現(xiàn)可編程的區(qū)塊鏈操作系統(tǒng)的基礎(chǔ)設(shè)施。OVM 是專(zhuān)門(mén)為 Nerthus 區(qū)塊鏈系統(tǒng)研發(fā)的虛擬機(jī),為 Nerthus 智能合約提供安全可靠高性能的運(yùn)行環(huán)境。
同時(shí),我們還提供了一門(mén)編寫(xiě) Nerthus 智能合約的語(yǔ)言——Witstone。Witstone 是一種類(lèi)似于 Javascript 的腳本語(yǔ)言,從語(yǔ)言層面上加入了對(duì) Nerthus一些特性的支持。Witstone 是一門(mén)簡(jiǎn)單易用、易上手的智能合約編程語(yǔ)言,開(kāi)發(fā)者無(wú)需多大學(xué)習(xí)成本,在短時(shí)間內(nèi)就能編寫(xiě)出 Nerthus 智能合約。
NERTHUS 代幣
NERTHUS 將提供 NERTHUS 代幣。NERTHUS 代幣是維護(hù) NERTHUS 系統(tǒng)的血液與燃料。用戶(hù)創(chuàng)建發(fā)布單元需要支付給見(jiàn)證人見(jiàn)證費(fèi),運(yùn)行智能合約需要支付計(jì)步費(fèi)。NERTHUS 代幣總量為 100 億。
總結(jié)
Nerthus 系統(tǒng)與以太坊一樣,致力于打造一個(gè)通用的智能合約編程平臺(tái)與區(qū)塊鏈操作系統(tǒng)。Nerthus 有自己的圖靈完備的編程語(yǔ)言 Witstone,以及運(yùn)行環(huán)境OVM。與以太坊不同的是,我們?cè)诘讓邮褂?DAG 技術(shù),有效地解決了傳統(tǒng)區(qū)塊鏈系統(tǒng)面臨的低吞吐量,交易確認(rèn)延時(shí),區(qū)塊膨脹等區(qū)塊鏈?zhǔn)浇Y(jié)構(gòu)先天性的悖論問(wèn)題。在智能合約方面,為了使其更具實(shí)用性,Nerthus 系統(tǒng)設(shè)計(jì)了一套鏈外數(shù)據(jù)驗(yàn)證確認(rèn)共識(shí)的機(jī)制,使之前智能合約難以實(shí)現(xiàn)的場(chǎng)景,變成了可由智能合約實(shí)現(xiàn)的領(lǐng)域。Nerthus 將推動(dòng)智能合約在現(xiàn)實(shí)世界的普及應(yīng)用。