出块过程 (1)close发送消息
生活随笔
收集整理的這篇文章主要介紹了
出块过程 (1)close发送消息
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 以轉(zhuǎn)賬為例,說明EOS消息處理流程
step1. cleos客戶端發(fā)起轉(zhuǎn)賬命令,
step2. 解析transfer命令,通過create_transfer函數(shù)將交易發(fā)送者、交易接收者、token數(shù)量等信息封裝成mutable_variant_object對象
step3. 調(diào)用send_action函數(shù),將交易信息發(fā)送到服務(wù)器端
main→send_actions→push_actions→push_transaction→call→do_http_call→do_connect(httpc.cpp)→do_txrx
./cleos transfer sender recipient amount memo
programs/cleos/main.cpp
main() { … send_actions({create_transfer(sender, recipient, amount, memo)}); … }void send_actions {auto result = push_actions( move(actions), extra_kcpu, compression);… }fc::variant push_actions {signed_transaction trx;trx.actions = std::forward<decltype(actions)>(actions);return push_transaction(trx, extra_kcpu, compression); }fc::variant push_transaction{trx.set_reference_block(ref_block_id);// 發(fā)送 ”/V1/chain/push_transaction” URL地址到服務(wù)器端if (!tx_dont_broadcast) {return call(push_txn_func, packed_transaction(trx, compression));} }fc::variant call{try {return eosio::client::http::do_http_call( url, path, fc::variant(v) );} }fc::variant do_http_call {// 將請求的URL封裝成http包request_stream << "POST " << path_prefix + path << " HTTP/1.0\r\n";request_stream << "Host: " << server << "\r\n";request_stream << "content-length: " << postjson.size() << "\r\n";request_stream << "Accept: */*\r\n";request_stream << "Connection: close\r\n\r\n";request_stream << postjson;// 和服務(wù)器建立連接do_connect(socket, server, port);// 發(fā)送http報文,并獲取返回結(jié)果re = do_txrx(socket, request, status_code); }總結(jié)
以上是生活随笔為你收集整理的出块过程 (1)close发送消息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 波卡链Substrate (6)Babe
- 下一篇: 出块过程(2)nodeos 服务器接收消