./zz*.sh

1543230217

Actors

As you may note, the testgenesis has b1 "block.one", "3 whales", "21 bp's", "3ru's", "3 minority workers" and them "masses".

std::vector<genesis_account> test_genesis( {
  {N(b1),    100'000'000'0000ll},
  {N(whale4), 40'000'000'0000ll},
  {N(whale3), 30'000'000'0000ll},
  {N(whale2), 20'000'000'0000ll},
  {N(proda),      1'000'000'0000ll},
  {N(prodb),      1'000'000'0000ll},
  {N(prodc),      1'000'000'0000ll},
  {N(prodd),      1'000'000'0000ll},
  {N(prode),      1'000'000'0000ll},
  {N(prodf),      1'000'000'0000ll},
  {N(prodg),      1'000'000'0000ll},
  {N(prodh),      1'000'000'0000ll},
  {N(prodi),      1'000'000'0000ll},
  {N(prodj),      1'000'000'0000ll},
  {N(prodk),      1'000'000'0000ll},
  {N(prodl),      1'000'000'0000ll},
  {N(prodm),      1'000'000'0000ll},
  {N(prodn),      1'000'000'0000ll},
  {N(prodo),      1'000'000'0000ll},
  {N(prodp),      1'000'000'0000ll},
  {N(prodq),      1'000'000'0000ll},
  {N(prodr),      1'000'000'0000ll},
  {N(prods),      1'000'000'0000ll},
  {N(prodt),      1'000'000'0000ll},
  {N(produ),      1'000'000'0000ll},
  {N(runnerup1),1'000'000'0000ll},
  {N(runnerup2),1'000'000'0000ll},
  {N(runnerup3),1'000'000'0000ll},
  {N(minow1),        100'0000ll},
  {N(minow2),          1'0000ll},
  {N(minow3),          1'0000ll},
  {N(masses),800'000'000'0000ll}
});
// cl.72

Initiation

1:

   auto claim_rewards( name owner ) {
       auto r = base_tester::push_action( config::system_account_name, N(claimrewards), owner, mvo()("owner",  owner ));
       produce_block();
       return r;
}
// cl.28

2:


        // Spend some time so the producer pay pool is filled by the inflation rate
        produce_min_num_of_blocks_to_spend_time_wo_inactive_prod(fc::seconds(30 * 24 * 3600)); // 30 days
        // Since the total activated stake is less than 150,000,000, it shouldn't be possible to claim rewards
        BOOST_REQUIRE_THROW(claim_rewards(N(runnerup1)), eosio_assert_message_exception);
// cl.277

3:The main.tst

        // Spend some time so the producer pay pool is filled by the inflation rate
        produce_min_num_of_blocks_to_spend_time_wo_inactive_prod(fc::seconds(30 * 24 * 3600)); // 30 days
        // Since the total activated stake is larger than 150,000,000, pool should be filled reward should be bigger than zero
        claim_rewards(N(runnerup1));
        BOOST_TEST(get_balance(N(runnerup1)).get_amount() > 0);

        const auto first_june_2018 = fc::seconds(1527811200); // 2018-06-01
        const auto first_june_2028 = fc::seconds(1843430400); // 2028-06-01
        // Ensure that now is yet 10 years after 2018-06-01 yet
        BOOST_REQUIRE(control->head_block_time().time_since_epoch() < first_june_2028);

        // This should thrown an error, since block one can only unstake all his stake after 10 years

        BOOST_REQUIRE_THROW(undelegate_bandwidth(N(b1), N(b1), core_from_string("49999500.0000"), core_from_string("49999500.0000")), eosio_assert_message_exception);

        // Skip 10 years
        produce_block(first_june_2028 - control->head_block_time().time_since_epoch());

        // Block one should be able to unstake all his stake now
        undelegate_bandwidth(N(b1), N(b1), core_from_string("49999500.0000"), core_from_string("49999500.0000"));

        return;
        produce_blocks(7000); /// produce blocks until virutal bandwidth can acomadate a small user
        wlog("minow" );
        votepro( N(minow1), {N(p1), N(p2)} );

Note: Prior to this, they cat $ACTIVE(BP[n]) into 'disk' thatz premines? lol free CPU muxh!
But anyways hard bounds check is nice but what if .time_since_epoch() is rendered precompromised on a provably larger chain within a half-second? Yea, hypo but yeah, yea.

That's all about the TEST_CASES.

Talking you into the main shit, the /producer_pay.cpp here.

Yo! Wdup^^

It only asks for the eosio.token and redaccess to the system here. Neat. :fire:

Side note:

$i, today tweeted about my first encounters with SEA sharply.
What's remarkable to remark here, is that nw when $i looked at the codes (a mobile OS sans the networking) and other randits, most of it is rather a brute forcing approach to problems, lol no wonder we found about #cat it '15.
lmao just had to, right? Tell that 'o Rumi.

few noteworthy uints

*	THIS <-
   const int64_t  min_pervote_daily_pay = 100'0000;
   const int64_t  min_activated_stake   = 150'000'000'0000;
   const double   continuous_rate       = 0.04879;          // 5% annual rate
   const double   perblock_rate         = 0.0025;           // 0.25%
   const double   standby_rate          = 0.0075;           // 0.75%
   const uint32_t blocks_per_year       = 52*7*24*2*3600;   // half seconds per year
   const uint32_t seconds_per_year      = 52*7*24*3600;
   const uint32_t blocks_per_day        = 2 * 24 * 3600;
   const uint32_t blocks_per_hour       = 2 * 3600;
   const uint64_t useconds_per_day      = 24 * 3600 * uint64_t(1000000);
   const uint64_t useconds_per_year     = seconds_per_year*1000000ll;

SIDENOTE2

"Although all the plots using the seaborn library can be built using the matplotlib library, we usually prefer the seaborn library because of its ability to handle DataFrames."

How it unfurls

Similar to Electra ($ELECTRACOIN), they utilize the bucket-list approach, and do as much they can before anihilation.

      auto ct = current_time();

      eosio_assert( ct - prod.last_claim_time > useconds_per_day, "already claimed rewards within past day" );

      const asset token_supply   = token( N(eosio.token)).get_supply(symbol_type(system_token_symbol).name() );
      const auto usecs_since_last_fill = ct - _gstate.last_pervote_bucket_fill;

      if( usecs_since_last_fill > 0 && _gstate.last_pervote_bucket_fill > 0 ) {
         auto new_tokens = static_cast<int64_t>( (continuous_rate * double(token_supply.amount) * double(usecs_since_last_fill)) / double(useconds_per_year) );

         auto to_producers       = new_tokens / 5;
         auto to_savings         = new_tokens - to_producers;
         auto to_per_block_pay   = to_producers / 4;
         auto to_per_vote_pay    = to_producers - to_per_block_pay;

         INLINE_ACTION_SENDER(eosio::token, issue)( N(eosio.token), {{N(eosio),N(active)}},
                                                    {N(eosio), asset(new_tokens), std::string("issue tokens for producer pay and savings")} );

         INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio),N(active)},
                                                       { N(eosio), N(eosio.saving), asset(to_savings), "unallocated inflation" } );

         INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio),N(active)},
                                                       { N(eosio), N(eosio.bpay), asset(to_per_block_pay), "fund per-block bucket" } );

         INLINE_ACTION_SENDER(eosio::token, transfer)( N(eosio.token), {N(eosio),N(active)},
                                                       { N(eosio), N(eosio.vpay), asset(to_per_vote_pay), "fund per-vote bucket" } );

         _gstate.pervote_bucket  += to_per_vote_pay;
         _gstate.perblock_bucket += to_per_block_pay;

         _gstate.last_pervote_bucket_fill = ct;
}
/// cl.109

In cleartext frame of abstraction, read this further:

1:
The const int64_t min_pervote_daily_pay = 100'0000; mans up to 3 fervent things:

  • There is a fungibility bound on unity, namely to ONE BASIS POINT, the so-called precision.
  • The minimum pervote daily pay is a 100 "\EOSIO.TOKEN"
  • There are like 1 Billion ("1'000'000'000'0000") real eosio.token contract objects, ioinadvertantly hurting you.

SIdeNotE5

"Ethereum public keys are only on-chain if an address has an outgoing transaction. Not all addresses have outgoing transactions."

A notice to Vitalik, our dearest

This is called 'eerieing' iff $i may be permitted as so.

WEN PAY !?

Looks from the above sources each 30 days, and whatever of the 5% annual inflation 'bucket' hodls. lmaox3, read on, dream on til the dawn come true ye-e-eah: RIP
Non-uninteresting fact: Nobody gets paid if <15% constituents vote.
Non-uninteresting fact 2: Nobody but 25% constituents vote today (cl.0x00).
Non-uninteresting fact 3: Nearly (<!=) 50'000 constituents do vote.
Non-uninteresting fact 4: Now there are (>!=) 500'000 active keys.
InteRresting fact IFx01 : About, whatever amount is, that is, is inflation.

INflatION

Say in 365 days, it inflates ny 5%.
i.e., In a years timelap, we'll have 1.05 Billion (50'000'000'0000 $EOS) added to our namespace::eosio.

IFx02

Let's only talk about thr brods (puniker intended) here: They get a 1% annual share in the Universal free-maker market capit(u?)alisation.
We may say some 10mm Eosio's, or whatever that means to you locally.

IFx03

Namely, this clause:
Everyone who qualifies must get a minimum per day payment so that “wealthy individuals who have no intention of producing blocks don’t attempt to earn interest on their producer candidate by voting on themselves.”
not an officiall statement, though. read the code re, i'm 3r333,3333,333 there.

SIDENOTEV: The band will play 18 shows during the months of April, June and July 2019 at the Park Theater, MGM.

NOTE::NOTE::VOTE

This (b.1)[pP] gene of account is not in the set of special EOSIO system accounts: 'eosio.token', 'eosio.ram', 'eosio.ramfee', 'eosio.names', 'eosio.stake', 'eosio.saving', 'eosio.bpay', 'eosio.vpay', 'eosio.unregd'.

TL;DR

Daily, if >100 units of .token '0000.

xx
xennie

\N1X\

\N1X\

N1X [ itsN1X ] Knows things and more, about things and more. Every network: @itsN1X {.node}{BA$H} {CAD} {CSS3}{C}{ES8}{go} {*ML}{.JsON}{*NIX} {PHP5} {py3}{R} {.sol} {+UxUi} %%{{$ETTX}}%%

Read More