This idea was first introduced in December of '23, and explained in the following blog post:
https://www.peercoin.net/blog/pooled-minting/
Today, when using threshold signatures on the go (mobile) is very close to reality, let’s expand on this and imagine the workflow.
Example Scenario
Bob, who is a long-time peercoiner has talked his friends into purchasing a small amount of peercoin. He tells them they can also become block producers and be rewarded for it by the Peercoin network. However, they are not really technically literate and do not use desktop computers all that much, and asked Bob if he can mint for them. However, Bob does not want to be responsible for other people’s assets, so he proposes they start a ROAST swarm and mint as a group. From their mobile phones. ![]()
Let’s imagine how would that work.
- Participants: Alice, Bob, Charlie, Dave, and Emily.
- ROAST Setup: 3-of-5 (any 3 of the 5 friends must sign for a valid transaction).
- Total PPC: 22,500 PPC.
- UTXOs: 150 * 150 PPC
- Goal: Pool funds to maximize the Proof-Of-Stake yield and enable less tech literate peercoiners to participate in PoS.
1. Create the 3-of-5 ROAST swarm
-
Generating a group peercoin address:
Each friend (Alice, Bob, Charlie, Dave, Emily) joins the ROAST swarm in their app and proceed with Distributed Key Generation process (DKG), which yields a shared address. -
Confirm Setup:
Bob tests the validity of ROAST address, by making a small deposit (0.1 PPC) and testing spending from it, ensuring that ROAST setup requires 4 out of the 5 signatures to spend funds.
2. Pool 22,500 PPC into the Multisig
- Initial Deposits:
Each of the five friends sends their portion of PPC (whatever adds up to 22,500 PPC in total) directly to the newly created ROAST address. - Confirm Funds:
Use a block explorer or the Flutter Wallet interface to see that the multisig address now holds 22,500 PPC. - Split UTXOs
Bob makes a transaction which splits the deposits into 150 UTXOs. 150 * 150 PPC
Two other friends confirm this transaction, and it is broadcasted to the network. Once confirmed, friends now collectively control 150 maturing UTXOs.
3. Proposing and Creating the Coinstake Transaction
-
Finding a Good Time to Stake
(perhaps finstake.js can be ported to dart and included into the flutter wallet?)Suppose Charlie notices that one of the UTXOs has reached a suitable coin age for staking and has a decent chance of scoring a block. Charlie uses the “Propose Coinstake” feature in the app to create an unsigned coinstake transaction for that UTXO. The transaction includes metadata about the UTXO, stake reward, and potential block timing.
-
Notifying ROAST Participants
Charlie sends a push notification to Alice, Bob, Dave, and Emily with the details of coinstake proposal. -
Transaction Signing
Each participant sees who proposed the transaction (Charlie) and reviews the amounts, timing, and any other relevant info.
Those who agree (say, Alice, Bob, and Dave) tap “Sign” in their Flutter apps and provide a partial signature for the transaction.
The signed portions are sent to the ROAST coordinator, which aggregates the signatures.As soon as 3 valid signatures are collected (e.g., from Charlie, Alice, and Bob), the coinstake transaction is considered fully signed and can be imported into a minting peercoin node.
4. Importing the Coinstake Transaction into a Peercoin Node
-
Importing coinstake
Anyone with the fully signed transaction (e.g., Bob) can run:peercoin-cli importcoinstake <fully_signed_transaction_in_hex>This can be done locally or on a remote Peercoin node with RPC access.
-
Minting
Once imported, the node automatically attempts to mint.If the network accepts the block, the PoS reward is added to the UTXO. All five friends can see that the new block has been found and that the updated balance (original coins plus reward) remains under the 3-of-5 multisig.