Closed qianxiaofeng closed 4 years ago
libraries/chain/controller.cpp signed_transaction get_on_block_transaction()
里设置的时候
trx.set_reference_block( self.head_block_id() );
这段代码需要研究一下
Currently can not get head block number in smart contract. Use tapos_block_num as native EOSIO reference block number of this transaction.
https://github.com/EOSIO/eos/blob/2a6f974b5dc224b1a9f9d4e32dab0eedf40cf626/libraries/chain/include/eosio/chain/transaction.hpp#L61
目前用 ref_block_num 以及 ref_block_prefix 看起来不能算出block_num.
https://github.com/EOSIO/eos/blob/2a6f974b5dc224b1a9f9d4e32dab0eedf40cf626/libraries/chain/include/eosio/chain/transaction.hpp#L59
具体可以参照如上EOS 代码.
下面是看代码容易弄混的变量名称.
last_irreversible_block_id() function: https://github.com/EOSIO/eos/blob/3689992fb1f22f5251f0ec8a72838f97e7403add/libraries/chain/controller.cpp#L2834
调用了 get_block_id_for_num() https://github.com/EOSIO/eos/blob/3689992fb1f22f5251f0ec8a72838f97e7403add/libraries/chain/controller.cpp#L2889
这里如果tapos_block_summary.block_id == block_num 由此推测. tapos_block_summary存储的是lib