您好,登錄后才能下訂單哦!
主動鏈接對端
connect( seed_node ); 鏈接peer節點
if (start_session( c )) { c->send_handshake (); //發送握手協議 }
c->send_handshake (); //初始化結構體,發送握手協議,協議最后要enqueue
handshake_initializer::populate
queue_write(); 發送緩沖過去[發送緩沖后,如何把緩沖發送過去?]
主動發送的握手數據內容
void
handshake_initializer::populate( handshake_message &hello) {
hello.network_version = net_version_base + net_version;
hello.chain_id = my_impl->chain_id; //系統選項可以設定
hello.node_id = my_impl->node_id;
hello.key = my_impl->get_authentication_key(); //公鑰
hello.time = std::chrono::system_clock::now().time_since_epoch().count();
hello.token = fc::sha256::hash(hello.time);
hello.sig = my_impl->sign_compact(hello.key, hello.token);
// If we couldn't sign, don't send a token.
if(hello.sig == chain::signature_type())
hello.token = sha256();
hello.p2p_address = my_impl->p2p_address + " - " + hello.node_id.str().substr(0,7);
#if defined( APPLE )
hello.os = "osx";
#elif defined( linux )
hello.os = "linux";
#elif defined( _MSC_VER )
hello.os = "win32";
#else
hello.os = "other";
#endif
hello.agent = my_impl->user_agent_name;
controller& cc = my_impl->chain_plug->chain();
hello.head_id = fc::sha256();
hello.last_irreversible_block_id = fc::sha256();
hello.head_num = cc.head_block_num();
hello.last_irreversible_block_num = cc.last_irreversible_block_num();
if( hello.last_irreversible_block_num ) {
try {
hello.last_irreversible_block_id = cc.get_block_id_for_num(hello.last_irreversible_block_num);
}
catch( const unknown_block_exception &ex) {
ilog("caught unkown_block");
hello.last_irreversible_block_num = 0;
}
}
if( hello.head_num ) {
try {
hello.head_id = cc.get_block_id_for_num( hello.head_num );
}
catch( const unknown_block_exception &ex) {
hello.head_num = 0;
}
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。