提交 f552ca6f 编写于 作者: A Anton Perkov

fixed check in produce_info::active, unpack producer_key, send deferred transaction draft #2227

上级 a51bb3b5
......@@ -227,14 +227,13 @@ namespace eosiosystem {
});
}
//create or replace deferred transaction
/* XXX
refund act;
act.owner = from;
//refund act;
//act.owner = from;
eosio::transaction out( now() + refund_delay + refund_expiration_time );
out.actions.emplace_back( permission_level{ from, N(active) }, _self, N(refund), act );
out.actions.emplace_back( permission_level{ from, N(active) }, _self, N(refund), from );
out.delay_sec = refund_delay;
out.send( from, receiver );
*/
if ( asset(0) < unstake_net_quantity + unstake_cpu_quantity ) {
decrease_voting_power( from, unstake_net_quantity + unstake_cpu_quantity );
}
......
......@@ -69,7 +69,7 @@ namespace eosiosystem {
uint64_t primary_key()const { return owner; }
uint128_t by_votes()const { return total_votes; }
bool active() const { return packed_key.size() == sizeof(public_key); }
bool active() const { return 0 < packed_key.size(); }
EOSLIB_SERIALIZE( producer_info, (owner)(total_votes)(prefs)(packed_key)
(per_block_payments)(last_rewards_claim)
......
......@@ -58,23 +58,27 @@ namespace eosiosystem {
* @pre authority of producer to register
*
*/
void system_contract::regproducer( const account_name producer, const bytes& producer_key, const eosio_parameters& prefs ) {
void system_contract::regproducer( const account_name producer, const bytes& packed_producer_key, const eosio_parameters& prefs ) {
//eosio::print("produce_key: ", producer_key.size(), ", sizeof(public_key): ", sizeof(public_key), "\n");
require_auth( producer );
producers_table producers_tbl( _self, _self );
auto prod = producers_tbl.find( producer );
//check that we can unpack producer key
public_key producer_key = eosio::unpack<public_key>( packed_producer_key );
if ( prod != producers_tbl.end() ) {
producers_tbl.modify( prod, producer, [&]( producer_info& info ){
info.prefs = prefs;
info.packed_key = producer_key;
info.packed_key = eosio::pack<public_key>( producer_key );
});
} else {
producers_tbl.emplace( producer, [&]( producer_info& info ){
info.owner = producer;
info.total_votes = 0;
info.prefs = prefs;
info.packed_key = producer_key;
info.packed_key = eosio::pack<public_key>( producer_key );
});
}
}
......@@ -232,7 +236,8 @@ namespace eosiosystem {
schedule.producers.emplace_back();
schedule.producers.back().producer_name = it->owner;
eosio_assert( sizeof(schedule.producers.back().block_signing_key) == it->packed_key.size(), "size mismatch" );
std::copy( it->packed_key.begin(), it->packed_key.end(), schedule.producers.back().block_signing_key.data.data() );
schedule.producers.back().block_signing_key = eosio::unpack<public_key>( it->packed_key );
//std::copy( it->packed_key.begin(), it->packed_key.end(), schedule.producers.back().block_signing_key.data.data() );
base_per_transaction_net_usage[n] = it->prefs.base_per_transaction_net_usage;
base_per_transaction_cpu_usage[n] = it->prefs.base_per_transaction_cpu_usage;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册