出块过程 (1)close发送消息
生活随笔
收集整理的这篇文章主要介绍了
出块过程 (1)close发送消息
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1. 以转账为例,说明EOS消息处理流程
step1. cleos客户端发起转账命令,
step2. 解析transfer命令,通过create_transfer函数将交易发送者、交易接收者、token数量等信息封装成mutable_variant_object对象
step3. 调用send_action函数,将交易信息发送到服务器端
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);// 发送 ”/V1/chain/push_transaction” URL地址到服务器端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;// 和服务器建立连接do_connect(socket, server, port);// 发送http报文,并获取返回结果re = do_txrx(socket, request, status_code); }总结
以上是生活随笔为你收集整理的出块过程 (1)close发送消息的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 波卡链Substrate (6)Babe
- 下一篇: 出块过程(2)nodeos 服务器接收消