3#include <sysio/asset.hpp>
4#include <sysio/binary_extension.hpp>
5#include <sysio/privileged.hpp>
6#include <sysio/producer_schedule.hpp>
7#include <sysio/singleton.hpp>
8#include <sysio/system.hpp>
9#include <sysio/time.hpp>
19#ifdef CHANNEL_RAM_AND_NAMEBID_FEES_TO_REX
20#undef CHANNEL_RAM_AND_NAMEBID_FEES_TO_REX
25#define CHANNEL_RAM_AND_NAMEBID_FEES_TO_REX 1
30 using sysio::binary_extension;
33 using sysio::const_mem_fun;
35 using sysio::indexed_by;
37 using sysio::same_payer;
46 template<
typename E,
typename F>
47 static inline auto has_field( F
flags, E
field )
48 -> std::enable_if_t< std::is_integral_v<F> && std::is_unsigned_v<F> &&
49 std::is_enum_v<E> && std::is_same_v< F, std::underlying_type_t<E> >,
bool>
51 return ( (
flags &
static_cast<F
>(
field)) != 0 );
54 template<
typename E,
typename F>
56 -> std::enable_if_t< std::is_integral_v<F> && std::is_unsigned_v<F> &&
57 std::is_enum_v<E> && std::is_same_v< F, std::underlying_type_t<E> >, F >
65 static constexpr uint32_t seconds_per_year = 52 * 7 * 24 * 3600;
66 static constexpr uint32_t seconds_per_day = 24 * 3600;
67 static constexpr uint32_t seconds_per_hour = 3600;
68 static constexpr int64_t useconds_per_year =
int64_t(seconds_per_year) * 1000'000ll;
69 static constexpr int64_t useconds_per_day =
int64_t(seconds_per_day) * 1000'000ll;
70 static constexpr int64_t useconds_per_hour =
int64_t(seconds_per_hour) * 1000'000ll;
71 static constexpr uint32_t blocks_per_day = 2 * seconds_per_day;
73 static constexpr int64_t min_activated_stake = 150'000'000'0000;
74 static constexpr int64_t ram_gift_bytes = 1400;
75 static constexpr int64_t min_pervote_daily_pay = 100'0000;
76 static constexpr uint32_t refund_delay_sec = 3 * seconds_per_day;
78 static constexpr int64_t inflation_precision = 100;
79 static constexpr int64_t default_annual_rate = 500;
80 static constexpr int64_t pay_factor_precision = 10000;
81 static constexpr int64_t default_inflation_pay_factor = 50000;
82 static constexpr int64_t default_votepay_factor = 40000;
84#ifdef SYSTEM_BLOCKCHAIN_PARAMETERS
85 struct blockchain_parameters_v1 : sysio::blockchain_parameters
87 sysio::binary_extension<uint32_t> max_action_return_value_size;
88 SYSLIB_SERIALIZE_DERIVED( blockchain_parameters_v1, sysio::blockchain_parameters,
89 (max_action_return_value_size) )
134 typedef sysio::multi_index<
"namebids"_n, name_bid,
135 indexed_by<
"highbid"_n, const_mem_fun<name_bid, uint64_t, &name_bid::by_high_bid> >
156 double total_producer_vote_weight = 0;
161 (max_ram_size)(total_ram_bytes_reserved)(total_ram_stake)
162 (last_producer_schedule_update)(last_pervote_bucket_fill)
163 (pervote_bucket)(perblock_bucket)(total_unpaid_blocks)(total_activated_stake)(thresh_activated_stake_time)
164 (last_producer_schedule_size)(total_producer_vote_weight)(last_name_close) )
174 double total_producer_votepay_share = 0;
177 SYSLIB_SERIALIZE(
sysio_global_state2, (new_ram_per_block)(last_ram_increase)(last_block_num)
178 (total_producer_votepay_share)(revision) )
185 double total_vpay_share_change_rate = 0;
187 SYSLIB_SERIALIZE(
sysio_global_state3, (last_vpay_state_update)(total_vpay_share_change_rate) )
197 SYSLIB_SERIALIZE(
sysio_global_state4, (continuous_rate)(inflation_pay_factor)(votepay_factor) )
207 double total_votes = 0;
209 bool is_active =
true;
217 double by_votes()
const {
return is_active ? -total_votes : total_votes; }
222 if( producer_authority.has_value() ) {
223 bool zero_threshold = std::visit( [](
auto&& auth ) ->
bool {
224 return (auth.threshold == 0);
225 }, *producer_authority );
229 if( !zero_threshold )
return *producer_authority;
243 template<
typename DataStream>
259 template<
typename DataStream>
276 double votepay_share = 0;
282 SYSLIB_SERIALIZE(
producer_info2, (owner)(votepay_share)(last_votepay_share_update) )
299 double last_vote_weight = 0;
302 double proxied_vote_weight= 0;
319 SYSLIB_SERIALIZE(
voter_info, (owner)(proxy)(
producers)(staked)(last_vote_weight)(proxied_vote_weight)(is_proxy)(flags1)(reserved2)(reserved3) )
327 indexed_by<
"prototalvote"_n, const_mem_fun<producer_info, double, &producer_info::by_votes> >
347 bool is_empty()
const {
return net_weight.amount == 0 && cpu_weight.amount == 0 && ram_bytes == 0; }
351 SYSLIB_SERIALIZE(
user_resources, (owner)(net_weight)(cpu_weight)(ram_bytes) )
361 bool is_empty()
const {
return net_weight.amount == 0 && cpu_weight.amount == 0; }
375 bool is_empty()
const {
return net_amount.amount == 0 && cpu_amount.amount == 0; }
379 SYSLIB_SERIALIZE(
refund_request, (owner)(request_time)(net_amount)(cpu_amount) )
428 static constexpr uint32_t total_intervals = 30 * 144;
430 static constexpr uint8_t hours_per_bucket = 12;
431 static_assert( total_intervals * dist_interval == 30 * seconds_per_day );
515 typedef sysio::multi_index<
"cpuloan"_n, rex_loan,
516 indexed_by<
"byexpr"_n, const_mem_fun<rex_loan, uint64_t, &rex_loan::by_expr>>,
517 indexed_by<
"byowner"_n, const_mem_fun<rex_loan, uint64_t, &rex_loan::by_owner>>
520 typedef sysio::multi_index<
"netloan"_n,
rex_loan,
521 indexed_by<
"byexpr"_n, const_mem_fun<rex_loan, uint64_t, &rex_loan::by_expr>>,
522 indexed_by<
"byowner"_n, const_mem_fun<rex_loan, uint64_t, &rex_loan::by_owner>>
536 uint64_t by_time()
const {
return is_open ? order_time.elapsed.
count() : std::numeric_limits<uint64_t>::max(); }
539 typedef sysio::multi_index<
"rexqueue"_n, rex_order,
540 indexed_by<
"bytime"_n, const_mem_fun<rex_order, uint64_t, &rex_order::by_time>>>
rex_order_table;
634 static constexpr uint32_t default_powerup_days = 30;
660 typedef sysio::multi_index<
"powup.order"_n, powerup_order,
661 indexed_by<
"byowner"_n, const_mem_fun<powerup_order, uint64_t, &powerup_order::by_owner>>,
662 indexed_by<
"byexpires"_n, const_mem_fun<powerup_order, uint64_t, &powerup_order::by_expires>>
724 rammarket rm(system_account, system_account.value);
725 const static auto sym = get_core_symbol( rm );
754 void onblock( ignore<block_header> header );
774 void setacctram(
const name& account,
const std::optional<int64_t>& ram_bytes );
783 void setacctnet(
const name& account,
const std::optional<int64_t>& net_weight );
792 void setacctcpu(
const name& account,
const std::optional<int64_t>& cpu_weight );
801 void activate(
const sysio::checksum256& feature_digest );
819 void delegatebw(
const name& from,
const name& receiver,
820 const asset& stake_net_quantity,
const asset& stake_cpu_quantity,
bool transfer );
827 void setrex(
const asset& balance );
841 void deposit(
const name& owner,
const asset& amount );
851 void withdraw(
const name& owner,
const asset& amount );
870 void buyrex(
const name& from,
const asset& amount );
889 void unstaketorex(
const name& owner,
const name& receiver,
const asset& from_net,
const asset& from_cpu );
902 void sellrex(
const name& from,
const asset& rex );
912 void cnclrexorder(
const name& owner );
932 void rentcpu(
const name& from,
const name& receiver,
const asset& loan_payment,
const asset& loan_fund );
952 void rentnet(
const name& from,
const name& receiver,
const asset& loan_payment,
const asset& loan_fund );
1002 void updaterex(
const name& owner );
1021 void consolidate(
const name& owner );
1033 void mvtosavings(
const name& owner,
const asset& rex );
1043 void mvfrsavings(
const name& owner,
const asset& rex );
1057 void closerex(
const name& owner );
1087 void undelegatebw(
const name& from,
const name& receiver,
1088 const asset& unstake_net_quantity,
const asset& unstake_cpu_quantity );
1100 void buyram(
const name& payer,
const name& receiver,
const asset& quant );
1111 void buyrambytes(
const name& payer,
const name& receiver,
uint32_t bytes );
1121 void sellram(
const name& account,
int64_t bytes );
1130 void refund(
const name& owner );
1173 void unregprod(
const name& producer );
1180 void setram(
uint64_t max_ram_size );
1190 void setramrate(
uint16_t bytes_per_block );
1216 void voteproducer(
const name& voter,
const name& proxy,
const std::vector<name>&
producers );
1229 void voteupdate(
const name& voter_name );
1245 void regproxy(
const name& proxy,
bool isproxy );
1255#ifdef SYSTEM_CONFIGURABLE_WASM_LIMITS
1262 void wasmcfg(
const name& settings );
1270 void claimrewards(
const name& owner );
1278 void setpriv(
const name& account,
uint8_t is_priv );
1285 void rmvproducer(
const name& producer );
1295 void updtrevision(
uint8_t revision );
1314 void bidname(
const name& bidder,
const name& newname,
const asset& bid );
1323 void bidrefund(
const name& bidder,
const name& newname );
1390 void limitauthchg(
const name& account,
const std::vector<name>& allow_perms,
const std::vector<name>& disallow_perms );
1395 [[sysio::on_notify(
"auth.msg::onlinkauth")]]
1398 using init_action = sysio::action_wrapper<
"init"_n, &system_contract::init>;
1404 using deposit_action = sysio::action_wrapper<
"deposit"_n, &system_contract::deposit>;
1406 using buyrex_action = sysio::action_wrapper<
"buyrex"_n, &system_contract::buyrex>;
1408 using sellrex_action = sysio::action_wrapper<
"sellrex"_n, &system_contract::sellrex>;
1410 using rentcpu_action = sysio::action_wrapper<
"rentcpu"_n, &system_contract::rentcpu>;
1411 using rentnet_action = sysio::action_wrapper<
"rentnet"_n, &system_contract::rentnet>;
1417 using rexexec_action = sysio::action_wrapper<
"rexexec"_n, &system_contract::rexexec>;
1418 using setrex_action = sysio::action_wrapper<
"setrex"_n, &system_contract::setrex>;
1424 using buyram_action = sysio::action_wrapper<
"buyram"_n, &system_contract::buyram>;
1426 using sellram_action = sysio::action_wrapper<
"sellram"_n, &system_contract::sellram>;
1427 using refund_action = sysio::action_wrapper<
"refund"_n, &system_contract::refund>;
1431 using setram_action = sysio::action_wrapper<
"setram"_n, &system_contract::setram>;
1439 using bidname_action = sysio::action_wrapper<
"bidname"_n, &system_contract::bidname>;
1441 using setpriv_action = sysio::action_wrapper<
"setpriv"_n, &system_contract::setpriv>;
1447 using powerup_action = sysio::action_wrapper<
"powerup"_n, &system_contract::powerup>;
1453 auto itr = rm.find(ramcore_symbol.raw());
1454 check(itr != rm.end(),
"system contract must first be initialized");
1455 return itr->quote.balance.symbol;
1461 symbol core_symbol()
const;
1462 void update_ram_supply();
1466 void update_rex_pool();
1467 void update_resource_limits(
const name& from,
const name& receiver,
int64_t delta_net,
int64_t delta_cpu );
1468 void check_voting_requirement(
const name& owner,
1469 const char* error_msg =
"must vote for at least 21 producers or for a proxy before buying REX" )
const;
1471 asset update_rex_account(
const name& owner,
const asset& proceeds,
const asset& unstake_quant,
bool force_vote_update =
false );
1472 void channel_to_rex(
const name& from,
const asset& amount,
bool required =
false );
1473 void channel_namebid_to_rex(
const int64_t highest_bid );
1474 template <
typename T>
1476 template <
typename T>
1477 void fund_rex_loan(
T& table,
const name& from,
uint64_t loan_num,
const asset& payment );
1478 template <
typename T>
1479 void defund_rex_loan(
T& table,
const name& from,
uint64_t loan_num,
const asset& amount );
1480 void transfer_from_fund(
const name& owner,
const asset& amount );
1481 void transfer_to_fund(
const name& owner,
const asset& amount );
1482 bool rex_loans_available()
const;
1483 bool rex_system_initialized()
const {
return _rexpool.begin() != _rexpool.end(); }
1484 bool rex_available()
const {
return rex_system_initialized() && _rexpool.begin()->total_rex.amount > 0; }
1485 static time_point_sec get_rex_maturity();
1486 asset add_to_rex_balance(
const name& owner,
const asset& payment,
const asset& rex_received );
1487 asset add_to_rex_pool(
const asset& payment );
1488 void add_to_rex_return_pool(
const asset& fee );
1489 void process_rex_maturities(
const rex_balance_table::const_iterator& bitr );
1490 void consolidate_rex_balance(
const rex_balance_table::const_iterator& bitr,
1491 const asset& rex_in_sell_order );
1492 int64_t read_rex_savings(
const rex_balance_table::const_iterator& bitr );
1493 void put_rex_savings(
const rex_balance_table::const_iterator& bitr,
int64_t rex );
1494 void update_rex_stake(
const name& voter );
1496 void add_loan_to_rex_pool(
const asset& payment,
int64_t rented_tokens,
bool new_loan );
1497 void remove_loan_from_rex_pool(
const rex_loan& loan );
1498 template <
typename Index,
typename Iterator>
1499 int64_t update_renewed_loan( Index& idx,
const Iterator& itr,
int64_t rented_tokens );
1502 void changebw(
name from,
const name& receiver,
1503 const asset& stake_net_quantity,
const asset& stake_cpu_quantity,
bool transfer );
1504 void update_voting_power(
const name& voter,
const asset& total_update );
1508 void update_elected_producers(
const block_timestamp& timestamp );
1509 void update_votes(
const name& voter,
const name& proxy,
const std::vector<name>&
producers,
bool voting );
1510 void propagate_weight_change(
const voter_info& voter );
1511 double update_producer_votepay_share(
const producers_table2::const_iterator& prod_itr,
1512 const time_point& ct,
1513 double shares_rate,
bool reset_to_zero =
false );
1514 double update_total_votepay_share(
const time_point& ct,
1515 double additional_shares_delta = 0.0,
double shares_rate_delta = 0.0 );
1517 template <
auto system_contract::*...Ptrs>
1518 class registration {
1520 template <
auto system_contract::*
P,
auto system_contract::*...Ps>
1522 template <
typename... Args>
1525 std::invoke(
P, this_contract, args... );
1529 template <auto system_contract::*P>
1531 template <
typename... Args>
1534 std::invoke(
P, this_contract, std::forward<Args>(args)... );
1538 template <
typename... Args>
1539 constexpr void operator() ( Args&&... args )
1541 for_each<Ptrs...>::call( this_contract, std::forward<Args>(args)... );
1547 registration<&system_contract::update_rex_stake> vote_stake_updater{
this };
1550 void adjust_resources(
name payer,
name account, symbol core_symbol,
int64_t net_delta,
int64_t cpu_delta,
bool must_not_be_managed =
false);
1551 void process_powerup_queue(
1552 time_point_sec now, symbol core_symbol, powerup_state&
state,
1553 powerup_order_table& orders,
uint32_t max_items,
int64_t& net_delta_available,
1554 int64_t& cpu_delta_available);
1557 void add_to_blockinfo_table(
const sysio::checksum256& previous_block_id,
const sysio::block_timestamp timestamp)
const;
contains only the public point of an elliptic curve key.
constexpr int64_t count() const
sysio::action_wrapper<"rexexec"_n, &system_contract::rexexec > rexexec_action
sysio::action_wrapper<"activate"_n, &system_contract::activate > activate_action
sysio::action_wrapper<"setacctnet"_n, &system_contract::setacctnet > setacctnet_action
sysio::action_wrapper<"unregprod"_n, &system_contract::unregprod > unregprod_action
sysio::action_wrapper<"undelegatebw"_n, &system_contract::undelegatebw > undelegatebw_action
sysio::action_wrapper<"setram"_n, &system_contract::setram > setram_action
sysio::action_wrapper<"claimrewards"_n, &system_contract::claimrewards > claimrewards_action
sysio::action_wrapper<"setinflation"_n, &system_contract::setinflation > setinflation_action
sysio::action_wrapper<"closerex"_n, &system_contract::closerex > closerex_action
sysio::action_wrapper<"setacctcpu"_n, &system_contract::setacctcpu > setacctcpu_action
sysio::action_wrapper<"defcpuloan"_n, &system_contract::defcpuloan > defcpuloan_action
sysio::action_wrapper<"withdraw"_n, &system_contract::withdraw > withdraw_action
sysio::action_wrapper<"powerup"_n, &system_contract::powerup > powerup_action
sysio::action_wrapper<"deposit"_n, &system_contract::deposit > deposit_action
sysio::action_wrapper<"regproducer2"_n, &system_contract::regproducer2 > regproducer2_action
sysio::action_wrapper<"fundcpuloan"_n, &system_contract::fundcpuloan > fundcpuloan_action
sysio::action_wrapper<"init"_n, &system_contract::init > init_action
sysio::action_wrapper<"updaterex"_n, &system_contract::updaterex > updaterex_action
static symbol get_core_symbol(name system_account="sysio"_n)
sysio::action_wrapper<"voteproducer"_n, &system_contract::voteproducer > voteproducer_action
sysio::action_wrapper<"mvfrsavings"_n, &system_contract::mvfrsavings > mvfrsavings_action
sysio::action_wrapper<"mvtosavings"_n, &system_contract::mvtosavings > mvtosavings_action
sysio::action_wrapper<"refund"_n, &system_contract::refund > refund_action
sysio::action_wrapper<"updtrevision"_n, &system_contract::updtrevision > updtrevision_action
sysio::action_wrapper<"setrex"_n, &system_contract::setrex > setrex_action
sysio::action_wrapper<"regproxy"_n, &system_contract::regproxy > regproxy_action
sysio::action_wrapper<"setacctram"_n, &system_contract::setacctram > setacctram_action
sysio::action_wrapper<"bidname"_n, &system_contract::bidname > bidname_action
sysio::action_wrapper<"unstaketorex"_n, &system_contract::unstaketorex > unstaketorex_action
sysio::action_wrapper<"sellram"_n, &system_contract::sellram > sellram_action
sysio::action_wrapper<"setparams"_n, &system_contract::setparams > setparams_action
sysio::action_wrapper<"cnclrexorder"_n, &system_contract::cnclrexorder > cnclrexorder_action
sysio::action_wrapper<"bidrefund"_n, &system_contract::bidrefund > bidrefund_action
sysio::action_wrapper<"buyram"_n, &system_contract::buyram > buyram_action
sysio::action_wrapper<"cfgpowerup"_n, &system_contract::cfgpowerup > cfgpowerup_action
sysio::action_wrapper<"rentcpu"_n, &system_contract::rentcpu > rentcpu_action
sysio::action_wrapper<"buyrambytes"_n, &system_contract::buyrambytes > buyrambytes_action
sysio::action_wrapper<"setramrate"_n, &system_contract::setramrate > setramrate_action
sysio::action_wrapper<"delegatebw"_n, &system_contract::delegatebw > delegatebw_action
sysio::action_wrapper<"consolidate"_n, &system_contract::consolidate > consolidate_action
sysio::action_wrapper<"rentnet"_n, &system_contract::rentnet > rentnet_action
sysio::action_wrapper<"setpriv"_n, &system_contract::setpriv > setpriv_action
sysio::action_wrapper<"rmvproducer"_n, &system_contract::rmvproducer > rmvproducer_action
sysio::action_wrapper<"defnetloan"_n, &system_contract::defnetloan > defnetloan_action
sysio::action_wrapper<"setalimits"_n, &system_contract::setalimits > setalimits_action
sysio::action_wrapper<"regproducer"_n, &system_contract::regproducer > regproducer_action
sysio::action_wrapper<"fundnetloan"_n, &system_contract::fundnetloan > fundnetloan_action
sysio::action_wrapper<"powerupexec"_n, &system_contract::powerupexec > powerupexec_action
sysio::action_wrapper<"voteupdate"_n, &system_contract::voteupdate > voteupdate_action
sysio::action_wrapper<"sellrex"_n, &system_contract::sellrex > sellrex_action
sysio::action_wrapper<"buyrex"_n, &system_contract::buyrex > buyrex_action
DataStream & operator<<(DataStream &ds, const float64_t &v)
DataStream & operator>>(DataStream &ds, float64_t &v)
std::variant< block_signing_authority_v0 > block_signing_authority
sysio::multi_index< "retbuckets"_n, rex_return_buckets > rex_return_buckets_table
constexpr int64_t powerup_frac
sysio::multi_index< "rammarket"_n, exchange_state > rammarket
sysio::multi_index< "rexpool"_n, rex_pool > rex_pool_table
sysio::multi_index< "delband"_n, delegated_bandwidth > del_bandwidth_table
sysio::multi_index< "refunds"_n, refund_request > refunds_table
sysio::multi_index< "cpuloan"_n, rex_loan, indexed_by<"byexpr"_n, const_mem_fun< rex_loan, uint64_t, &rex_loan::by_expr > >, indexed_by<"byowner"_n, const_mem_fun< rex_loan, uint64_t, &rex_loan::by_owner > > > rex_cpu_loan_table
sysio::blockchain_parameters blockchain_parameters_t
sysio::multi_index< "rexretpool"_n, rex_return_pool > rex_return_pool_table
sysio::singleton<"powup.state"_n, powerup_state > powerup_state_singleton
sysio::multi_index< "namebids"_n, name_bid, indexed_by<"highbid"_n, const_mem_fun< name_bid, uint64_t, &name_bid::by_high_bid > > > name_bid_table
sysio::singleton< "global"_n, sysio_global_state > global_state_singleton
sysio::multi_index< "rexqueue"_n, rex_order, indexed_by<"bytime"_n, const_mem_fun< rex_order, uint64_t, &rex_order::by_time > > > rex_order_table
sysio::singleton< "global4"_n, sysio_global_state4 > global_state4_singleton
sysio::multi_index< "rexbal"_n, rex_balance > rex_balance_table
sysio::multi_index< "rexfund"_n, rex_fund > rex_fund_table
sysio::singleton< "global2"_n, sysio_global_state2 > global_state2_singleton
sysio::multi_index< "producers"_n, producer_info, indexed_by<"prototalvote"_n, const_mem_fun< producer_info, double, &producer_info::by_votes > > > producers_table
sysio::multi_index< "voters"_n, voter_info > voters_table
sysio::singleton< "global3"_n, sysio_global_state3 > global_state3_singleton
sysio::block_signing_authority convert_to_block_signing_authority(const sysio::public_key &producer_key)
sysio::multi_index< "bidrefunds"_n, bid_refund > bid_refund_table
sysio::multi_index< "producers2"_n, producer_info2 > producers_table2
sysio::multi_index< "netloan"_n, rex_loan, indexed_by<"byexpr"_n, const_mem_fun< rex_loan, uint64_t, &rex_loan::by_expr > >, indexed_by<"byowner"_n, const_mem_fun< rex_loan, uint64_t, &rex_loan::by_owner > > > rex_net_loan_table
sysio::multi_index< "userres"_n, user_resources > user_resources_table
sysio::multi_index< "powup.order"_n, powerup_order, indexed_by<"byowner"_n, const_mem_fun< powerup_order, uint64_t, &powerup_order::by_owner > >, indexed_by<"byexpires"_n, const_mem_fun< powerup_order, uint64_t, &powerup_order::by_expires > > > powerup_order_table
#define T(meth, val, expected)
schedule config_dir_name data_dir_name p2p_port http_port file_size name name keys peers producers(dont_start)) FC_REFLECT(testnet_def
unsigned __int64 uint64_t
Immutable except for fc::from_variant.
uint64_t primary_key() const
uint64_t primary_key() const
uint64_t by_high_bid() const
uint64_t primary_key() const
SYSLIB_SERIALIZE(pair_time_point_sec_int64,(first)(second))
std::optional< int64_t > assumed_stake_weight
std::optional< double > exponent
std::optional< time_point_sec > target_timestamp
std::optional< int64_t > target_weight_ratio
std::optional< asset > max_price
std::optional< asset > min_price
std::optional< int64_t > current_weight_ratio
std::optional< uint32_t > decay_secs
powerup_config_resource cpu
powerup_config_resource net
std::optional< asset > min_powerup_fee
std::optional< uint32_t > powerup_days
uint64_t by_expires() const
uint64_t primary_key() const
uint64_t by_owner() const
int64_t initial_weight_ratio
int64_t adjusted_utilization
static constexpr uint32_t default_decay_secs
static constexpr double default_exponent
time_point_sec initial_timestamp
time_point_sec utilization_timestamp
time_point_sec target_timestamp
int64_t target_weight_ratio
int64_t assumed_stake_weight
uint64_t primary_key() const
uint64_t primary_key() const
time_point last_votepay_share_update
sysio::binary_extension< sysio::block_signing_authority > producer_authority
sysio::public_key producer_key
uint64_t primary_key() const
bool is_active
a packed public key object
time_point last_claim_time
sysio::block_signing_authority get_producer_authority() const
uint64_t primary_key() const
time_point_sec request_time
uint64_t primary_key() const
REX daily maturity buckets.
std::vector< pair_time_point_sec_int64 > rex_maturities
uint64_t primary_key() const
sysio::time_point expiration
uint64_t primary_key() const
uint64_t by_owner() const
sysio::time_point order_time
uint64_t primary_key() const
uint64_t primary_key() const
uint64_t primary_key() const
std::vector< pair_time_point_sec_int64 > return_buckets
uint64_t primary_key() const
time_point_sec last_dist_time
block_timestamp last_block_num
block_timestamp last_ram_increase
time_point last_vpay_state_update
int64_t inflation_pay_factor
uint64_t free_ram() const
time_point thresh_activated_stake_time
block_timestamp last_producer_schedule_update
block_timestamp last_name_close
the sum of all producer votes
time_point last_pervote_bucket_fill
static constexpr void call(system_contract *this_contract, Args &&... args)
static constexpr void call(system_contract *this_contract, Args &&... args)
uint64_t primary_key() const
std::vector< name > producers
the proxy set by the voter, if any
uint64_t primary_key() const
account_query_db::get_accounts_by_authorizers_params params