Quantum Computer Resistant
How? In Particl your public key isn’t (initially) made public. While you share your Particl address with others so that they can send you coins, your Particl address is only a hash of your public key, not the public key itself.
A hash function is a one-way cryptographic function that takes an input and turns it into a cryptographic output. By one-way I mean that you can’t derive the input from the output. It’s kind of like encrypting something then losing the key.
What does that mean in English?
All of that is a complicated way of saying that while an attacker with a quantum computer could derive the private key from the public key, they couldn’t derive the public key from the Particl address since the public key was run through multiple quantum-resistant one-way hash functions.
So how does this all fit together?
The cold staking feature consists of several key components:
- your “staking node” (running a new wallet)
- your “wallet” with your coins (much like today) and
- a “cold staking script” — this is like the script in bitcoin or smart contracts on other alts
Once activated your staking node signs transactions with its private key, thus your real public key for your actual PART tokens is never exposed onto the blockchain, until you actually spend them, in which case the change always goes into a new address where the public key is not known.
Cold Staking In Action
Again, cold staking consists of the following components — your staking node, your wallet and a cold staking script.
What is the cold staking script?
It is essentially a smart contract that says `if this is a cold staking transaction, then allow the private key from the staking node to sign the transaction; otherwise the private key from the wallet is required.`
Let’s walk through the process of setting cold staking up
1First step is to setup a new “staking node”. A staking node is a full blockchain node which has been configured to stake on behalf of your “wallet” (aka it has been delegated staking power over your wallet). This can be a dedicated server, cloud or virtual server, Raspberry Pi3+ or Rock64 etc.
It is important to note that CPU does matter when staking, so do not expect to get the same results from a earlier Pi vs the new generation Pi3s etc.
Once the node is setup and in sync, go ahead and create a new wallet, then generate a staking node public key (keep a note of this as you will need it in the next step).
**We have prepared tools which will automate all these steps for you. These will be made available after the hardfork has happened and the Particl blockchain is deemed secure.**
2Now, lets go back to your “wallet” on your desktop and click on “Activate Cold Staking”. You will be prompted for the staking node public key (from step 1). Enter this and click activate.
So what exactly did we just do?
First, you have created a cold staking script config which includes the public key for the staking node to whom you have delegated staking powers to.
Second, you have instructed your client that the next time it creates a block from staking (leave the current wallet running until the cold staking progress bar shows 100%), it should send the outputs back to itself (just like PoS currently does) but these outputs will be part of the cold staking script.
Third, the next time you spend any Particl from your wallet the client will also automatically include the cold staking script — from thereon. Once the Cold Staking progress bar reaches 100% activation your wallet can remain offline and the staking node you setup in Step 1 will now stake securely for you without risking any of the PART in your wallet.
It is important to understand that along with this new “coin staking script” smart contract, we have also introduced an important consensus rule that applies to cold staking:
if this is a cold staking transaction then output value must go back to the same address with the same minimum value as the input
In short, what this means is “If I staked 1,000 PART from my Par7ZFotVucq9EyXN6wRNGFwiZGHVN8Xq7 address then 1,000 PART must go back to the same address” for this to be considered a valid cold staking transaction.
This is important as it ensures that the staking node only has power to stake your coins and not spend them.
It is also worth noting here that any value greater than the input value, aka the reward for staking + block fees, are manageable by the staking node. So in theory you could — as part of cold staking — send your staked coins back to your wallet address (as per consensus) and send the stake reward to a different address.
This flexibility at the protocol consensus level pave the road for several new features in the future such as:
- staking pools
- donating staking rewards to other causes
- sending staking rewards to exchange to provide liquidity
The cold staking protocol is agnostic, so that it works with all public balances (anon and blind cannot stake) including those protected by multi-signature addresses.
In the future we envision an upgrade to our Particl Copay App that will add Cold Staking support. That will allow us to take advantage of the wallet’s excellent multi-signature support and enable a whole host of new security benefits, including but not limited to:
- cold staking with multi-signature (ie. your “staking node” will stake but to spend funds you will need m-of-n signatures
- integration with hardware devices (like Ledger or Trezor) for key signing (providing the utmost level of security when combined with multi-signature and cold staking).
Brief statement about tomorrow’s hardfork
As the hardfork cometh at midnight, we’re going to let everyone continue to upgrade and track the health of the blockchain for around 12–24 hours. We know everyone is anxious to build their Cold Staking contract but what is most important is ensuring the blockchain and all PART are secure.
The GUI is getting waxed and buffed for tomorrow’s debut and we’re also preparing some guides for the GUI so people can walk through setting up your cold staking contracts.