diff --git a/content/protocol/blockchain/account.md b/content/protocol/blockchain/account.md index 0ac375c..1be013f 100644 --- a/content/protocol/blockchain/account.md +++ b/content/protocol/blockchain/account.md @@ -25,4 +25,4 @@ The Treasury account is a special account in the Pactus blockchain that holds 21 The treasury address is defined as: `000000000000000000000000000000000000000000`. The [address type](/protocol/blockchain/address/#address-type) is 0, and therefore, it doesn't have any key pair associated with it. -Every time a block is created, one coin from the Treasury account transfers to the proposer account as a block reward. +Every time a block is created, a block reward is paid from the Treasury account. diff --git a/content/protocol/blockchain/block.md b/content/protocol/blockchain/block.md index a62d0a9..bbee41e 100644 --- a/content/protocol/blockchain/block.md +++ b/content/protocol/blockchain/block.md @@ -28,7 +28,7 @@ The block header is 138 bytes long and consists of the following fields: | Proposer Address | 21 bytes | - **Version** is used to track the protocol upgrade, and the current - [protocol version](/protocol/consensus/parameters/#protocol-version) is set to 2. + [protocol version](/protocol/consensus/parameters/#protocol-version) is set to 4. - **Timestamp** is the time of the block as the number of seconds since January 1, 1970 (Unix Epoch). - **Previous Block Hash** is the hash of the previous block in the blockchain. - **State Hash** is the [state hash](/protocol/blockchain/state-hash) of the blockchain at this block. diff --git a/content/protocol/blockchain/incentive.md b/content/protocol/blockchain/incentive.md index cf656ee..9b6cb65 100644 --- a/content/protocol/blockchain/incentive.md +++ b/content/protocol/blockchain/incentive.md @@ -11,25 +11,35 @@ In Pactus, rewards are given to validators for collecting valid transactions and These rewards serve as an incentive for validators to participate in the consensus process and maintain the security and integrity of the network. -## Flat Reward +## Block Reward To better understand the incentive model in Pactus, let's compare it with the Bitcoin reward model. This comparison helps to understand how the incentive model works in Pactus. -| Pactus | Bitcoin | -| -------------------------------------- | -------------------------------------------- | -| Consensus engine is Proof of Stake | Consensus engine is Proof of Work | -| every 10 seconds one block is _minted_ | Around every 10 minutes one block is _mined_ | -| Total supply is 42,000,000 coins | Total supply is 21,000,000 coins | -| Always one coin per block | Initial block reward is 50 coins | -| No halving | Halving happens every 4 years | +| Pactus | Bitcoin | +| --------------------------------------------- | -------------------------------------------- | +| Consensus engine is Proof of Stake | Consensus engine is Proof of Work | +| every 10 seconds one block is _minted_ | Around every 10 minutes one block is _mined_ | +| Genesis supply is 42,000,000 coins | Total supply is 21,000,000 coins | +| Reward starts at one coin per block | Initial block reward is 50 coins | +| Halving at blocks 8M, 24M, and 56M | Halving happens every 4 years | +| Reward floor is 0.125 coins per block | No reward floor (reward tends to zero) | -The halving mechanism in Bitcoin rewards early contributors more significantly. -However, in a Proof-of-Stake blockchain, this mechanism can lead to wealth centralization, -as early validators gain too much power based on their staked coins. +Pactus initially used a "Flat Reward" model with a constant reward of one coin per block. +This simple model was fair, but it created an unbounded linear supply with no long-term issuance discipline. -To promote fairer block rewards, Pactus has introduced a simple and straightforward incentive model called the "Flat Reward." -In this model, the total block reward remains constant at one coin per block and does not change over time. +To limit supply and give the network time to adapt, [PIP-55](https://pips.pactus.org/PIPs/pip-55) +introduced a block reward halving schedule. +The reward starts at 1 PAC per block and is halved three times with doubling intervals: + +| Start block | End block | Reward per block | Total blocks | Total PAC | +| ----------- | ---------- | ---------------- | ------------ | --------- | +| 1 | 8,000,000 | 1.000 PAC | 8,000,000 | 8,000,000 | +| 8,000,001 | 24,000,000 | 0.500 PAC | 16,000,000 | 8,000,000 | +| 24,000,001 | 56,000,000 | 0.250 PAC | 32,000,000 | 8,000,000 | +| 56,000,001 | — | 0.125 PAC | — | — | + +After the third halving at block 56,000,000, the reward remains at 0.125 PAC per block. ![Rewards in Bitcoin](/images/bitcoin-reward.png) @@ -37,8 +47,9 @@ In this model, the total block reward remains constant at one coin per block and ## Reward Distribution -In Pactus, the reward distribution is linear. This linear distribution is a direct result of the Flat Reward system. -Unlike other blockchains that have a curved distribution, Pactus maintains a consistent reward distribution. +In Pactus, the reward distribution is piecewise linear. +Within each halving era, the total amount of distributed coins grows linearly, +but the slope is halved at each halving boundary, resulting in a decreasing issuance curve. ![Reward distribution in Bitcoin](/images/bitcoin-reward-distribution.png) @@ -66,3 +77,7 @@ to distribute block rewards according to [PIP-43](https://pips.pactus.org/PIPs/p - **70%** to the block proposer - **30%** to the Pactus Foundation + +Starting with protocol version 4, the amount distributed by the reward transaction follows the +halving schedule defined in [PIP-55](https://pips.pactus.org/PIPs/pip-55). +The split between the block proposer and the Pactus Foundation remains unchanged at **70/30**. diff --git a/content/protocol/consensus/parameters.md b/content/protocol/consensus/parameters.md index 6d7d85b..9db90cb 100644 --- a/content/protocol/consensus/parameters.md +++ b/content/protocol/consensus/parameters.md @@ -13,7 +13,7 @@ Here is the list of the consensus parameters: ## Protocol Version The version number of the blockchain protocol. -The current protocol version is 2 after [PIP-43](https://pips.pactus.org/PIPs/pip-43). +The current protocol version is 4 after [PIP-55](https://pips.pactus.org/PIPs/pip-55). ## Block Time @@ -27,8 +27,10 @@ This is set to 51 validators. ## Block Reward -The fixed reward amount given to the validator who successfully creates and proposes a new block. -This is set to 1,000,000,000 NanoPAC, which is equivalent to one PAC coin. +The total block reward minted for each new block. +It follows the halving schedule defined by [PIP-55](https://pips.pactus.org/PIPs/pip-55), +starting at 1,000,000,000 NanoPAC (one PAC coin) and halving at blocks 8,000,000, 24,000,000, and 56,000,000, +with a floor of 125,000,000 NanoPAC (0.125 PAC coin). ## Time-to-Live Interval diff --git a/content/protocol/transaction/transfer.md b/content/protocol/transaction/transfer.md index 36ab970..e230185 100644 --- a/content/protocol/transaction/transfer.md +++ b/content/protocol/transaction/transfer.md @@ -26,13 +26,18 @@ The transfer transaction has a payload that consists of the following fields: ## Reward Transaction The reward transaction is the first transaction in each block. There is only one reward transaction -per block, and it has the same format as a transfer transaction, but with zero fees and no signature. - -The sender address is the [Treasury address](/protocol/blockchain/address#treasury-address), -and the receiver address is defined by the block proposer. -The amount of the reward transaction should be equal to the -[block reward](/protocol/blockchain/incentive/#flat-reward) plus transaction fees. -This amount will go to the proposer account as a block reward. -Therefore, in each block, one coin from the -[Treasury account](/protocol/blockchain/account#treasury-account) transfers to -the proposer account as a block reward. +per block, and it has zero fees and no signature. + +In protocol version 1, the reward transaction had the same format as a transfer transaction. +The sender address was the [Treasury address](/protocol/blockchain/address#treasury-address), +and the receiver address was defined by the block proposer. +The amount of the reward transaction was equal to the +[block reward](/protocol/blockchain/incentive/#block-reward) plus transaction fees, +and the full amount went to the proposer account as a block reward. + +Starting with protocol version 2, the reward transaction is a +[batch transfer transaction](/protocol/transaction/batch_transfer) that splits the block reward +according to [PIP-43](https://pips.pactus.org/PIPs/pip-43): +**70%** to the block proposer and **30%** to the Pactus Foundation. +Starting with protocol version 4, the reward amount follows the halving schedule defined by +[PIP-55](https://pips.pactus.org/PIPs/pip-55). diff --git a/static/images/pactus-reward-distribution.png b/static/images/pactus-reward-distribution.png index 7e2a79b..00b71a0 100644 Binary files a/static/images/pactus-reward-distribution.png and b/static/images/pactus-reward-distribution.png differ diff --git a/static/images/pactus-reward.png b/static/images/pactus-reward.png index eaf0f7a..e0a7787 100644 Binary files a/static/images/pactus-reward.png and b/static/images/pactus-reward.png differ