Lately, the Neptune protocol has received some legitimate criticism about the timelocked mining rewards. The criticism is not that miners have to wait three years before selling half of their rewards but rather that these rewards stay at the mining pools, thus giving them a centralized stash of coins.
For the record, I agree that this is a real problem. Luckily I see multiple solutions to the problem, without the need to change tokenomics or the consensus mechanism.
Concretely, I can offer three solutions which I present in a list where the first is the technically easiest but also the one requiring the most trust, and the last is the hardest to implement but probably also the one yielding the biggest benefit.
-
Sell the timelocked coins in a way that requires trust. The buyer can then send back the liquid rewards that the mining pool can then distribute to its users. The mining pool can also distribute the proceeds of the sale of timelocked coins. A forum thread on this forum could be used for the matching of buyers and sellers of these timelocked coins (beware of scammers).
-
Distribute the timelocked coins directly to the users of the mining pool. If the mining pool is also generating block proposals (“composing”) and not just contributing hash power (“guessing”), then it can set the “guesser fraction” to zero and use the command `neptune-cli set-coinbase-distribution --file <coinbase_distribution.json>` to specify the distribution of coins for the next block proposal.
A concrete way of doing this would be for the mining pool to distribute liquid rewards as they do now (e.g. once a users balance hits 100 liquid NPT), and then distribute the timelocked coins to one user per mined block. So that when a user’s balance e.g. reaches 64 timelocked NPT (half the current block subsidy), they get the entire timelocked reward of a block.
-
Set the lock_script_hash in the block header to the post image of a lockscript that requires token ownership, making the timelocked coins instantly and trustlessly tradeable. The guesser reward can be sent to any lock script, as the guesser (mining pool) are free to set the
lock_script_hashvalue in the block header to whatever they please. ThisDigestvalue can be the hash of a lock script that validates a deferred cryptographic witness, instead of a simple hash pre-image check.A deferred cryptographic witness could be either of:
- A signature on the transaction that spends guesser reward, valid under a public key that is announced by the mining pool operator in response to the client’s withdrawal request. This announcement is made on the blockchain in a way that guarantees that for any concrete chain (among many possible forks) there is only one assignment of a public key to each guesser reward UTXO.
- The provable burn of an IOU token (which is a token with a different type script from the native currency). The IOU token would be minted by the mining pool operator and assigned to the client who initiates a withdrawal request, once again in a way that guarantees that there is only one IOU per guesser reward UTXO. In contrast to the signature, the IOU can be traded until it eventually unlocks the native currency UTXO.