Taler Blockchain Node Project Documentation¶
Core Documentation¶
- Project Overview - Architecture, runtime composition, consensus
- Node Deployment - Installation, build, launch, operations
- Partner Pallet Integration - Adding external pallets
Detailed Staking Pallet Analysis¶
- Complete Staking Pallet Analysis - Comprehensive analysis of mod.rs and impls.rs
- Detailed Function Analysis - Detailed description of key functions
- Architecture Diagram - Visualization of structure and data flows
Technical Documentation¶
- Rust Setup - Rust installation and dependencies
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¶
3. Start Dev Network¶
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.