25 #include <graphene/chain/hardfork.hpp>
28 #include <graphene/chain/hardfork.hpp>
32 namespace graphene {
namespace chain {
39 bool allow_non_immediate_owner = ( db.
head_block_time() >= HARDFORK_CORE_584_TIME );
42 [&db]( account_id_type
id ){ return &id( db ).active; },
43 [&db]( account_id_type
id ){ return &id( db ).owner; },
45 return db.get_viable_custom_authorities(id, op, rejects); },
46 allow_non_immediate_owner,
64 const proposal_id_type proposal_id = p.
get_id();
76 void required_approval_index::remove( account_id_type a, proposal_id_type p )
81 itr->second.erase( p );
82 if( itr->second.empty() )
91 const proposal_id_type proposal_id = p.
get_id();
94 remove( a, proposal_id );
96 remove( a, proposal_id );
98 remove( a, proposal_id );
100 remove( a, proposal_id );
103 void required_approval_index::insert_or_remove_delta( proposal_id_type p,
104 const flat_set<account_id_type>& before,
105 const flat_set<account_id_type>& after )
107 auto b = before.begin();
108 auto a = after.begin();
109 while( b != before.end() || a != after.end() )
111 if( a == after.end() || (b != before.end() && *b < *a) )
116 else if( b == before.end() || (a != after.end() && *a < *b) )
139 const proposal_id_type proposal_id = p.
get_id();
147 (expiration_time)(review_period_time)(proposed_transaction)(required_active_approvals)
148 (available_active_approvals)(required_owner_approvals)(available_owner_approvals)
149 (available_key_approvals)(proposer)(fail_reason) )