I have been working over the past few months, greatly assisted by @snipatomic and @ILikeChocolate, to formally document in a mathematically rigorous way the new expected time to stake algorithm I coded which is in wallet version 3.7.12.0+. I also thought it important to cover related concepts. This has turned into a blue paper covering the staking process from a probability point of view (not security). This paper is a formal mathematical treatment of the staking process in Gridcoin's version of PoSv2 and covers the following areas:
- Basic Staking Probability
- Expected Time to Stake (without cooldown)
- Net Weight vs Difficulty
- Cooldown (including cooldown corrected ETTS and staking efficiency)
- Retargeting algorithm (which controls difficulty)
- The Wallet's Approach to ETTS in 3.7.12.0+
The paper is about 90% complete, but is good enough to ask for comments from the public. The main things left to do are minor additional editing, better graphs, and a cross-reference between the variable names in the paper and the actual code itself.
Note that the concepts in this paper are applicable to other PoSv2 coins, with appropriate modification of the constants.
https://drive.google.com/open?id=1opG4MLwofOCoVg6a-DhVM8aP3nxKXla_
You will recognize all of the thumb rules I have published here on Steemit during the past few months, useful for ETTS calculations and the upcoming CBR. For ready reference here are the important ones. (Note I have changed the formal mathematical variable names back to words to be easier on folks.):
For a wallet with n equally sized UTXOs...
(UTXO Value) = Balance / n
For ETTS...
(ETTS without cooldown) = (10000/Balance) * Difficulty
or (ETTS without cooldown) = (1/960) * (net weight) / Balance
(ETTS with cooldown) = ((cooldown time) / n) + (ETTS without cooldown)
Net Weight...
(net weight) = 10000000 * Difficulty
UTXO size for desired efficiency
(UTXO value) = 15000 * Difficulty * (1/E + 1), where E is the desired efficiency % as a decimal, i.e. 95% is 0.95.
Note that E = (staking frequency with cooldown) / (ideal staking frequency without cooldown) which is also
E= (ETTS without cooldown) / (ETTS with cooldown)
ETTS modified for different "confidence levels" besides the 63% for the expected value version...
(ETTS with cooldown at Confidence P) =((cooldown time) / n) - ln(1 - P) * (10000/Balance) * Difficulty
In particular, the 80% level used in the wallet gives
(ETTS with cooldown at 80%) = ((cooldown time) / n) * (16000/Balance) * Difficulty
This post received a courtesy vote from @gridcoin-booster! Thank you for your contribution to the #gridcoin community!
This is greatly appreciated. Thank you (and snip and choco) for the work you've put in. Will have some feedback after a slow read through.
I'm a physicist/mathematician, so I'm happy to sift through the technical details and see whether they make sense to me. Probably I'll have time within the next 2/3 days.
Great! Thanks!
Thanks for the info. Upvoted and following you.
Check my project:
https://steemit.com/life/@newtechblog/solar-kit-gridcoin-new-proyect-2