MIP-0001

From Mochimo Wiki
Revision as of 19:20, 5 October 2020 by Mochimowiki (talk | contribs) (Created Page for MIP-0001, credit to NickP05)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

MIP-0001 - Add Upper Limit to Wallet Lifespan

Presented to the Core Contributor Team on October 4th, 2020 by user NickP05

Sponsor(s)

The following Core Contributors have "sponsored" this MIP. Sponsorship, for these purposes means that these Core Contributors have committed to developing the code on behalf of the community if this MIP is adopted. Note: Core Contributor sponsorship is not required for a MIP to be implemented. It just makes things easier on the community.

Stackoverflo This looks like it's worth doing. I'll implement if the community wants it.

Problem Definition

Existing blockchain based cryptocurrencies allow coins to become "lost" over time, never to be recovered. This happens because cryptocurrency wallet keys are lost. Eventually many millions of coins are lost this way.

Solution Summary

Within the ledger in a Mochimo node, a new field will be added to each address entry. This field will contain the block in which an address was created. After a certain number of blocks has passed (equal to about 82 years total) the coins in a wallet that have never been spent will return to the pool of coins available to be mined. For the purposes of this MIP, "created" means the block in which a tag changes WOTS+ addresses (meaning the tag is spent and bound to a new WOTS+ address), or in which the tag was first created if it has never been spent. For raw WOTS addresses, this is the block in which the WOTS address was created.

Hard Fork Required

Yes.

Technical Details

  • Add to the Ledger Entry Struct 1x 8-byte Field containing the block height in which an address is first added to the Ledger.
  • In the Block Header Struct, add an 8-byte value "recovery_total" to aggregate all recovered "lost coins" to be added to the end of the mining period as mineable coins.
  • In the node logic, add to the Block Reward algorithm a check to determine if the "recovery_total" variable is greater than 1MCM, and if the final block reward block has been reached.
    • If the above is true, set the mining reward for the current block to +=1 MCM.
  • In the node logic, add an entry to the update() function to determine if the "recovery_total" variable is non-zero, and if the final block reward block has been reached.
    • If the above is true, debit 1 from the recovery_total global variable at the end of the update() routine.
  • In the node logic, add an entry to the bval() routine to confirm that the Block Header "recovery_total" is correct.
  • In the node logic, add an entry to the bval() routine to determine if the "recovery_total" variable is non-zero, and if the final block reward block has been reached.
    • If the above is true, confirm that the mining reward reflects exactly +1 MCM over the aggregated Mining Fees for the block.