[Proposal] Minting Pool Decentralization or P2P Minting Pool System

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

An interesting idea.

With regard to performing a double-spend, what would the difference be between one person minting who holds 51% of all coins, or one person minting who holds the mint-only keys for 51% of all coins? Is there any sort of security in the latter that would not be in the former?

[quote=“emeth, post:2, topic:3223”]An interesting idea.

With regard to performing a double-spend, what would the difference be between one person minting who holds 51% of all coins, or one person minting who holds the mint-only keys for 51% of all coins? Is there any sort of security in the latter that would not be in the former?[/quote]

This is a question I’ve asked myself this morning for which I’m not 100% of the answer. What is for sure is that when cold minting will be in place the PoS difficulty will explode. Which will lead people to mint together:

So in any case, minting centralization will have to be fought with the help of decentralization, unless it doesn’t represent any security risk.

Edit: I’ve just asked sigmike directly

Just added “Receive “minting rewards” more often” to the Pros. At the end this is the main idea behind this proposal. At the moment each individual has to wait 30 days + probability days to mature their coins. If everyone mints everyone else’s coins and if the rewards are distributed among the minting network people won’t have to wait such long a period of time to receive their reward. Which is the similar idea that we have being a PoW “mining” pool, you are less rewarded, but you receive your rewards more often.

For a PoW centralized platform, the reward factor is your hashrate.
For a PoS decentralzed platform, the reward factors are both your connectivity (you staying connected as a peer) and your current coinage (that is shared to others via your “minting” key).

(Still need to work more on this proposal, clarify a few things and provide examples. There is this “timeout” thing that needs to be redefined, especially about “would you mint other people’s coins when they are offline?”)

P2P minting pool is very interesting idea.

However, I’d oppose creating one-task-oriented Peercoin network extensions - we have lot of ideas but lack of devs to make everything neat and secure.
What I’d suggest is to first create generic P2P communication framework above Peercoin. Next to it, create sandbox environment that will have access to this framework. This will let us test and deploy our ideas fast and securely. The key is to not let ourselves disturb our beloved, origin network. Cold-minting keys could help with that - as authentication and DoS prevention mechanism, w/o risk of loosing stake. With such cold-PoS*trust, fast network we could serve whole bunch of products, even for entities not related to cryptos.

Please let know what you think.

Thank you kac-! You are absolutely right, the development part will be totally dissociated from Peercoin’s devolvement and network. I see this P2P minting network as a complementary module that can be integrated to ppcoind later if really needed (when out of beta for example) and as an option in Peerunity to activate/deactivate it but it won’t be mandatory (i.e. a complete independent P2P minting application can just be created and talk with peercoind with RPC calls). The only thing that is required from Peercoin is the cold minting feature. Then it will be as easy as extracting the minting keys and provide them to the P2P minting client.

It will also be possible to use the Peercoin test network to test the minting efficiency of this P2P minting network. It will also allow the use of private keys as minting keys for the purpose of minting (since cold minting hasn’t been merged yet) because there are no loss involved on the testing network.

Like you said, it will just be a matter of independent development. And you’re right about the P2P framework, an existing one can be used.

Again, I want to precise and make it clearer that the P2P minting peers will be independent from Peercoin’s network. RPC calls between the Peercoin daemon and the P2P minting client to retrieve the minting keys and mint with the active shared minting keys (of the P2P minting network) will be used.