PIP: PIP-0012 Title: Change account recovery to 10 years Type: Protocol Impact: Hard-Fork Author: Herman Schoenfeld <herman@sphere10.com> Comments-URI: https://discord.gg/sJqcgtD (channel #pip-0012) Status: Proposed Created: 2018-01-03
It is proposed that the RECOVER operation be changed from 4 years to 10 and to include the account itself in the recovery.
Coinrot is a serious economic issue afflicting almost all other cryptocurrencies. Coinrot is the phenomenon of coins being permanently lost due to lost/corrupted keys and/or natural death. It is estimated that 20% of Bitcoins have already rotted. PascalCoin solves this problem by allowing PASC to be transferred from an account, without owners signature, after an inactivity period of 4 years. Whilst this is a good start, it does not solve the problem of PASA-rot, which is a far more limited (and important) resource than PASC. Also, community has expressed discomfort with the 4 year period, pointing out long-term savers could be seriously afflicted.
The proposal here is to simply to change RECOVER operation inactivity period from 4 years to 10 and to simply update the key of the recovered account rather than transferring it's balance. This allows both the PASA and PASC to be recovered in a single operation, with minimal code changes.
let RecoverOperation denote the recovery operation.
let RecoverOperation.InactiveAccount denote the account being recovered
let RecoverOperation.NewOwnerAccount denote the destination account to transfer the recovered PASC to.
- Verify RecoverOperation in similar way to TRANSACTION operations
- Verify ( SafeBox.LastBlockNumber - SafeBox.Accounts[ RecoverOperation.InactiveAccount].LastUpdatedBlock ) >= 420480
- Transfer balance from RecoverOperation.InactiveAccount to RecoverOperation.NewOwnerAccount
let RecoverOperation.NewOwnerKey denote the new owners account key.
- Verify RecoverOperation in similar manner to CHANGE KEY operation
- Verify ( SafeBox.LastBlockNumber - SafeBox.Accounts[ RecoverOperation.InactiveAccount ].LastUpdatedBlock ) >= 1051200
- Change key of InactiveAccount to RecoverOperation.NewOwnerKey
Other approaches were considered such as allowing partial recovery of funds every sub-period. For example, allowing 10% of the balance to be recovered every 2 weeks, after 4 years of inactivity. All such approaches were significantly more complicated and required much more development, which adds hard-fork risk (especially when combined with other PIPs in V3 release). As a result, the simplest most elegant solution was chosen.
This proposal is not backwards compatible and requires a hard-fork activation. However, since PascalCoin has not been around for 4 years, the old RECOVER algorithm can safely be discarded from the protocol.