Project overview
Taler Substrate Node Project Overview¶
This repository is a full-featured Substrate node (FRAME) with a custom "taler" runtime and modified staking module. Cargo workspace structure:
node/— node binary (taler-node): CLI, service, RPC, chain specs, entry point.runtime/— runtime (Wasm and native) with a set of connected pallets, types and constants.pallets/staking/— forked staking pallet with modifications and separateruntime-api.primitives/— common types (AccountId, Balance, etc.).utils/chain-spec-builder/— utility for building chain-spec.
Key Technologies: - Consensus: BABE (block production) + GRANDPA (finalization). - Wallets: addresses with SS58 prefix 10960 (runtime/src/lib.rs, type SS58Prefix = ConstU16<10960>). - Economy/payments: fees calculated through pallet-transaction-payment with reduced WeightToFee coefficient (2%). - Governance: Democracy, Council, Technical Committee, Treasury, Bounties/Tips, Proxy, Multisig, Scheduler, Preimage, Identity, Recovery, Vesting. - Assets/NFT: pallet-assets, pallet-nfts, pallet-nft-fractionalization (+ runtime API for getting asset balances). - Contracts: pallet-contracts (Wasm smart-contracts, CallFilter disabled by default, requires whitelist in production). - Online monitoring: pallet-im-online, authority-discovery, offences.
Runtime Versioning: - Name: spec_name = "taler", impl_name = "base-taler". - spec_version = 12, transaction_version = 2 (when changing logic — increment spec_version).
Staking (features): - Customized pallets/staking pallet connected in runtime instead of standard (see runtime/Cargo.toml, pallet-staking points to local path). - Additional emission/interest parameters: IssuanceLimit, StandartStakingInterest, VividStakingInterestPerMonth. - Custom VividStakingState types in exposure/nomination, extended penalty and distribution logic. - Separate runtime-api in pallets/staking/runtime-api for external requests (e.g., nomination quota, payout estimation).
Runtime Composition (fragment): - Basic: System, Timestamp, Indices, Balances, TransactionPayment, Utility, RandomnessCollectiveFlip. - Consensus/sessions: Babe, Session, Grandpa, ImOnline, Historical, AuthorityDiscovery, Offences, ElectionProviderMultiPhase, BagsList, Staking. - Governance: Democracy, Council, TechnicalCommittee, ElectionsPhragmen, Membership, Scheduler, Preimage, Sudo. - Treasury: Treasury, Bounties, Tips. - Asset ecosystem: Assets, Nfts, NftFractionalization, TransactionStorage. - Identity and security: Identity, Recovery, Vesting, Proxy, Multisig. - Contracts: Contracts (Wasm).
RPC and External Interfaces: - HTTP/WS RPC exposed by node (node/src/rpc.rs), compatible with polkadot.js/apps. - Runtime APIs: assets_api, pallet_staking_runtime_api, contracts, transaction_payment, nfts_runtime_api, session keys and others.
Build and Profiles: - workspace with default-members = ["node"]. - Profiles: release (panic = unwind) and production (LTO, codegen-units=1, strip=true) for compact binary.
Purpose: - Base L1/L2 chain for partner integration with custom pallets, economy and assets.