Skip to content

Taler Blockchain Node Project Documentation

Core Documentation

Detailed Staking Pallet Analysis

Technical Documentation

Overview

Key Features

🏗️ Architecture

  • Substrate Node: Full-featured node with CLI, RPC, chain-spec
  • Custom Runtime: "taler" runtime with a set of pallets
  • Modified Staking: Custom staking pallet with vivid functionality
  • Consensus: BABE + GRANDPA for block production and finalization

💰 Economic Model

  • Standard Staking: Basic staking with fixed percentages
  • Vivid Staking: Additional percentages for long-term locking
  • Issuance Limits: Token emission control
  • Flexible Rewards: Flexible reward system with different recipients

🔧 Technical Features

  • SS58 Prefix: 10960 for addresses
  • Storage Optimization: Efficient storage algorithms
  • Election Provider: NPoS validator elections
  • Runtime API: External interfaces for integration

Quick Start

1. Install Dependencies

# See rust-setup.md for detailed instructions
rustup default stable
rustup update
rustup target add wasm32-unknown-unknown --toolchain nightly

2. Build the Project

cargo build --release

3. Start Dev Network

./target/release/taler-node --dev -lruntime=debug

4. Connect to Polkadot.js Apps

Open Polkadot.js Apps and connect to ws://localhost:9944

Project Structure

taler_blockchain_node/
├── node/                    # Node binary
│   ├── src/
│   │   ├── main.rs         # Entry point
│   │   ├── service.rs      # Node service
│   │   ├── rpc.rs          # RPC configuration
│   │   └── chain_spec.rs   # Chain specifications
├── runtime/                 # Runtime
│   ├── src/
│   │   ├── lib.rs          # Main runtime
│   │   ├── constants.rs    # Constants
│   │   └── impls.rs        # Trait implementations
├── pallets/                 # Pallets
│   └── staking/            # Custom staking pallet
│       ├── src/
│       │   ├── lib.rs      # Main pallet
│       │   ├── pallet/     # Pallet implementation
│       │   │   ├── mod.rs  # Pallet structure
│       │   │   └── impls.rs # Business logic
│       │   └── weights.rs  # Function weights
│       └── runtime-api/    # Runtime API
├── primitives/              # Common types
└── utils/                  # Utilities
    └── chain-spec-builder/ # Chain-spec builder

Core Components

🎯 Staking Pallet

  • Standard Staking: Basic staking with fixed percentages
  • Vivid Staking: Additional percentages for months of locking
  • Validator Management: Validator management
  • Nominator System: Nominator system
  • Reward Distribution: Reward distribution

🔄 Session Management

  • Era Planning: Era planning
  • Session Rotation: Session rotation
  • Validator Selection: Validator selection
  • Election Provider: Election provider

💎 Runtime API

  • Staking Interface: Staking interface
  • Election Provider: Election provider
  • Session Manager: Session manager
  • External APIs: External APIs

Development

Adding New Pallets

See Partner Pallet Integration for detailed instructions.

Staking Modifications

See Detailed Staking Pallet Analysis for understanding the architecture.

Testing

# Run tests
cargo test

# Benchmarking
cargo run --release --features runtime-benchmarks -- benchmark pallet --pallet pallet_staking --extrinsic '*' --steps 20 --repeat 10

Support

For questions and suggestions, create issues in the repository or contact the development team.

License

The project uses Apache 2.0 license. See LICENSE for details.