Developers
Build with native asset operations.
Heartwood Core is a modular Rust workspace. Integrate accounts, assets and transfers through the API, or run relay and forger processes.
Heartwood follows ARK and Solar’s protocol lineage: reproduce a pinned Solar reference in Rust, then introduce IceRoot’s protocol changes. The implementation and those changes are new. Read the engineering background →
Architecture
Separate responsibilities.
The relay handles peers, state and the API. The forger signs its validator’s blocks. The indexer serves history. Connectors read source networks.
Processes
- relay
- Peer networking, state, and the API.
- forger
- Holds the consensus key and signs its validator’s blocks. No public listener.
- connector
- One per validator, running outside the node. Reads source networks and signs migration lists.
Native protocol modules
- accounts
- assets
- transfers
- swaps
- time locks
- keys
- validators
- votes
- finality
- rewards
- fees
- migrations
Each module owns a set of state transitions. None of them runs user-supplied code.
Interfaces and tooling
- api
- Familiar endpoints to read state and submit transactions.
- local network
- A relay and a forger for each validator, on one machine, from heartwood devnet.
Transactions
Native transaction types.
Each transaction type has defined fields and validation rules. Fees are paid in ROOT, with 90% burned; burning ROOT itself has no fee.
About the memo
A transaction can carry one memo of up to 255 bytes of text. It is signed, paid for by size and never executed; exchanges use it for deposit tags.
transferMove one asset to 1 to 256 recipients, with one memo.burnDestroy your own units. Burning ROOT has no fee and a 0.02 ROOT minimum; other assets pay the ordinary ROOT fee with no burn minimum. Burns are counted apart from exits.asset creationCreate a native asset and credit its whole, fixed supply to the creator. Seedbed builds on this.metadata and authoritiesReplace an asset’s metadata link and hash, or move or renounce its authorities. No authority can touch balances.atomic swapExchange two assets between a maker’s signed offer and the taker who submits it, all or nothing, with no partial fills. The taker pays the fee.hash time-locked transferLock units under a hash lock and an expiry height at least 900 blocks ahead. Anyone can claim for the recipient with the secret; the sender can refund only once the expiry height is final.time-locked transferPlace units in entries that no one can revoke, one per vesting tranche, each claimable after its unlock time.voteSplit your ROOT vote weight across 20 to 53 validators, at most 5% to each.validator registrationRegister a validator with its name and keys, for a 250 ROOT surcharge.reward-sharing declarationA validator declares the reward share it intends to pay its voters, for a 25 ROOT surcharge. Payment is not enforced; the explorer shows what it observes being paid.account nameRegister one name of 1 to 20 lowercase letters for 125 ROOT; reserved names and banned words are refused. An ordinary account’s name moves only to a fresh account that claims it. A current or former validator’s name never moves.key managementRotate keys, add a second key or convert an account to multisig.migrationRegister external assets, commit certified lists, credit them in order and exit to allowed destinations.
Local testing
A network on one machine.
Use a local relay and validators to inspect state transitions and exercise the API. This command sketch shows how the processes fit together. The relay and forger commands exist in development builds, and the heartwood devnet command starts a local network of both.
Resources
Explore the protocol.
- Source repositoryPublic IceRoot repositories and SDKs. Heartwood Core is planned to become public with the public testnet announcement.Open ↗
- DocumentationOperator and developer guides.Open ↗
- NetworkConsensus, native transactions and ROOT.Open ↗
- MigrationsRoute methods and verification rules.Open ↗
- SecuritySigning scope and trust boundaries.Open ↗
- RoadmapMilestones, releases and implementation status.Open ↗
