以太坊RPC之getBalance調用流程分析

以下是RPC客戶端調用getBalance的時序圖:

主要流程:

1:通過區塊高度從HeaderChain中獲得header,header的數據以RLP格式保存在DatabaseReader這個接口中(實現類是。。)

2:通過header.root從Database這個接口(實現類是。。)中獲得trie,從而構造出stateDB

問題:獲得trie後,再通過address,可直接獲得此地址的account,然後便可直接獲得balance,就不需要下面這麼多步了,不知後續額外流程的用意何在...

3:通過address從stateDB中獲得stateObject,而stateobject由stateDB,address和account三個對象組成,前兩個已知,最後一個account是根據address從trie中獲得的,而trie就是第2步中構造stateDB時傳進去的(這也是上面問題所在)

4:從stateObject中的account中獲得這個address的balance。

關鍵信息解讀:

1:HeaderChain中所有header的信息保存在接口DatabaseReader的實現類中

2:trie的信息保存在DataBase接口中,通過header中的root值便可獲得對應的trie

3:trie中保存了每個賬戶的信息,通過address便可獲得trie中對應的賬戶

4:通過此調用流程,還未看出stateDB和stateObject的具體用途,留待後續分析

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章