How Amadeus Protocol Distributes Block Rewards: Validator, Founder, and Treasury Split Explained
Amadeus Protocol distributes block rewards through a multi-tiered mechanism that splits minted AMADEUS tokens between validators, founders, and treasury, with inflation-adjusted rates defined in the consensus layer.
In the Amadeus Protocol node implementation, block rewards are not paid to a single recipient. Instead, each successfully sealed block triggers a split allocation defined by on-chain parameters. This article breaks down the reward distribution logic found in the Rust-native consensus engine and Elixir coordination layer, showing exactly how incentives flow through the system.
Understanding the Four-Component Reward Structure
According to the source code in amadeusprotocol/node, block rewards are divided across four distinct components. Each serves a specific purpose in the protocol's tokenomics:
| Component | Description | Source File |
|---|---|---|
| Validator (Block Producer) Reward | Base payment to the validator that proposes and seals the block, minted directly at block finalization | ex/native/rdb/src/consensus/bic/epoch.rs |
| Founders / Development Fee | Fixed percentage directed to protocol development funding | ex/native/rdb/src/consensus/bic/epoch.rs |
| Community / Treasury Allocation | Configurable portion reserved for ecosystem grants and network upgrades | ex/lib/consensus/models/consensus.ex |
| Slashing Redistribution | Confiscated rewards from malicious validators redistributed to honest participants | ex/native/rdb/src/consensus/bic/lockup_vault.rs |
Block Reward Calculation in the Consensus Engine
The reward computation begins in the Rust-native consensus module. When a validator produces a block, the calculate_base_reward function determines the minting amount based on the current inflation factor.
// Rust-side: minting reward when a block is sealed
fn mint_block_reward(block: &Block) -> Result<RewardAllocation, Error> {
let reward = calculate_base_reward(block)?;
let founders = reward * FOUNDERS_RATE;
let treasury = reward * TREASURY_RATE;
let validator = reward - founders - treasury;
Ok(RewardAllocation {
validator,
founders,
treasury,
})
}
The FOUNDERS_RATE and TREASURY_RATE constants are defined in the epoch parameters. As implemented in ex/native/rdb/src/consensus/bic/epoch.rs, these rates apply uniformly across each epoch of 100,000 blocks.
Elixir Coordination Layer for Reward Distribution
The Elixir side of the node handles higher-level reward orchestration. The Amadeus.Consensus.Reward module exposes the computation logic to the broader system:
# Example: calculating a validator's reward in the consensus engine
defmodule Amadeus.Consensus.Reward do
@epoch_blocks 100_000
@founders_rate 0.10 # 10% of minted reward goes to founders
@treasury_rate 0.05 # 5% goes to the treasury
def compute_reward(block_height) do
inflation = current_inflation(block_height)
base_reward = inflation * block_reward_constant()
founders = Float.round(base_reward * @founders_rate, 2)
treasury = Float.round(base_reward * @treasury_rate, 2)
validator = base_reward - founders - treasury
%{validator: validator, founders: founders, treasury: treasury}
end
end
This module bridges the Rust-native calculations with the node's operational state, ensuring consistent reward values across the distributed system.
Epoch-Based Inflation and Parameter Adjustments
Amadeus Protocol reduces block rewards over time through a predetermined inflation curve. The schedule is enforced at epoch boundaries:
- Block Production — Validator seals block, triggering reward calculation
- Minting — AMADEUS tokens are created according to
current_inflation(block_height) - Split Application — Fixed percentages分配给 validator, founders, and treasury
- Epoch Transition — Every 100,000 blocks, inflation factor recalculates for the next epoch
The epoch.rs file contains the constants governing this schedule. The gradual reduction ensures long-term token scarcity while maintaining validator participation incentives.
Slashing and Reward Redistribution
Not all distributed rewards remain with their initial recipients. The lockup_vault.rs module implements slashing logic that affects reward flows:
- Double-signing or equivocation triggers confiscation
- Slashed amounts redistribute to validators who detected the misbehavior
- Unspent rewards from offending blocks remain subject to retroactive slashing
This creates a secondary reward stream for honest validators beyond base block production.
Key Source Files for Block Reward Distribution
| File Path | Purpose |
|---|---|
ex/native/rdb/src/consensus/bic/epoch.rs |
Epoch constants, inflation schedule, founders reward parameters |
ex/lib/consensus/models/consensus.ex |
Treasury handling and high-level reward distribution |
ex/native/rdb/src/consensus/bic/lockup_vault.rs |
Slashing mechanisms and reward redistribution |
ex/lib/consensus/models/entry.ex |
Entry validation and special block handling affecting reward eligibility |
Summary
- Block rewards in Amadeus Protocol split three ways: validator payment, founders development fund, and community treasury
- Minting occurs at block sealing through the Rust-native consensus engine in
epoch.rs - Elixir coordination layer (
consensus.ex) manages operational reward distribution - Inflation decreases per epoch (100,000 blocks) according to a predetermined curve
- Slashing redistributes confiscated rewards to honest validators via
lockup_vault.rs
Frequently Asked Questions
What percentage of block rewards go to founders and treasury?
Based on the source code constants in epoch.rs and the Elixir reward module, founders receive approximately 10% and treasury receives 5% of each block's minted reward. The remaining ~85% goes to the block-producing validator. These rates are configurable at epoch boundaries.
How does Amadeus Protocol prevent inflation from devaluing the token?
The protocol implements a predetermined inflation curve that reduces the minting rate at each epoch transition (every 100,000 blocks). This schedule is hardcoded in the consensus parameters found in ex/native/rdb/src/consensus/bic/epoch.rs, ensuring predictable and gradually decreasing token issuance.
Can validators lose rewards after receiving them?
Yes. Through the slashing mechanism in lockup_vault.rs, validators proven to have engaged in double-signing or equivocation can have unspent rewards confiscated retroactively. These slashed amounts are then redistributed to the validators who helped detect and prove the malicious behavior.
Where is the treasury allocation stored and how is it spent?
The treasury portion of block rewards is deposited to a multi-signature treasury address managed through the consensus model in ex/lib/consensus/models/consensus.ex. Withdrawals require consensus-approved proposals, ensuring community governance over ecosystem grants and network upgrades.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →