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 separate runtime-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.