>AgentChain

Block Reward Formula

AgentChain uses a deterministic block reward formula with a 2% annual inflation schedule. The reward increases at each epoch boundary, ensuring long-term mining incentive sustainability without requiring governance votes or hard forks.

Formula

The block reward for any given block number is calculated as:

reward = 2 × 10¹⁸ × (102/100)^epoch

Where:

epoch = floor(blockNumber / 5,256,000)
  • Base reward: 2 CRD (2 × 10¹⁸ wei)
  • Epoch length: 5,256,000 blocks (~1 year at 6-second block times)
  • Inflation rate: 2% compounding per epoch

Implementation

Go Pseudocode

func CalcBlockReward(blockNumber uint64) *big.Int {
    baseReward := new(big.Int).SetUint64(2e18)
    epoch := blockNumber / 5_256_000
 
    numerator := big.NewInt(102)
    denominator := big.NewInt(100)
 
    reward := new(big.Int).Set(baseReward)
    for i := uint64(0); i < epoch; i++ {
        reward.Mul(reward, numerator)
        reward.Div(reward, denominator)
    }
    return reward
}

Step-by-Step Breakdown

  1. Start with the base reward of 2 CRD (2,000,000,000,000,000,000 wei).
  2. Determine the epoch by integer-dividing the block number by 5,256,000.
  3. For each completed epoch, multiply the reward by 102 and divide by 100 (equivalent to a 2% increase).
  4. Return the final reward in wei.

The use of integer arithmetic (multiply then divide) avoids floating-point precision issues. The repeated Mul/Div pattern ensures that each epoch's reward is calculated deterministically and identically across all nodes.

Why Integer Arithmetic

Blockchain consensus requires every node to compute identical results. Floating-point arithmetic can produce different results across different hardware and software implementations. By using big.Int multiplication and division, the calculation is deterministic:

Epoch 0: 2000000000000000000 (exact)
Epoch 1: 2000000000000000000 * 102 / 100 = 2040000000000000000 (exact)
Epoch 2: 2040000000000000000 * 102 / 100 = 2080800000000000000 (exact)

No rounding errors accumulate because the base reward and multiplier produce clean divisions for the first several dozen epochs.

No Uncle Rewards

AgentChain does not pay rewards for uncle (ommer) blocks. In Ethereum's original design, uncle blocks received a partial reward (7/8 of the full block reward) to incentivize miners who found valid blocks that did not make it into the canonical chain. AgentChain omits this for simplicity:

  • The 6-second block time and difficulty algorithm are tuned to minimize orphan blocks.
  • Removing uncle rewards simplifies the consensus code and makes the total supply more predictable.
  • Uncle inclusion rewards for the canonical block miner are also omitted.

Transaction Fees

Transaction fees are added on top of the block reward. When a miner produces a block, they receive:

total_miner_income = block_reward + sum(transaction_fees)

Where transaction_fees = gasUsed × gasPrice for each transaction in the block.

Since AgentChain does not implement EIP-1559, there is no base fee and no fee burning. The entire gas cost paid by the transaction sender goes to the miner. This means:

  • Miners receive 100% of all gas fees.
  • No CRD is destroyed through fee burning.
  • The effective inflation rate is the block reward inflation plus net transaction fees.

Reward Schedule: First 10 Epochs

The following table shows the block reward, annual token emission, and cumulative supply for the first 10 epochs:

| Epoch | Block Range | Reward per Block (CRD) | Annual Emission (CRD) | Cumulative Supply (CRD) | |-------|-------------|----------------------|----------------------|------------------------| | 0 | 0 - 5,255,999 | 2.000000 | 10,512,000.00 | 10,512,000.00 | | 1 | 5,256,000 - 10,511,999 | 2.040000 | 10,722,240.00 | 21,234,240.00 | | 2 | 10,512,000 - 15,767,999 | 2.080800 | 10,936,684.80 | 32,170,924.80 | | 3 | 15,768,000 - 21,023,999 | 2.122416 | 11,155,418.50 | 43,326,343.30 | | 4 | 21,024,000 - 26,279,999 | 2.164864 | 11,378,526.87 | 54,704,870.16 | | 5 | 26,280,000 - 31,535,999 | 2.208162 | 11,606,097.40 | 66,310,967.57 | | 6 | 31,536,000 - 36,791,999 | 2.252325 | 11,838,219.35 | 78,149,186.92 | | 7 | 36,792,000 - 42,047,999 | 2.297371 | 12,074,983.74 | 90,224,170.66 | | 8 | 42,048,000 - 47,303,999 | 2.343319 | 12,316,483.41 | 102,540,654.07 | | 9 | 47,304,000 - 52,559,999 | 2.390185 | 12,562,813.08 | 115,103,467.15 |

Notes on the Table

  • Annual Emission = reward per block x 5,256,000 blocks per epoch.
  • Cumulative Supply does not include transaction fees (which are transfers, not new supply) and assumes every block is mined on schedule.
  • The 2% compound inflation means supply grows slightly faster than a linear 2% per year. After 10 epochs (~10 years), the annual emission is approximately 19.5% higher than the first year.

Long-Term Supply Projection

The total supply follows a geometric series. After n epochs:

total_supply = 10,512,000 × ((1.02^n - 1) / 0.02)

| Milestone | Approximate Total Supply (CRD) | |-----------|-------------------------------| | 1 year | 10,512,000 | | 5 years | 54,704,870 | | 10 years | 115,103,467 | | 20 years | 255,478,938 | | 50 years | 889,945,656 |

There is no supply cap. CRD has a perpetual inflation schedule, though the 2% rate means the inflation percentage of total supply decreases over time as the denominator grows.

Verifying the Reward

You can verify the block reward for any block by checking the miner's balance change. Using the JSON-RPC API:

# Get the miner's balance before and after a block
# The difference (minus transaction fees received) equals the block reward
 
# Get block details
curl -X POST http://localhost:8545 \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_getBlockByNumber",
    "params": ["0x1", false],
    "id": 1
  }'

The miner field in the response shows the address that received the block reward.

Modifying the Reward (For Testnets)

If you are running an AgentChain testnet and want to adjust the reward parameters, the relevant constants in the Go source are:

  • Base reward: 2e18 wei (the baseReward variable)
  • Inflation numerator: 102 (2% increase; change to 105 for 5%, etc.)
  • Inflation denominator: 100
  • Epoch length: 5_256_000 blocks

Changing any of these values creates an incompatible fork. All nodes on the network must use identical reward parameters.