客戶(hù)端和服務(wù)器端的通信采用RESTful軟件架構(gòu)風(fēng)格家淤,服務(wù)器端的每個(gè)資源對(duì)應(yīng)一個(gè)唯一的URL地址异剥,客戶(hù)端將URL地址封裝成http請(qǐng)求發(fā)送到服務(wù)器端,請(qǐng)求對(duì)應(yīng)的資源或者執(zhí)行相應(yīng)操作絮重。
客戶(hù)端發(fā)送消息流程
?以轉(zhuǎn)賬為例冤寿,說(shuō)明EOS消息處理流程。通過(guò)cleos客戶(hù)端發(fā)起轉(zhuǎn)賬命令青伤,在main函數(shù)中督怜,解析transfer命令,通過(guò)create_transfer函數(shù)將交易發(fā)送者狠角、交易接收者号杠、token數(shù)量等信息封裝成mutable_variant_object對(duì)象,然后調(diào)用send_action函數(shù)丰歌,將交易信息發(fā)送到服務(wù)器端打包進(jìn)區(qū)塊鏈姨蟋。
服務(wù)器接收消息流程?
nodeos服務(wù)器先通過(guò)http_plugin插件接收客戶(hù)端發(fā)過(guò)來(lái)的http請(qǐng)求報(bào)文,然后解析出請(qǐng)求的URL地址和數(shù)據(jù)信息立帖,然后調(diào)用對(duì)應(yīng)的回調(diào)函數(shù)處理眼溶,并將結(jié)果返回給cleos客戶(hù)端。
生產(chǎn)區(qū)塊流程?
客戶(hù)端發(fā)送 ”/V1/chain/push_transaction” URL地址和交易信息到服務(wù)器端晓勇,然后服務(wù)器調(diào)用URL對(duì)應(yīng)的回調(diào)函數(shù)push_transaction將交易信息寫(xiě)入到一個(gè)待打包的區(qū)塊(_pending_block)中堂飞。
至此,一次完整的區(qū)塊處理流程就完成了绑咱,后面不斷重復(fù)打包過(guò)程绰筛,隨著時(shí)間推移,形成一個(gè)不可逆轉(zhuǎn)的區(qū)塊鏈羡玛。