Proof of Stake

From EverGreenCoin
Jump to: navigation, search

Proof of Stake

Proof of Stake (PoS) is a blockchain algorithm used to decide who gets to process the next transactions.

It's a reward distribution mechanism akin to mining: staking selects which node receives the next block and its associated rewards. The selected node processes transactions, secures the blockchain public ledger and receives payment for its efforts.

EverGreenCoin now uses PoS rather than Proof of Work (PoW). PoW cryptocurrencies like Bitcoin were the original paradigm, but focus has shifted onto more efficient and fairer ways of distribution. PoS requires much less energy than PoW and as a result is a natural choice for green cryptocurrencies like EverGreenCoin.

A stake is typically based on certain criteria:

  • Age of coins in wallet.
  • Amount of coins in wallet.
  • A degree of random selection.

EGC Staking Specifics

Key attributes of EGC PoS:

  • 7% annual interest.
  • Mining fees paid can vary from every few days, to whenever your node comes online.
  • No need to constantly run the software (although there are implications to this such as compounding).

Why Should I Stake?

Staking is a good way to earn compounding interest on assets you own. EverGreenCoin is no different.

  • Comparatively speaking, with a 7% APR, you can be fairly certain you'll be earning more by supporting an environmentally sound asset like EGC than a global bank with its miserly interest rates.
  • Every coin you stake is fully under your control, unlike traditional financial accounts. Deposit or withdraw whenever you want.
  • It's greener than PoW: far less energy is consumed.
  • You're helping a good cause: EverGreenCoin is a 501(c)(3) registered charity in the US.
  • Unlike some other coins, where lucrative profit is the endgoal, EGC has always promoted a return to ecologically sustainable principles, including the blockchain technology itself.
  • Every node really counts: as a relatively small and growing network, nodes are more impactful on EGC than with a more saturated network.

How Do I Stake with EGC?

It's easy:

  • Install the EverGreenCoin wallet.
  • Sync the blockchain fully or download a snapshot. Syncing the full blockchain may day a few days.
  • Get some EGCs.
  • Send it to your wallet.
    • Let the coins mature.
    • This may take up to 24 hours.
  • Staking begins automatically.
    • Note: if your wallet is encrypted you need to Unlock it for Staking Only to enable coins to stake.
    • The wallet needs to be unlocked while staking.
    • The Staking Only option ensures no funds can be sent from that wallet.

You're done!

Verify Staking is Working

To confirm that the staking process is working use the GUI or CLI.

Graphical Wallet (GUI)

In the EverGreenCoin wallet software:

  • Help menu > Debug window
  • Type getstakinginfo into the input and press return. You should see something like:
getstakinginfo
{
...
"staking" : true,
...
}


Command Line Interface (CLI)

In command line:

  • Type evergreencoind getstakinginfo
  • You should get similar output to the GUI method above.

Troubleshooting Staking Issues

This section will be fully detailed soon. Until this section is complete, if you suffer from these symptoms please reach out on our Discord channel for support.

Here are common issues:

  • Balance zero.
  • Coins not yet matured.
  • Wallet locked with encryption passphrase.
  • Networking issues.
  • Split on fork.

When Will My Staking Interest Be Paid?

The frequency of your interest payouts will depend on several factors, summed up as *weighting*. It consists of:

  • The amount of EGC in an address.
  • The maturity of the EGC.
  • The network's overall weighting.

Based on these factors, you will be assigned a calculated weight. The more weight, the sooner the payment.

You can check your current weight in console with **getstakinginfo**, or via GUI by hovering over the Staking icon in the bottom right of the EGC wallet (green up arrow).

getstakinginfo Sample Output

{
"enabled" : true,
"staking" : true,
"errors" : "",
"currentblocksize" : 1230,
"currentblocktx" : 1,
"pooledtx" : 1,
"difficulty" : 0.26367883,
"search-interval" : 1,
"weight" : 19409,
"netstakeweight" : 2480007,
"expectedtime" : 22999
}

Confirm the following:

  • *enabled* is *true*.
  • *staking* is *true*.
  • *expectedtime* / 60 / 60 / 24 = Days left before payment.
    • In this example 22999/60/60/24 = 0.266 days left.

Bonus Content: Calculating Payout Date With PowerShell

It's easy: try the following code taking the above example values in PowerShell:

PS C:\> (Get-Date).AddSeconds(22999)
30 January 2018 15:37:23
  • Breaking down the code:
    • Add to the current date:
    • the amount of days until the next payout,
    • according to getstakinginfo.expectedtime. This is provided in seconds: we convert to days in this sample.
  • We can expect the next staking payout to be at this date and time.
  • Note shifting weights means these are approximate values and liable to change per block.