提交 7e8dc29b 编写于 作者: W Wang Zhi

support outer votes for test net requirement

上级 418a7f79
......@@ -296,8 +296,8 @@
"base": "",
"fields": [
{"name":"owner", "type":"account_name"},
{"name":"seq_num", "type":"uint16"}
{"name":"seq_num", "type":"uint16"},
{"name":"out_votes", "type":"int64"}
]
},{
"name": "producers_seq",
......@@ -343,6 +343,13 @@
"name": "testnewelec",
"base": "",
"fields": []
},{
"name": "tmpvotennn",
"base": "",
"fields": [
{"name":"producer", "type":"account_name"},
{"name":"tickets", "type":"int64"}
]
},{
"name": "setram",
"base": "",
......@@ -549,6 +556,10 @@
"name": "testnewelec",
"type": "testnewelec",
"ricardian_contract": ""
},{
"name": "tmpvotennn",
"type": "tmpvotennn",
"ricardian_contract": ""
},{
"name": "regproxy",
"type": "regproxy",
......
......@@ -93,9 +93,10 @@ namespace eosiosystem {
struct producer_info_ext {
account_name owner;
uint16_t seq_num = 1; // from 1 to 21
int64_t out_votes = 0;
uint64_t primary_key()const { return owner; }
EOSLIB_SERIALIZE( producer_info_ext, (owner)(seq_num) )
EOSLIB_SERIALIZE( producer_info_ext, (owner)(seq_num)(out_votes))
};
......@@ -124,6 +125,8 @@ namespace eosiosystem {
EOSLIB_SERIALIZE( producers_seq, (seq_num)(is_org)(prods_l1)(prods_l2)(prods_l3)(prods_all) )
};
//struct remove
//##YTA-Change end:
struct voter_info {
......@@ -262,6 +265,8 @@ namespace eosiosystem {
void seqproducer( const account_name producer, uint16_t seq , uint8_t level );
void tmpvotennn( const account_name producer, int64_t tickets );
void testnewelec();
//##YTA-Change end:
......
......@@ -90,8 +90,10 @@ namespace eosiosystem {
void system_contract::seqproducer( const account_name producer, uint16_t seq , uint8_t level ) {
require_auth( _self );
const auto& prod = _producers.get( producer, "producer not found" );
//const auto& prod = _producers.get( producer, "producer not found" );
auto itp = _producers.find(producer);
eosio_assert( itp != _producers.end() , "producer not found");
eosio_assert(seq >= 1 && seq <= 21 , "invalidate seq number");
eosio_assert(level >= 1 && level <= 3 , "invalidate level number");
//const auto& prod = _producers.get( producer, "producer not found" );
......@@ -335,6 +337,29 @@ namespace eosiosystem {
}
void system_contract::tmpvotennn( const account_name producer, int64_t tickets ) {
require_auth( _self );
const auto& prod = _producers.get( producer, "producer not found" );
//auto it = _producers.find(producer);
//eosio_assert( it != _producers.end() , "producer not found");
_producers.modify( prod, 0, [&]( producer_info& info ){
int64_t vote_delta = 0;
auto pitr2 = _producers2.find( producer);
if( pitr2 != _producers2.end() ) {
vote_delta = tickets - pitr2->out_votes;
info.total_votes += vote_delta;
_producers2.modify( pitr2, 0, [&]( producer_info_ext& info2){
info2.out_votes = tickets;
});
update_producers_seq_totalvotes(pitr2->seq_num, producer, info.total_votes);
}
});
_gstate.total_producer_vote_weight += tickets;
}
void system_contract::update_elected_producers_yta( block_timestamp block_time ) {
_gstate.last_producer_schedule_update = block_time;
print("update_elected_producers_yta start------------------------------\n");
......@@ -420,7 +445,6 @@ namespace eosiosystem {
return std::pair<eosio::producer_key,uint16_t>({{0, eosio::public_key{}}, 0});
}
//##YTA-Change end:
void system_contract::update_elected_producers( block_timestamp block_time ) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册