Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Standard process flow diagrams

(NOT D-Chain specific)

Delegations Flow (cosmos-sdk v0.50)

sequenceDiagram
    participant Delegator
    participant Validator
    participant OtherNodes as Other Nodes
    participant Consensus as Consensus Engine
    participant Staking as x/staking
    participant Slashing as x/slashing
    participant Distribution as x/distribution
    participant Mint as x/mint
    participant Auth as x/auth

    Delegator->>Staking: Delegate tokens
    Staking->>Validator: Update stake

    loop Each block
        Mint->>Auth: Mint new tokens
        Auth->>Distribution: Transfer minted tokens + fees
        Distribution->>Distribution: Calculate rewards
        Distribution->>Validator: Distribute validator rewards
        Validator->>Delegator: Distribute delegator rewards
    end

    rect rgba(0, 0, 0, 0.1)
        Note over OtherNodes,Slashing: Evidence Submission
        OtherNodes->>Slashing: Submit double signing evidence
        Consensus->>Staking: Report missed blocks
        Staking->>Slashing: Check for downtime at end of window
    end

    rect rgba(0, 0, 0, 0.1)
        Note over Slashing,Distribution: On valid evidence
        Slashing->>Validator: Slash
        Slashing->>Distribution: Update rewards
    end

    Delegator->>Distribution: Withdraw rewards
    Delegator->>Staking: Undelegate tokens

    rect rgba(0, 0, 0, 0.1)
        Note over Staking,Distribution: Governance can adjust parameters
    end

Minting Flow (cosmos-sdk v0.50)

sequenceDiagram
    participant Mint as x/mint
    participant FeeCollector as Fee Collector<br/>(x/auth)
    participant Distribution as x/distribution
    participant Validators
    participant Delegators

    rect rgba(0, 0, 0, 0.1)
        Note over Mint,FeeCollector: Minting and Fee Collection
        Mint->>FeeCollector: Mint new tokens
        Note right of FeeCollector: Minted tokens sent to<br/>fee collector account
        activate FeeCollector
        FeeCollector->>FeeCollector: Collect transaction fees
        deactivate FeeCollector
    end

    rect rgba(0, 0, 0, 0.1)
        Note over FeeCollector,Distribution: Distribution Process
        Distribution->>FeeCollector: AllocateTokens()
        FeeCollector-->>Distribution: Transfer all balances
    end

    rect rgba(0, 0, 0, 0.1)
        Note over Distribution,Delegators: Reward Distribution
        activate Distribution
        Distribution->>Distribution: Calculate rewards
        Distribution->>Validators: Distribute validator rewards
        Validators->>Delegators: Distribute delegator rewards<br/>(minus commission)
        deactivate Distribution
    end