Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/protocol/blockchain/account.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
2 changes: 1 addition & 1 deletion content/protocol/blockchain/block.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
45 changes: 30 additions & 15 deletions content/protocol/blockchain/incentive.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,34 +11,45 @@ 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)

![Rewards in Pactus](/images/pactus-reward.png)

## 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)

Expand Down Expand Up @@ -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**.
8 changes: 5 additions & 3 deletions content/protocol/consensus/parameters.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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

Expand Down
25 changes: 15 additions & 10 deletions content/protocol/transaction/transfer.md
Original file line number Diff line number Diff line change
Expand Up @@ -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).
Binary file modified static/images/pactus-reward-distribution.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified static/images/pactus-reward.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.