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.