什么是DAG中的交易共識(shí)
如果采用基本的隨機(jī)游走算法,會(huì)導(dǎo)致新的交易批準(zhǔn)老的交易而不被懲罰;而如果采用超權(quán)重算法的話,比如給不同的交易設(shè)置一個(gè)權(quán)值,又會(huì)造成新交易始終優(yōu)先批準(zhǔn)高權(quán)值交易,很多權(quán)值較低的交易永遠(yuǎn)也得不到確認(rèn)。
一、DAG中的交易共識(shí)
目前交易的確認(rèn)在StreamNet中主要有三種方式:
· 第一種方式:所有tip覆蓋到的公共節(jié)點(diǎn)是被完全確認(rèn)的。舉一個(gè)例子,下圖中,TIp1引用或間接引用的交易為藍(lán)線條和黃線條覆蓋,而TIp2引用或間接引用的交易為黃線條覆蓋。那么被TIp1和TIp2共同覆蓋到的就是標(biāo)綠的交易,也就是被完全確認(rèn)的交易。
· 第二種方式:系統(tǒng)每隔1分鐘會(huì)發(fā)送一個(gè)Coordinator的tip附著在StreamNet上,這個(gè)tip被稱之為里程碑(milestone),所有被Coordinator引用的交易都是被確認(rèn)的。
· 第三種方式: 蒙特卡洛隨機(jī)游走(MCMC)方式,即使用基本的隨機(jī)tip選擇算法來選擇一個(gè)tip,如果一個(gè)交易被這個(gè)tip引用,那么它的可信度便增加1,經(jīng)過N次選擇后如果有M次被引用到了,那么其可信度便是M/N。
二、StreamNet主要算法
· 基于中心度的去COO起點(diǎn)選擇算法
現(xiàn)階段,在DAG中選擇tip的時(shí)候,不會(huì)從創(chuàng)世交易開始,而是會(huì)簡(jiǎn)單的以某個(gè)Coordinator作為起點(diǎn)出發(fā)來選擇tip ,這就會(huì)造成一個(gè)中心化的問題。所以在設(shè)計(jì)StreamNet的時(shí)候,首先要考慮的問題就是如何弱化COO而實(shí)現(xiàn)真正的分布式DAG,所以我們需要找到一個(gè)共識(shí)的交易作為起點(diǎn),而不是由中心化節(jié)點(diǎn)強(qiáng)制規(guī)定的Coordinator作為起點(diǎn)。
在此我們選擇Katz中心度作為選擇起點(diǎn)的標(biāo)準(zhǔn)。因?yàn)镾treamNet中的交易是不斷進(jìn)入到網(wǎng)絡(luò)中的,如果每一筆新交易的選擇都重新計(jì)算一次Katz中心度的話,那計(jì)算量會(huì)非常大,因此我們采用增量算法來計(jì)算:
其中,A表示交易之間的鏈接關(guān)系,k次方表示k階鏈接矩陣,α表示重要性權(quán)值向量,I是一個(gè)全部為1的矩陣。
值得注意的是,在計(jì)算的結(jié)果中,我們并不需要尋找到Katz中心度最大的交易,因?yàn)檫@永遠(yuǎn)是創(chuàng)世交易(Genesis),所以我們應(yīng)該在Katz中心度和離當(dāng)下時(shí)間最近的交易中找到這個(gè)初始節(jié)點(diǎn)。
· 考慮邊信息的交易權(quán)值算法
雙花問題的一個(gè)典型場(chǎng)景便是側(cè)鏈攻擊,攻擊者往往會(huì)在短時(shí)間內(nèi)發(fā)出多個(gè)交易快速增長(zhǎng)側(cè)鏈,并在它們相互之間進(jìn)行批準(zhǔn),一系列的欺騙性側(cè)鏈可能就會(huì)導(dǎo)致雙花成功。
為阻止這種情況發(fā)生,我們?cè)趦蓚€(gè)approve交易之間會(huì)做加權(quán)的set join,而這個(gè)權(quán)值的判定由邊的信息所確定,而邊的信息則由時(shí)間來確認(rèn)。通過使用邊的信息來對(duì)交易進(jìn)行重調(diào),從而將攻擊效應(yīng)進(jìn)行衰減,維護(hù)了網(wǎng)絡(luò)的平穩(wěn)運(yùn)行。
· 基于流式圖計(jì)算的權(quán)值更新算法
靜態(tài)的圖算法在更新節(jié)點(diǎn)權(quán)值的時(shí)候,需要從初始節(jié)點(diǎn)開始從頭計(jì)算每個(gè)節(jié)點(diǎn)的權(quán)值,這個(gè)計(jì)算的復(fù)雜度是非常高的。而如果我們把靜態(tài)計(jì)算的信息緩存起來,只在新的tip加入的時(shí)候更新已經(jīng)緩存的信息,那么新tip加入時(shí)計(jì)算的復(fù)雜度將會(huì)大大降低。
三、結(jié)語
現(xiàn)在DAG的方案已經(jīng)陸續(xù)從研討走向落地,業(yè)界有很多新穎的DAG方案正在被提出,從技術(shù)角度來說,DAG或許會(huì)對(duì)現(xiàn)有的區(qū)塊鏈項(xiàng)目帶來一次沖擊,一定程度上改變現(xiàn)有的區(qū)塊鏈設(shè)計(jì)思維。
DAG具有速度快,吞吐量高的優(yōu)勢(shì),隨著越來越多項(xiàng)目參與到DAG的生態(tài)發(fā)展中來,長(zhǎng)期看來,DAG是非常有前景的機(jī)制。Trias作為首先采用DAG技術(shù)的公鏈,創(chuàng)造性的設(shè)計(jì)了基于DAG的吞吐緩存層,從理論和現(xiàn)實(shí)率先做出了突破,在公鏈之爭(zhēng)中占得先機(jī)。