NEO的用戶的資產(chǎn)是如何儲(chǔ)存在鏈上的
很多NEO的用戶并沒(méi)有完全意識(shí)到他們對(duì)資產(chǎn)進(jìn)行轉(zhuǎn)賬時(shí)如何儲(chǔ)存在鏈上,下面的五張照片將讓你們更清晰的了解這個(gè)過(guò)程。
圖一
這個(gè)笑臉使用它最喜歡的錢包軟件來(lái)簽名并發(fā)起一筆名為Tx A的交易(例如,我們想象一個(gè)簡(jiǎn)單的GAS轉(zhuǎn)賬交易,A將GAS發(fā)送給他的朋友)。但Tx A如何提交給網(wǎng)絡(luò)?有兩種不同的協(xié)議可以中繼轉(zhuǎn)賬信息:遠(yuǎn)程過(guò)程調(diào)用(RPC)或點(diǎn)對(duì)點(diǎn)(P2P)。有許多開(kāi)放節(jié)點(diǎn)提供公共RPC訪問(wèn)(通過(guò)“sendrawtransaction”RPC調(diào)用的最常見(jiàn)方式),它們是下圖中的紅色節(jié)點(diǎn)。
用戶通過(guò)公共RPC節(jié)點(diǎn)調(diào)用“sendrawtransacTIon”提交Tx A
圖二
RPC節(jié)點(diǎn)(紅色節(jié)點(diǎn))存儲(chǔ)整個(gè)區(qū)塊鏈(目前為幾千兆字節(jié)),因此他們知道如何驗(yàn)證它并通過(guò)P2P協(xié)議將其傳播到其他P2P節(jié)點(diǎn)(藍(lán)色節(jié)點(diǎn))。
Tx A通過(guò)P2P協(xié)議傳播到其他節(jié)點(diǎn)
圖三
但為什么要將交易發(fā)送到整個(gè)網(wǎng)絡(luò)?是為了將交易發(fā)送給“特殊”節(jié)點(diǎn),也就是共識(shí)節(jié)點(diǎn)(綠色)。這些節(jié)點(diǎn)通過(guò)投票(每個(gè)NEO持有者都有投票權(quán))被選中,并且他們的公鑰對(duì)整個(gè)網(wǎng)絡(luò)公開(kāi)。但是,為避免被攻擊,他們的位置是未知的。這就是為什么每個(gè)人都在不斷重復(fù)提交交易信息。
交易不斷重新提交,直到達(dá)到共識(shí)節(jié)點(diǎn)(綠色)
圖四
目前,有七個(gè)被選中的共識(shí)節(jié)點(diǎn),它們共同努力,以便就允許將某些交易放在下一個(gè)區(qū)塊達(dá)成共識(shí)。dBFT的協(xié)議中沒(méi)有詳細(xì)描述一下細(xì)節(jié),但它包含三輪消息(通過(guò)網(wǎng)絡(luò)中繼),即使其中三分之一的共識(shí)節(jié)點(diǎn)產(chǎn)生故障,也能保證網(wǎng)絡(luò)完全正常運(yùn)行。每15秒,一個(gè)新的共識(shí)節(jié)點(diǎn)提出一個(gè)新的塊,稱為廣播節(jié)點(diǎn)(七個(gè)節(jié)點(diǎn)之一)。該方案能夠保證沒(méi)有任何一個(gè)共識(shí)節(jié)點(diǎn)比其他節(jié)點(diǎn)更強(qiáng)大。
廣播節(jié)點(diǎn)通過(guò)P2P協(xié)議提出了一個(gè)包含Tx A的新塊
圖五
最后,在15秒(或更長(zhǎng)時(shí)間,如果事務(wù)需要更長(zhǎng)時(shí)間才能到達(dá)共識(shí)節(jié)點(diǎn))之后,用戶可以再次使用公共RPC調(diào)用來(lái)獲得關(guān)于最新塊的信息。NEO 區(qū)塊鏈確保一個(gè)區(qū)塊即最終確認(rèn)(One Block Finality),這是非常了不起的,并且很獨(dú)特,其他已知公鏈都沒(méi)有這一特性,因此用戶只要收到包含其交易的區(qū)塊,就可以放心他的交易永遠(yuǎn)不會(huì)被撤銷回滾或失效。