Skip to content

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