RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

以太坊無狀態(tài)客戶端是什么

電子設(shè)計 ? 來源:電子設(shè)計 ? 作者:電子設(shè)計 ? 2020-12-25 18:57 ? 次閱讀

現(xiàn)在有一個協(xié)議轉(zhuǎn)換現(xiàn)象,從理論上來說,它可以轉(zhuǎn)換成很多其他不同的協(xié)議,從數(shù)學(xué)上來看,它就像如下情況。假設(shè)我們使用狀態(tài)轉(zhuǎn)移,STF(S, B) -> S’,其中S和S’是狀態(tài),B是區(qū)塊(或者說它是轉(zhuǎn)賬T),并且STF是狀態(tài)轉(zhuǎn)移函數(shù)。那么,我們可以轉(zhuǎn)換為:

S -> S的根狀態(tài)(也就是說,Merkle樹所包含S的32位)。B -> (B, W),其中W是一個“見證者”,Merkle樹的分支會提供所有數(shù)據(jù)的價值,可以執(zhí)行讓B進(jìn)入STF-> STF’,這可以作為狀態(tài)根部的輸入,以及區(qū)塊鏈上的見證者,使用見證者作為“數(shù)據(jù)庫”,任何時候區(qū)塊的執(zhí)行都需要閱讀任何賬戶,存儲秘鑰或者其他狀態(tài)數(shù)據(jù)【如果見證者沒有包含一些需要被請求的數(shù)據(jù)】,并且輸出新的狀態(tài)根部。

這就是,全節(jié)點只會存儲狀態(tài)根部,并且它會成為礦工的責(zé)任來打包這些Merkle樹的分支(見證者),以及區(qū)塊,還有全節(jié)點會下載以及驗證這些擴(kuò)展的區(qū)塊。對于無狀態(tài)的全節(jié)點和常規(guī)的全節(jié)點來說,在網(wǎng)絡(luò)中共存,這都是有可能的;你需要獲得擁有區(qū)塊B的翻譯區(qū)塊,附上所需要的見證者,并且在無狀態(tài)節(jié)點存在的不同網(wǎng)絡(luò)協(xié)議上廣播(B, W);如果有礦工在這個無狀態(tài)網(wǎng)絡(luò)上挖出區(qū)塊,那么見證者可以很簡單地去除,同時區(qū)塊會在正常的網(wǎng)絡(luò)上進(jìn)行重新廣播。

假設(shè)真實協(xié)議中的見證者,最簡單的方法就是把它作為RLP編碼的對象,這會被客戶端解析為{sha3(x): x}關(guān)鍵價值圖譜;這個圖譜然后可以很簡單地嵌入到現(xiàn)在的以太坊中,作為“數(shù)據(jù)庫”布局。

將以上這個想法布局到以太坊上的局限在于,還是需要礦工成為存儲狀態(tài)的全節(jié)點。有人會假設(shè)這樣一個系統(tǒng),其中轉(zhuǎn)賬發(fā)出方需要存儲全狀態(tài)Trie(甚至只有和他們相關(guān)的部分),而且礦工也是無狀態(tài)的,但是問題在于以太坊的狀態(tài)存儲入口是動態(tài)的。例如,你可以假設(shè)getcodesize(sha3(sha3(…sha3(x)…)) % 2**160)的合約形式,其中會有幾千個sha3’s。這就導(dǎo)致進(jìn)入的賬戶代碼只有在幾百萬gas燃料的計算消耗完成后,才可能知道。因此,轉(zhuǎn)賬發(fā)出者可以創(chuàng)造一個轉(zhuǎn)賬,其中包含新賬戶的見證者,進(jìn)行很多計算,然后最后嘗試進(jìn)入一個沒有見證者的賬戶。這就和DAO軟分叉漏洞一樣。

