? ? ? ? 區(qū)塊鏈公鏈膘茎,無論是完全去中心化還是有效去中心化众弓,都是設(shè)計(jì)成基本可信的分布式結(jié)構(gòu)。理論上任何人都無法篡改公鏈的數(shù)據(jù)壁却。
? ? ? ? 公鏈數(shù)據(jù)展示方面有沒有缺陷呢?能否保證展示出來的數(shù)據(jù)就是公鏈可信的數(shù)據(jù)呢裸准?
? ? ? ? 這個擔(dān)憂來自某公鏈前不久一次接口服務(wù)器故障展东。
? ? ? ? 為了說明這個問題,先講一部電影炒俱,好像是香港的電影琅锻,里面有段內(nèi)容賭球,劉德華主演向胡,幾個人看電視觀看比賽結(jié)果恼蓬,然后一個人輸了。但其實(shí)他們在一起看的電視是被提前做了手腳僵芹,并不是真正的現(xiàn)場比賽〈τ玻現(xiàn)場比賽是正規(guī)的比賽,沒有人搞假球拇派。
? ? ? ? 如何保證你看到的比賽就是現(xiàn)場比賽情況呢荷辕?這也就是我今天想要說的。
? ? ? ? 公鏈數(shù)據(jù)無法篡改件豌,是真實(shí)可靠的疮方。但我用錢包、瀏覽器(水表)茧彤、各種DAPP看到的信息是公鏈的可信的信息嗎骡显?這些應(yīng)用采集的信息是公鏈可信的數(shù)據(jù)嗎?
? ? ? ? 這個公鏈節(jié)點(diǎn)故障曾掂,讓我認(rèn)識到公鏈展示方面需要解決兩個問題:1惫谤,接口調(diào)用的可靠性保障;2珠洗,接口調(diào)用數(shù)據(jù)的真實(shí)性保障溜歪。
? ? ? ? 先說下接口的可靠性保障,眾所周知许蓖,區(qū)塊鏈的一個特點(diǎn)是不會因某個或某幾個節(jié)點(diǎn)故障而受影響蝴猪。通過這次公鏈故障,了解到該公鏈接口調(diào)用僅僅指向了一個可信節(jié)點(diǎn)膊爪,這個節(jié)點(diǎn)故障后自阱,導(dǎo)致無法讀取公鏈數(shù)據(jù)。在以往中心化系統(tǒng)中蚁飒,這種情況是通過切換到熱備節(jié)點(diǎn)(服務(wù)器)动壤,保障不會因主節(jié)點(diǎn)(主服務(wù)器)而影響應(yīng)用萝喘。
? ? ? ? 所幸的是淮逻,該公鏈設(shè)計(jì)上的優(yōu)勢琼懊,本次故障僅僅影響歷史數(shù)據(jù)展示。幾個相關(guān)應(yīng)用也迅速調(diào)整策略爬早,改為類似中心化探測故障自動切換正澈哒桑可信節(jié)點(diǎn)的方式得以解決。
? ? ? ? 然而引申出我第二個擔(dān)心筛严,就是接口調(diào)用數(shù)據(jù)的真實(shí)性保障醉旦。
? ? ? ? 用類似中心化那種熱切換方式,可以保證避開故障節(jié)點(diǎn)桨啃,但如何確保該節(jié)點(diǎn)是否可信呢车胡?如果接口調(diào)用節(jié)點(diǎn)和熱切換節(jié)點(diǎn)都被黑客攻破,那么是否存在一些隱患呢照瘾?攻破區(qū)塊鏈51%的節(jié)點(diǎn)理論上不可行匈棘,但同時攻破兩個節(jié)點(diǎn)就容易了。
? ? ? ? 我個人估計(jì)所有的區(qū)塊鏈還未考慮到這部分析命,現(xiàn)在還是區(qū)塊鏈底層優(yōu)化階段主卫。接口這方面還不是目前區(qū)塊鏈最重要的部分,所以鹃愤,我也不班門弄斧了簇搅,簡單說下我個人不成熟的解決方法作為本文結(jié)尾吧:
? ? ? ? ? 1,接口調(diào)用節(jié)點(diǎn)的隨機(jī)性和熱切換的隨機(jī)性软吐;
? ? ? ? ? 2瘩将,接口調(diào)用采用隨機(jī)調(diào)用多個節(jié)點(diǎn)(比如三個),再進(jìn)行比對方式凹耙;
? ? ? ? ? 3鸟蟹,接口調(diào)用多個節(jié)點(diǎn)的策略采用區(qū)塊鏈底層的高效率共識方式,比如隨機(jī)拜占庭使兔。