Electrumx-Server啟動流程分析

從electrumx_server.py啟動:

Controller.py:

1、啟動時實(shí)例化Controller實(shí)例,實(shí)例化需要傳入lib/env.py中的Env對象,在Env對象中對初始化環(huán)境進(jìn)行設(shè)置。

詳情可對照官網(wǎng)文檔理解環(huán)境變量的具體含義:

https://electrumx.readthedocs.io/en/latest/environment.html

2、server/controller.py是Electrumx的服務(wù)管理客戶端,Controller包含守護(hù)進(jìn)程,區(qū)塊處理器,Mempool(守護(hù)進(jìn)程的內(nèi)存池),PeerManager(節(jié)點(diǎn)網(wǎng)絡(luò)管理器)等,當(dāng)區(qū)塊處理器首先趕上守護(hù)進(jìn)程時,服務(wù)器立即啟動,Controller繼承自server_base.py中的調(diào)ServerBase,controller中調(diào)用run()運(yùn)行的方法來自ServerBase。

Controller作為ServerBase的子類,重寫了父類中的方法,包括start_servers和shutdown,其中start_servers中默認(rèn)啟動了RCP服務(wù)。

默認(rèn)情況下start_server中創(chuàng)建了wait_for_bp_catchup的任務(wù),wait_for_bp_catchup(bp為block_proccessor縮寫)等待區(qū)塊處理器數(shù)據(jù)同步到和守護(hù)進(jìn)程一致,才啟動其他server(包括tcp和ssl)。

為了方便測試,一開始便啟動了tcp的服務(wù),在這里可以把這句注釋掉,以避免重復(fù)啟動相同服務(wù)。

結(jié)合上面的代碼和下圖理解Electrumx啟動流程:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容