Progress #141 - defining extension parameters
This commit is contained in:
parent
1eb273118b
commit
86df9c04fd
3 changed files with 47 additions and 12 deletions
|
|
@ -386,24 +386,24 @@ namespace graphene { namespace chain {
|
|||
* protocol serialization.
|
||||
*/
|
||||
///@{
|
||||
enum advanced_fee_id
|
||||
enum extended_fee_id
|
||||
{
|
||||
withdraw_permission_delete_fee_id = 1, ///< the cost to delete a withdraw permission
|
||||
proposal_delete_fee_id = 2, ///< fee for deleting a proposed transaction
|
||||
limit_order_cancel_fee_id = 3 ///< fee for canceling a limit order
|
||||
};
|
||||
|
||||
uint64_t get_advanced_fee( advanced_fee_id id )const
|
||||
uint64_t get_extended_fee( extended_fee_id id )const
|
||||
{
|
||||
auto itr = advanced.find(id);
|
||||
if( itr == advanced.end() ) return 0;
|
||||
auto itr = extended.find(id);
|
||||
if( itr == extended.end() ) return 0;
|
||||
return itr->second;
|
||||
}
|
||||
|
||||
uint64_t withdraw_permission_delete_fee()const { return get_advanced_fee( withdraw_permission_delete_fee_id ); }
|
||||
uint64_t withdraw_permission_delete_fee()const { return get_extended_fee( withdraw_permission_delete_fee_id ); }
|
||||
|
||||
|
||||
flat_map<unsigned_int,uint64_t> advanced;
|
||||
flat_map<unsigned_int,uint64_t> extended;
|
||||
///@}
|
||||
|
||||
protected:
|
||||
|
|
@ -443,6 +443,8 @@ namespace graphene { namespace chain {
|
|||
bool is_valid_v1( const std::string& base58str );
|
||||
};
|
||||
|
||||
typedef static_variant<> parameter_extension;
|
||||
|
||||
struct chain_parameters
|
||||
{
|
||||
fee_schedule_type current_fees; ///< current schedule of fees
|
||||
|
|
@ -475,6 +477,7 @@ namespace graphene { namespace chain {
|
|||
share_type fee_liquidation_threshold = GRAPHENE_DEFAULT_FEE_LIQUIDATION_THRESHOLD; ///< value in CORE at which accumulated fees in blockchain-issued market assets should be liquidated
|
||||
uint16_t accounts_per_fee_scale = GRAPHENE_DEFAULT_ACCOUNTS_PER_FEE_SCALE; ///< number of accounts between fee scalings
|
||||
uint8_t account_fee_scale_bitshifts = GRAPHENE_DEFAULT_ACCOUNT_FEE_SCALE_BITSHIFTS; ///< number of times to left bitshift account registration fee at each scaling
|
||||
vector<parameter_extension> extensions;
|
||||
|
||||
void validate()const
|
||||
{
|
||||
|
|
@ -603,9 +606,9 @@ FC_REFLECT( graphene::chain::fee_schedule_type,
|
|||
(assert_op_fee)
|
||||
(proposal_create_fee)
|
||||
(proposal_update_fee)
|
||||
(advanced)
|
||||
(extended)
|
||||
)
|
||||
FC_REFLECT_ENUM( graphene::chain::fee_schedule_type::advanced_fee_id,
|
||||
FC_REFLECT_ENUM( graphene::chain::fee_schedule_type::extended_fee_id,
|
||||
(withdraw_permission_delete_fee_id)
|
||||
(proposal_delete_fee_id)
|
||||
(limit_order_cancel_fee_id) )
|
||||
|
|
@ -641,6 +644,7 @@ FC_REFLECT( graphene::chain::chain_parameters,
|
|||
(fee_liquidation_threshold)
|
||||
(accounts_per_fee_scale)
|
||||
(account_fee_scale_bitshifts)
|
||||
(extensions)
|
||||
)
|
||||
|
||||
FC_REFLECT_TYPENAME( graphene::chain::share_type )
|
||||
|
|
|
|||
|
|
@ -492,7 +492,7 @@ void limit_order_cancel_operation::validate()const
|
|||
|
||||
share_type limit_order_cancel_operation::calculate_fee(const fee_schedule_type& k) const
|
||||
{
|
||||
return k.get_advanced_fee(fee_schedule_type::limit_order_cancel_fee_id);
|
||||
return k.get_extended_fee(fee_schedule_type::limit_order_cancel_fee_id);
|
||||
}
|
||||
|
||||
void call_order_update_operation::get_required_auth(flat_set<account_id_type>& active_auth_set, flat_set<account_id_type>&) const
|
||||
|
|
@ -594,7 +594,7 @@ void proposal_delete_operation::get_required_auth(flat_set<account_id_type>& act
|
|||
active_auth_set.insert(fee_paying_account);
|
||||
}
|
||||
share_type proposal_delete_operation::calculate_fee(const fee_schedule_type& k)const
|
||||
{ return k.get_advanced_fee( fee_schedule_type::proposal_delete_fee_id ); }
|
||||
{ return k.get_extended_fee( fee_schedule_type::proposal_delete_fee_id ); }
|
||||
|
||||
void account_transfer_operation::validate()const
|
||||
{
|
||||
|
|
@ -717,7 +717,7 @@ void withdraw_permission_delete_operation::validate() const
|
|||
|
||||
share_type withdraw_permission_delete_operation::calculate_fee(const fee_schedule_type& k) const
|
||||
{
|
||||
return k.get_advanced_fee( fee_schedule_type::withdraw_permission_delete_fee_id );
|
||||
return k.get_extended_fee( fee_schedule_type::withdraw_permission_delete_fee_id );
|
||||
}
|
||||
|
||||
void withdraw_permission_create_operation::get_required_auth(flat_set<account_id_type>& active_auth_set, flat_set<account_id_type>&) const
|
||||
|
|
|
|||
|
|
@ -138,7 +138,6 @@ template<typename A> struct js_sv_name<A>
|
|||
template<typename A, typename... T>
|
||||
struct js_sv_name<A,T...> { static std::string name(){ return "\n " + js_name<A>::name() +" " + js_sv_name<T...>::name(); } };
|
||||
|
||||
|
||||
template<typename... T>
|
||||
struct js_name< fc::static_variant<T...> >
|
||||
{
|
||||
|
|
@ -149,6 +148,17 @@ struct js_name< fc::static_variant<T...> >
|
|||
else return name;
|
||||
}
|
||||
};
|
||||
template<>
|
||||
struct js_name< fc::static_variant<> >
|
||||
{
|
||||
static std::string name( std::string n = ""){
|
||||
static const std::string name = n;
|
||||
if( name == "" )
|
||||
return "static_variant []";
|
||||
else return name;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
template<typename T, bool reflected = fc::reflector<T>::is_defined::value>
|
||||
|
|
@ -279,6 +289,26 @@ struct serializer< fc::static_variant<T...>, false >
|
|||
std::cout << js_name<fc::static_variant<T...>>::name() << " = static_variant [" + js_sv_name<T...>::name() + "\n]\n\n";
|
||||
}
|
||||
};
|
||||
template<>
|
||||
struct serializer< fc::static_variant<>, false >
|
||||
{
|
||||
static void init()
|
||||
{
|
||||
static bool init = false;
|
||||
if( !init )
|
||||
{
|
||||
init = true;
|
||||
fc::static_variant<> var;
|
||||
register_serializer( js_name<fc::static_variant<>>::name(), [=](){ generate(); } );
|
||||
}
|
||||
}
|
||||
|
||||
static void generate()
|
||||
{
|
||||
std::cout << js_name<fc::static_variant<>>::name() << " = static_variant []\n\n";
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class register_member_visitor
|
||||
{
|
||||
|
|
@ -337,6 +367,7 @@ int main( int argc, char** argv )
|
|||
detail_ns::js_name<static_variant<address,public_key_type>>::name("key_data");
|
||||
detail_ns::js_name<operation_result>::name("operation_result");
|
||||
detail_ns::js_name<header_extension>::name("header_extension");
|
||||
detail_ns::js_name<parameter_extension>::name("parameter_extension");
|
||||
detail_ns::js_name<static_variant<refund_worker_type::initializer, vesting_balance_worker_type::initializer,burn_worker_type::initializer>>::name("worker_initializer");
|
||||
detail_ns::js_name<static_variant<linear_vesting_policy_initializer,cdd_vesting_policy_initializer>>::name("vesting_policy_initializer");
|
||||
detail_ns::serializer<signed_block>::init();
|
||||
|
|
|
|||
Loading…
Reference in a new issue