其中一個的解決方案,就是讓轉(zhuǎn)賬包含這些賬戶的靜態(tài)列表;例如EIP 648,但是需要精確數(shù)字,而不是一個范圍。但是就會產(chǎn)生一個問題:到時候,轉(zhuǎn)賬會通過網(wǎng)絡(luò),賬戶狀態(tài),進(jìn)行擴(kuò)散,從而因此正確的Merkle樹分支可以作為見證者,也許會和轉(zhuǎn)賬生成時的正確數(shù)據(jù)不同。為了解決這個問題,我們把見證者放在轉(zhuǎn)賬中的簽名數(shù)據(jù)之外,并且讓包含轉(zhuǎn)賬信息的礦工在有需要地時候,在轉(zhuǎn)賬前對見證者進(jìn)行調(diào)整。如果礦工擁有對所有創(chuàng)建出來的新狀態(tài)樹節(jié)點,也就是說,在過去24小時,他們已經(jīng)獲得必要的信息來更新過去24小時公開轉(zhuǎn)賬的Merkle樹分支。
這項設(shè)計有如下優(yōu)勢:

1.礦工和全節(jié)點再也不需要存儲任何狀態(tài)。這會讓“快速同步”變地非常快(可能只需要幾秒)。

2 關(guān)于狀態(tài)存儲經(jīng)濟(jì)學(xué)的問題都會導(dǎo)致例如租賃的設(shè)計,并且甚至目前復(fù)雜的SSTORE支出/回款架構(gòu)就會消失,而且區(qū)塊鏈經(jīng)濟(jì)學(xué)能夠只專注于價格帶寬和計算,這會是更加容易的問題。

3. Disk IO對于全節(jié)點和礦工來說,就不會是個問題。Disk IO是以太坊上主要的DoS攻擊來源,而且甚至現(xiàn)在它好像是最容易發(fā)生的DoS因素。

4. 對指定帳戶列表的轉(zhuǎn)賬要求附帶地增加了高度的可并行性;這在很多方面是EIP 648的高配版本。

5. 對于狀態(tài)存儲的客戶端,賬戶列表讓客戶端能夠從disk預(yù)取存儲數(shù)據(jù),也許是并行的,大概率降低了DoS攻擊的漏洞。

6. 在分片區(qū)塊鏈中,通過在分片中對客戶端進(jìn)行調(diào)整,從而增加安全性;客戶端分片調(diào)整地越快,在拜占庭容錯模型中,這個架構(gòu)就更加安全。但是,在狀態(tài)存儲的客戶端模型中,被洗牌的客戶端就會下載新分片中的全部狀態(tài)。在無狀態(tài)的客戶端中,這部分成本為零,這就讓客戶端可以在它們創(chuàng)建的每個區(qū)塊間進(jìn)行調(diào)整。

但是這帶來一個問題:誰存儲了這個狀態(tài)?以太坊的關(guān)鍵優(yōu)勢就是這個平臺很容易使用,并且用戶不需要關(guān)心存儲私有狀態(tài)這類細(xì)節(jié)。因此,為了這類框架能夠很好地完成,我們需要復(fù)制類似的用戶經(jīng)驗。這是一個關(guān)于如何做到這一點的混合建議:

1.任何創(chuàng)造出來的新的狀態(tài)樹對象都會默認(rèn)被全節(jié)點保存3個月。這大約有2.5GB的存儲空間,而且這就好像“福利儲存”,這是基于自愿地基礎(chǔ)上由網(wǎng)絡(luò)提供。我們知道這個層次的服務(wù)當(dāng)然能夠基于自愿的基礎(chǔ)來提供,因為目前的輕節(jié)點結(jié)構(gòu)已經(jīng)是基于利他主義了。在3個月后,客戶端可以隨機(jī)地忘記,以至于例如一個12個月前接觸到的狀態(tài)樹對象,還會被25%的節(jié)點存儲,而且60個月之前的對象還被5%的節(jié)點存儲。客戶端能夠嘗試使用常規(guī)的輕節(jié)點協(xié)議,來調(diào)用這些對象。

2.希望確保特定數(shù)據(jù)段的可用性客戶端可以在狀態(tài)信道中進(jìn)行支付??蛻舳丝梢栽O(shè)置支付節(jié)點的通道,而且在“我放棄0.0001美元,并且默認(rèn)這筆支付會永遠(yuǎn)丟失。但是,如果你之后給某個對象提供哈希H,然后我簽名,之后這個0.0001美元會到你手上”這種模式下進(jìn)行有條件支付。這將標(biāo)志著一個可信的承諾:可能愿意為未來的對象解鎖那些資金,檔案節(jié)點可以進(jìn)入數(shù)以百萬計的這樣的安排,等待數(shù)據(jù)請求出現(xiàn),并成為收入流。

