Getting Started

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.html 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

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.