致信底層鏈網絡中存在(zai)礦(kuang)工(gong)節(jie)點(dian)和(he)用(yong)戶節(jie)點(dian)兩種(zhong)類型,礦(kuang)工(gong)節(jie)點(dian)指繳納保證金后(hou),加入了候選陪審員列(lie)表的節(jie) 點(dian),這種(zhong)節(jie)點(dian)又分為(wei) Mediator 節(jie)點(dian)和(he) Jury 節(jie)點(dian)。
礦工節(jie)點都是全(quan)節(jie)點,保留(liu)了(le)全(quan)部的賬本數據。礦工節(jie)點需要 運行(xing)合約,進行(xing)共識(shi)等操作。礦工節(jie)點必須保證(zheng)長時(shi)間在線和良好(hao)的運算(suan)環境(CPU、內存、硬盤(pan)等)以及網 絡環境(高帶寬、低延遲)。
用戶(hu)節(jie)(jie)點(dian)是瀏覽和發(fa)起交易的節(jie)(jie)點(dian),用戶(hu)節(jie)(jie)點(dian)不需(xu)要(yao)保證是全賬本,允許更長時間的延遲(chi)。
我們假定礦工節(jie)點(dian)長時間在線(xian)(xian),而用戶節(jie)點(dian)會隨(sui)時上線(xian)(xian)和(he)離線(xian)(xian),但是不會出現大(da)量用戶節(jie)點(dian)同時上線(xian)(xian)和(he)同時離線(xian)(xian)的(de)情況發生。
每個(ge)節(jie)(jie)(jie)點存(cun)儲的數(shu)據,在(zai)理想狀態下(xia)是(shi)一致的,礦工節(jie)(jie)(jie)點要求(qiu)(qiu)較低的延遲,用(yong)戶節(jie)(jie)(jie)點不(bu)要求(qiu)(qiu)實時(shi)性(xing),但是(shi)在(zai)足(zu)夠長的時(shi)間(jian)后也(ye)能同步到所有(you)的數(shu)據。
致(zhi)信底層(ceng)鏈網絡中的Mediator 節點,會相互之間建立 P2P 連接,保證(zheng)了(le) Mediator 之間數據(ju)延遲更低。Jury 只(zhi)是(shi)臨 時(shi)組(zu)件的團(tuan)體,所以并不要求 Jury 內部每個(ge)陪(pei)審員之間兩兩連接。
有(you)(you)向無環(huan)圖(Directed Acyclic Graph)簡稱 DAG。在 DAG 中(zhong)沒(mei)有(you)(you)區(qu)(qu)塊(kuai)概念,所有(you)(you)數(shu)據并不(bu)打包(bao)成區(qu)(qu)塊(kuai)再用(yong)(yong) 區(qu)(qu)塊(kuai)鏈(lian)接(jie)區(qu)(qu)塊(kuai),而是(shi)每個用(yong)(yong)戶都(dou)可(ke)以提交一個數(shu)據單(dan)元(yuan)(yuan),這個數(shu)據單(dan)元(yuan)(yuan)里可(ke)以有(you)(you)很多東西(xi),比(bi)如交易(yi)、消息(xi)等。數(shu)據單(dan)元(yuan)(yuan)間(jian)通過引用(yong)(yong)關(guan)系鏈(lian)接(jie)起來, DAG的特(te)點是(shi)把(ba)數(shu)據單(dan)元(yuan)(yuan)的寫入(ru)操作異步化(hua),大量節(jie)點可(ke)以自主(zhu)(zhu)地把(ba)交易(yi)數(shu)據寫入(ru)DAG。 致(zhi)信區(qu)(qu)塊(kuai)鏈(lian) 使用(yong)(yong) DAG 的目的是(shi)為了解決(jue)傳統區(qu)(qu)塊(kuai)鏈(lian)中(zhong)只有(you)(you)一條主(zhu)(zhu)鏈(lian),無法并行執(zhi)行的問題,同(tong)時(shi)節(jie)省了打包(bao)交易(yi)出塊(kuai)的時(shi)間(jian)。
傳統的(de)(de)區(qu)塊(kuai)(kuai)鏈里,在生(sheng)成區(qu)塊(kuai)(kuai)之(zhi)前(qian),需要(yao)給所有的(de)(de)交(jiao)(jiao)(jiao)易(yi)做一個交(jiao)(jiao)(jiao)易(yi)池,礦工從交(jiao)(jiao)(jiao)易(yi)池中挑選要(yao)打(da)包的(de)(de)交(jiao)(jiao)(jiao) 易(yi),然后根據(ju)共(gong)識算法打(da)包為區(qu)塊(kuai)(kuai),最后放(fang)到鏈中。在交(jiao)(jiao)(jiao)易(yi)被打(da)包到區(qu)塊(kuai)(kuai)并(bing)(bing)廣播到全(quan)網(wang)之(zhi)前(qian),交(jiao)(jiao)(jiao)易(yi)是屬于未確 認(ren)狀態,這(zhe)阻塞了其他的(de)(de)交(jiao)(jiao)(jiao)易(yi)寫入,從而使得(de)傳統區(qu)塊(kuai)(kuai)鏈交(jiao)(jiao)(jiao)易(yi)確認(ren)時(shi)間非常長。 DAG并(bing)(bing)行(xing)處理的(de)(de)特(te)點(dian)使其有潛力(li)為各(ge)行(xing)業的(de)(de)經(jing)濟(ji)活動和(he)價值交(jiao)(jiao)(jiao)易(yi)帶來(lai)全(quan)新(xin)的(de)(de)技術革(ge)新(xin)與升級,在彌(mi)補不同交(jiao)(jiao)(jiao)易(yi)主體之(zhi)間信任鴻溝的(de)(de)同時(shi),通(tong)過時(shi)間戳、不可逆性(xing)、可追溯性(xing)、并(bing)(bing)行(xing)處理等(deng)特(te)點(dian),降低(di)交(jiao)(jiao)(jiao)易(yi)成本,實現具 有更強表達力(li)的(de)(de)智(zhi)能合(he)約,更快的(de)(de)交(jiao)(jiao)(jiao)易(yi)確認(ren),更廣泛的(de)(de)應用場(chang)景,更強的(de)(de)安(an)全(quan)性(xing)和(he)隱私保護。
要在(zai)致(zhi)(zhi)信雙層共識(shi)平臺中,Mediator是整個PalletOne的核(he)心部分,Mediator使(shi)用(yong)代(dai)理權益證明(Delegated Proof of Stake,DPoS)來(lai)進(jin)行共識(shi)。Mediator節點是由致(zhi)(zhi)信Token持(chi)有者投(tou)票(piao)產生。Mediator節點輪流“工作”,每個節點在(zai)一個Time Slot中負責的其中兩項工作包(bao)括(kuo)利用(yong)VRF(Verifiable Random Function,可(ke)驗證隨(sui)機函(han)數)算法隨(sui)機選擇陪審員(yuan)組建(jian)陪審團(tuan),和在(zai)陪審員(yuan)無法達成共識(shi)時進(jin)行仲裁。
陪(pei)審團(Jury)是維護致信區塊鏈安全性和完整性的基本(ben)單位。更具體的說,陪(pei)審團被委任(ren)運行(xing)和驗證智能合約以及管理(li)多重(zhong)簽名賬(zhang)戶。
為了實(shi)現安全和去中(zhong)心(xin)化的(de)設計(ji)(ji),陪(pei)(pei)審(shen)(shen)團(tuan)被(bei)設計(ji)(ji)為由許多參與(yu)者組成,這些參與(yu)者被(bei)稱為陪(pei)(pei)審(shen)(shen)員。Mediator“每受理(li)一個案(an)件”時(shi),從候選陪(pei)(pei)審(shen)(shen)員中(zhong)隨機選出一組陪(pei)(pei)審(shen)(shen)員組成陪(pei)(pei)審(shen)(shen)團(tuan),對“該案(an)件進行評審(shen)(shen)”,“案(an)件審(shen)(shen)理(li)”結束后,陪(pei)(pei)審(shen)(shen)團(tuan)會(hui)隨之(zhi)解(jie)散。陪(pei)(pei)審(shen)(shen)團(tuan)內(nei)采用(yong) BFT的(de)算法(fa)來實(shi)現共識。
智(zhi)能合約(Smart Contract)這個概(gai)念最早由 Nick Szabo 于 1996 年提出(chu),該概(gai)念在區塊鏈(lian)中被(bei)廣泛使用(yong), 并誕生了以太坊(fang)、量子(zi)鏈(lian)、EOS 等眾多支持圖靈完備的智(zhi)能合約的區塊鏈(lian)。概(gai)括下來,智(zhi)能合約具有以下特(te)性(xing):
(1) 智能合約(yue)(yue)必須(xu)是(shi)一(yi)種(zhong)合約(yue)(yue),是(shi)平(ping)等的(de)當事人之間執行(xing)約(yue)(yue)定內容的(de)協議。智能合約(yue)(yue)與傳統(tong)合約(yue)(yue)不同之 處在(zai)于,智能合約(yue)(yue)是(shi)數字形式(shi)的(de),是(shi)由計算機讀(du)取和執行(xing)。
(2) 智能合(he)約(yue)是部分或者完全自(zi)我(wo)執行(xing)或者自(zi)我(wo)強制的。
(3) 智能合約需要(yao)安(an)全的運行(xing)環境。合約運行(xing)環境必須(xu)安(an)全可靠(kao),執(zhi)行(xing)結果(guo)能在多方達成一致(zhi)。
(4) 只(zhi)有智能合約才能修改賬本數(shu)據。
出于(yu)智(zhi)(zhi)能(neng)合約的(de)(de)特點,合約安全以及在多(duo)語(yu)言,多(duo)平臺智(zhi)(zhi)能(neng)合約上的(de)(de)考慮,致信區塊鏈默認采用(yong)Docker容器化技(ji)術(shu)實現智(zhi)(zhi)能(neng)合約。在業(ye)界(jie),Docker 作為智(zhi)(zhi)能(neng)合約的(de)(de)虛(xu)擬機已經在 HyperLedger Fabric 中應用(yong),被大量的(de)(de)企業(ye)和(he)項(xiang)目所論證。
在致信區(qu)塊(kuai)鏈應用(yong)(yong)平臺中,所有類型的(de)(de)(de)服務都是通過合(he)(he)(he)(he)(he)(he)約(yue)來創(chuang)(chuang)建(jian)。合(he)(he)(he)(he)(he)(he)約(yue)的(de)(de)(de)創(chuang)(chuang)建(jian)是基(ji)于合(he)(he)(he)(he)(he)(he)約(yue)模(mo)板(ban)的(de)(de)(de),我們為常見的(de)(de)(de)場景提(ti)供了合(he)(he)(he)(he)(he)(he)約(yue)模(mo)板(ban)供用(yong)(yong)戶使(shi)用(yong)(yong)。用(yong)(yong)戶也可以自己創(chuang)(chuang)建(jian)新的(de)(de)(de)合(he)(he)(he)(he)(he)(he)約(yue)模(mo)板(ban)并(bing)部(bu)署到致信區(qu)塊(kuai)鏈上。合(he)(he)(he)(he)(he)(he)約(yue)模(mo)板(ban)的(de)(de)(de)部(bu)署需要(yao)調停中介(Mediator)來完成(cheng)。調停中介負責檢 查(cha)合(he)(he)(he)(he)(he)(he)約(yue)模(mo)板(ban)的(de)(de)(de)語法、規范等(deng),只(zhi)有滿足要(yao)求(qiu)的(de)(de)(de)合(he)(he)(he)(he)(he)(he)約(yue)模(mo)板(ban)才能部(bu)署成(cheng)功。部(bu)署成(cheng)功的(de)(de)(de)合(he)(he)(he)(he)(he)(he)約(yue)模(mo)板(ban)將(jiang)被(bei)保(bao)存在分布式(shi)存儲中以備以后部(bu)署合(he)(he)(he)(he)(he)(he)約(yue)時使(shi)用(yong)(yong)。
系統(tong)為(wei)不同(tong)的(de)(de)編(bian)程語(yu)言提供了不同(tong)的(de)(de)運(yun)行(xing)(xing)時 Docker 鏡像(xiang)(xiang),另外也(ye)提供了對(dui)應語(yu)言的(de)(de) SDK 幫助合(he)(he)(he)約(yue)開發(fa)人(ren)員快(kuai)速便捷(jie)的(de)(de)開發(fa)出(chu)智能(neng)合(he)(he)(he)約(yue)。合(he)(he)(he)約(yue)開發(fa)人(ren)員基于(yu)SDK 在(zai)本(ben)地編(bian)譯(yi)好合(he)(he)(he)約(yue)程序后(hou),只需要將編(bian)譯(yi)后(hou)的(de)(de)文件放到 致信區塊鏈(lian)進(jin)行(xing)(xing)發(fa)布(bu),發(fa)布(bu)后(hou)的(de)(de)合(he)(he)(he)約(yue)程序被(bei)稱為(wei)合(he)(he)(he)約(yue)模(mo)板(ban)。用戶基于(yu)模(mo)板(ban)創建(jian)合(he)(he)(he)約(yue)時,合(he)(he)(he)約(yue)執行(xing)(xing)節點(陪審(shen)員) 會根據合(he)(he)(he)約(yue)的(de)(de)語(yu)言選擇對(dui)應的(de)(de)運(yun)行(xing)(xing)時鏡像(xiang)(xiang),構建(jian)新的(de)(de)合(he)(he)(he)約(yue)模(mo)板(ban)鏡像(xiang)(xiang),并最終(zhong)實例(li)化合(he)(he)(he)約(yue)容(rong)器(qi),
合(he)(he)約(yue)模板就是基于致信區(qu)(qu)(qu)塊(kuai)鏈(lian)(lian)合(he)(he)約(yue) SDK,符合(he)(he)致信區(qu)(qu)(qu)塊(kuai)鏈(lian)(lian)合(he)(he)約(yue)規范的(de)(de)可(ke)執行程序。智能合(he)(he)約(yue)開發(fa)(fa)人員(yuan)使用(yong)自(zi)己熟悉的(de)(de)開發(fa)(fa)語言,在本地編寫和編譯好合(he)(he)約(yue)模板程序,另(ling)外(wai)出(chu)于開發(fa)(fa)調試(shi)的(de)(de)方便,后(hou)期 致信區(qu)(qu)(qu)塊(kuai)鏈(lian)(lian)會(hui)提供單(dan)機致信區(qu)(qu)(qu)塊(kuai)鏈(lian)(lian)網絡的(de)(de)模擬運行。