3.我們期望DAPP開發(fā)人員能夠讓他們的用戶來隨機(jī)存儲一部分的存儲秘鑰,在瀏覽器本地存儲中存儲與它們的DAPP相關(guān)的部分存儲密鑰。這甚至可以故意在Web3API中很容易做到。

事實上,我們希望能夠知道“檔案節(jié)點”的數(shù)量,可以永遠(yuǎn)存儲任何事物,并且持續(xù)足夠高來服務(wù)網(wǎng)絡(luò),直到在分片引入之后,整個狀態(tài)大小超過 1-10兆字節(jié),所以以上所說的可能甚至都不需要。

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 智能計算
    +關(guān)注

    關(guān)注

    0

    文章

    177

    瀏覽量

    16460
  • 以太坊
    +關(guān)注

    關(guān)注

    14

    文章

    1838

    瀏覽量

    31953
收藏 人收藏

    評論

    相關(guān)推薦

    邁威通信工業(yè)無線客戶端:智能制造的高效連接新解法

    隨著智能制造的興起,企業(yè)越來越依賴自動化和數(shù)字化技術(shù)來提高生產(chǎn)效率和靈活性。工業(yè)無線客戶端作為連接各個設(shè)備和系統(tǒng)的橋梁,其重要性日益凸顯。通過工業(yè)無線客戶端,可以實現(xiàn)設(shè)備間的實時數(shù)據(jù)交換和遠(yuǎn)程監(jiān)控,從而進(jìn)一步提升生產(chǎn)過程的智能化水平。
    的頭像 發(fā)表于 11-22 16:10 ?145次閱讀
    邁威通信工業(yè)無線<b class='flag-5'>客戶端</b>:智能制造的高效連接新解法

    NTP網(wǎng)絡(luò)時間服務(wù)器能帶同步多少客戶端?

    NTP網(wǎng)絡(luò)時間服務(wù)器能帶同步多少客戶端
    的頭像 發(fā)表于 09-04 10:43 ?420次閱讀
    NTP網(wǎng)絡(luò)時間服務(wù)器能帶同步多少<b class='flag-5'>客戶端</b>?

    Rambus推出DDR5客戶端時鐘驅(qū)動器

    在追求極致性能與效率的科技浪潮中,Rambus再次引領(lǐng)行業(yè)前行,正式宣布推出面向下一代高性能臺式電腦與筆記本電腦的DDR5客戶端時鐘驅(qū)動器(CKD)。這一創(chuàng)新舉措標(biāo)志著Rambus將其在服務(wù)器領(lǐng)域的先進(jìn)內(nèi)存接口技術(shù)成功擴(kuò)展至廣闊的客戶端市場,為PC用戶帶來前所未有的性能飛
    的頭像 發(fā)表于 09-03 15:26 ?523次閱讀

    如果ESP上的TCP客戶端與服務(wù)器斷開連接,如何啟用自動重連?

    ESP - TCP 客戶端 嵌入式 Linux 服務(wù)器 - TCP 服務(wù)器 如果ESP上的TCP客戶端與服務(wù)器斷開連接,如何啟用自動重連?
    發(fā)表于 07-17 06:25

    如何獲取連接的TCP客戶端的ESPCONN指針?

    我?guī)缀蹰喿x了 SDK API 指南版本 1.0.1 的所有文檔 并開始了解如何添加用戶 AT 命令。 這真的很簡單,只需撥打at_cmd_array_register。 BUT! 如何獲取連接的 TCP 客戶端的 ESPCONN 指針?
    發(fā)表于 07-12 14:54

    如何同時在ESP8266上運(yùn)行TCP客戶端和TCP服務(wù)?

    我們是 esp8266 的長期用戶,并在該芯片上運(yùn)行數(shù)千臺家庭自動化類別的現(xiàn)場設(shè)備。然而,一個小小的限制阻礙了我們開發(fā)一些更有趣和創(chuàng)新的產(chǎn)品。 要求:我們需要同時運(yùn)行 TCP 客戶端(連接
    發(fā)表于 07-08 08:26

    求助,關(guān)于ESP32C3 TCP客戶端連接斷線問題求解

    ESP32C3開啟AP模式做TCP服務(wù)器,手機(jī)做客戶端連接服務(wù)器;超過默認(rèn)最大連接數(shù)(5)以后,即使有部分客戶端斷開了,也無法再發(fā)起連接連接不上。一定需要服務(wù)器給客戶端發(fā)送數(shù)據(jù),確認(rèn)客戶端
    發(fā)表于 06-27 07:54

    請問esp32能支持多個客戶端同時連接嗎?

    根據(jù)我現(xiàn)在的測試結(jié)果,esp32作為ble server時同時支持一個客戶端連接,前一個客戶端必須斷開藍(lán)牙連接,后一個才能連接。實際esp32能支持多個客戶端同時連接嗎?有沒有相關(guān)例程?
    發(fā)表于 06-11 06:25

    服務(wù)測試和客戶端測試區(qū)別在哪

    服務(wù)測試和客戶端測試是軟件開發(fā)過程中的兩個重要環(huán)節(jié),它們分別針對服務(wù)器客戶端的軟件進(jìn)行測試。本文將詳細(xì)介紹服務(wù)測試和
    的頭像 發(fā)表于 05-30 15:27 ?3012次閱讀

    使用FreeRTOS+LwIP開發(fā)版做客戶端斷開后不能夠重新連接?

    請教下, 使用FreeRTOS+LwIP 開發(fā)版做客戶端斷開后不能夠重新連接 ? 具體描述如下: 1、開發(fā)版作為客戶端使用 2、初次上電能夠正常通訊,也就是 開發(fā)板可以發(fā)送數(shù)據(jù)到服務(wù)器
    發(fā)表于 04-30 07:48

    stm32 +lwip1.3.1客戶端異常導(dǎo)致網(wǎng)絡(luò)ping不通怎么解決?

    stm32上運(yùn)行l(wèi)wip作為服務(wù)器,如果客戶端異常了,發(fā)現(xiàn)在客戶端再也ping不通 網(wǎng)絡(luò)如果異常,交換機(jī)掛了,重啟后,客戶端怎么都ping不通stm32 有沒有遇到同樣的問題? 不是tcp的pcb被占用,ping都不能通,lw
    發(fā)表于 04-22 07:30

    HarmonyOS開發(fā)實例:【分布式新聞客戶端

    基于柵格布局、設(shè)備管理和多端協(xié)同,實現(xiàn)一次開發(fā),多端部署的分布式新聞客戶端頁面。
    的頭像 發(fā)表于 04-17 15:57 ?868次閱讀
    HarmonyOS開發(fā)實例:【分布式新聞<b class='flag-5'>客戶端</b>】

    配電網(wǎng)架空線路故障精確定位裝置:Web客戶端和手機(jī)客戶端樣式

    接下來,深圳鼎信智慧科技跟大家科普配電網(wǎng)架空線路故障精確定位裝置的Web客戶端和手機(jī)客戶端樣式: 在實際應(yīng)用中,行波雙測距原理具有較高的精度和可靠性,尤其適用于配網(wǎng)架空線路的故障定位。其優(yōu)點
    的頭像 發(fā)表于 01-30 17:47 ?767次閱讀

    適用于Linux的基于Rust的同步客戶端介紹

    一個簡單而優(yōu)雅的 GUI 同步客戶端,提供雙向同步。
    的頭像 發(fā)表于 01-05 11:32 ?619次閱讀
    適用于Linux的基于Rust的同步<b class='flag-5'>客戶端</b>介紹

    分享一款別樣的ssh客戶端-PortX

    目前支持ssh的客戶端有很多,比如putty、crt、xshell等,今天分享一款別樣的ssh客戶端-PortX,通過簡單但全面的UI,PortX為您提供了純粹的終端模擬體驗。
    的頭像 發(fā)表于 01-02 13:37 ?704次閱讀
    分享一款別樣的ssh<b class='flag-5'>客戶端</b>-PortX
    RM新时代网站-首页