With the upcoming cold minting feature, which is explained in this post, two distinct keys attached to wallets will be provided for the purpose of minting. One is non-spendable but allows minting, we will call it the “minting” key and the other one is the private key that is used to spend the coins and must be kept secret.
Since the minting key allows anyone who knows this key to mint (but not spend, and thus not receive the reward), MatthewLM via kac- suggested that minting pools could be used to allow dedicated servers to mint Peercoins for users. I would like to introduce to you a slightly different approach, which is less technical but uses kac-'s technical specifications. In my approach, instead of having a dedicated server, everyone becomes a server, and thus brings a P2P decentralized pooling system for minting.
Why would it work? Several instances (or nodes) can mint the same coins at the same time, because by definition it simply requires someone to tell the network that he can “burn” the coinage for this specific transaction by using the “minting” key attached to it (the fastest instance to do so will be to generate the next PoS block). For example, you can always spread your minting key on several minting platforms and still keep your Peerunity wallet unlocked for minting when you are online.
How would it work? People would choose to enable this feature when they unlock their wallet for minting. By enabling the P2P minting mode they could also broadcast their minting key across the network to other users who have this feature enabled (not mandatory).
Why would I join the P2P minting pool? A reward system can (and must) be implemented. A certain % of the PoS reward could be set by the owners of the “minting” keys when they broadcast them (which can also be automatically adjusted by an algorithm). For example, if I’m a small stake owner, I’ll more likely set a high reward to minters, something like 40% to create competition for the bigger stake owners who will likely choose a small reward because they already accumulate enough stake for minters to be more interested in minting their coins first.
What would prevent me to mint all coins from everyone who’s broadcasting the “minting” keys? Just like the full active node system, a maximum of X simultaneous minting keys (those broadcasted and stored) can be selected and used by the software. That would prevent people and allow them to choose (the software take care of this) which transactions are rewarded most (those which are not minted by others and for which a high reward % has been set). I’m also not sure about the performance limitations, but I imagine that maintaining a big database of minting keys and minting several transactions at same time will eat a lot of resources, so that can be a limitation that is pleasantly enforced by design.
What if I submit my minting key but then disconnect from the P2P minting network? That would be unfair, to mint someone else’s coins in case this person is never online… to solve this, we could choose to timeout those minting keys that are broadcasted across the network, so that when the minting key is provided and confirmed to be attached to a mature transaction (+30 days) it automatically times out after a certain delay by peers (established by the software, i.e. 10min after the first 6 confirmations). This forces the owner to resubmit it across the network via his own wallet while signing his broadcasted [minting key + challenge response provided by the network] with an extra “renew_timeout” key. In which case he will have three keys instead of two, multisig --> “minting” key + “private” key + “renew_timeout private” key. The challenge response still has to be defined though… but it shouldn’t be too hard to find a token that cannot be forged independently without being connected to the network and also would prove that this person is actively minting. Also, the confirmation system in place would prevent recent broadcasted keys to be used immediately (by a system of confirmation that the private key exists and is associated to existing coins).
Pros:
- Receive “minting rewards” more often.
- Provides an incentive to non-Peercoin holders to be rewarded to help strengthen the security of the blockchain by minting coins (even if these are not their coins) and have more active nodes on the network.
- Helps against attacks whose purpose would be to weaken the security of the blockchain by targeting and shutting down minting pools.
- Adjusts and helps the inequality of PoS rewards between rich and poor coin holders
- Gets more people involved into Peercoin “for free”.
Cons:
- ?
Open questions:
- The main purpose is to push people to be connected (as it strengthen the network to have active nodes), but maybe people also want their coins to be minted when they are offline, so how would this work? How would the reward incentive could be used to both push people to stay connected but also allow them to mint while being offline? Maybe by adjusting their reward, i.e. your reward to others is set to 25% when you are online and 75% when you are offline.
Original topic - http://www.peercointalk.org/index.php?topic=3746.msg36203#msg36203
Pooled minting technical specification by kac- - http://www.peercointalk.org/index.php?topic=3429.0
Cold minting pull request - https://github.com/ppcoin/ppcoin/pull/78
Cold minting explained - https://www.reddit.com/r/peercoin/comments/2qfv2y/cold_minting_ready_to_be_merged_plus_few_other/cn5wz2r