RaiBlocks(現(xiàn)己更名為Nano)真的是一個(gè)很有意思的項(xiàng)目,刷新的我對(duì)區(qū)塊鏈的認(rèn)知。相對(duì)于一般的區(qū)塊鏈技術(shù),RaiBlocks創(chuàng)新性的采用了一個(gè)帳戶一條鏈的方式,帳戶相關(guān)的數(shù)據(jù)單獨(dú)保存,不與其它帳戶共享數(shù)據(jù),從而使所有的ts都可以并行執(zhí)行,解決了ts處理速度的瓶頸限制,從而解決了scalability的問題,而這,正是目前區(qū)塊鏈?zhǔn)澜缢鎸?duì)的最大的問題,也是其它項(xiàng)目試圖解決但是到目前為止尚未實(shí)現(xiàn)的目的。
現(xiàn)在,有一個(gè)問題擺在了面前,既然RaiBlocks具有這樣好的可擴(kuò)展性,那么如果給RaiBlocks加上執(zhí)行代碼的能力,是否能夠解決現(xiàn)在困擾以太坊的擴(kuò)容的問題呢。現(xiàn)在思考的結(jié)果是很困難。為了理解為什么,就要解決RaiBlocks是怎樣達(dá)到擴(kuò)容效果的:發(fā)送賬號(hào)創(chuàng)建一個(gè)send block,在處理這個(gè)send block時(shí),發(fā)送方在自己的存儲(chǔ)空間里減去發(fā)送的數(shù)額,接收賬號(hào)監(jiān)聽到這個(gè)send block后,再創(chuàng)建一個(gè)receive block,在處理 個(gè)block時(shí),接收賬號(hào)在自己的存儲(chǔ)空間里加上發(fā)送的數(shù)額,這樣一個(gè)完整的傳輸就完成了。也就是說RaiBlocks的每個(gè)帳戶其實(shí)只需維護(hù)一個(gè)變量即可。由于在發(fā)送和接收時(shí),沒有操作除自身賬號(hào)以外的數(shù)據(jù),所以不同的賬號(hào)之間的發(fā)送和接收的處理可以達(dá)到并行的效果。正像團(tuán)隊(duì)所說的,他們奉行的理念是:do one thing and do it well,研發(fā)人員真的是把做一件事執(zhí)行到了極致。
而當(dāng)用到智能合約的時(shí)候,保存的數(shù)據(jù)可就多種多樣了,而這些數(shù)據(jù)很多是要被多個(gè)帳戶所共享的。這個(gè)時(shí)候,保持?jǐn)?shù)據(jù)的同步就變得非常的困難。由于RaiBlocks是采用一個(gè)帳戶一條鏈的方式,如果要訪問其它帳戶的數(shù)據(jù),如何保持?jǐn)?shù)據(jù)的同步,換句話說,如何保證每個(gè)結(jié)點(diǎn)所執(zhí)行的結(jié)果的一致性,或者說共識(shí)就變得非常的困難了。