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