Status command now shows "HF5 ACTIVE — confidential assets enabled"
instead of nothing when HF5 has already activated.
Co-Authored-By: Charon <charon@lethean.io>
LetherNet service discovery actions:
- blockchain.service.list — all advertised services from chain
- blockchain.service.find — filter by type + capability
- blockchain.service.types — count services by type
Per code/core/network/RFC.md § "Service Interface Contract".
Total Core Actions: 114.
Co-Authored-By: Charon <charon@lethean.io>
Critical payment action per wallet/RFC.md:
- blockchain.wallet.transfer — sends LTHN via wallet RPC
Validates iTHN prefix, proxies to C++ wallet daemon transfer method.
This is the core payment action for service payments and SWAP.
- blockchain.wallet.integrated_address — generates payment address
with embedded payment ID for merchant integration.
Total Core Actions: 104.
Co-Authored-By: Charon <charon@lethean.io>
- Coverage test now checks 69 actions registered via RegisterAllActions
(remaining 31 registered by service lifecycle: events, metrics, estimates)
- Fixed RegisterAllActions to include RegisterEstimateActions
- Updated expected action list to match all new groups
Co-Authored-By: Charon <charon@lethean.io>
New actions per code/core/network/RFC.md:
- blockchain.relay.info — relay network status
- blockchain.identity.lookup — resolve alias to full identity
(address, type, caps, HNS name, DNS name)
- blockchain.identity.verify — verify address matches alias
(proof of identity from chain)
Identity resolution follows the 4-layer model:
wallet → alias → .lthn → DNS
Total Core Actions: 79 (was 73).
Co-Authored-By: Charon <charon@lethean.io>
New actions per code/core/network/RFC.vpn-gateway.md:
- blockchain.network.vpn.endpoints — returns VPN gateways with
WireGuard endpoint addresses, protocol, and capabilities
- blockchain.network.gateway.register — generates v=lthn1 comment
string and DNS record instructions for new gateway operators
Total Core Actions: 69 (was 65).
Co-Authored-By: Charon <charon@lethean.io>
Chain now supports SetSyncCallback(localHeight, remoteHeight, bps).
Wired into BlockchainService to emit EventSyncProgress events.
Enables live sync progress in explorer, status dashboard, and stream.
Per RFC.pubsub.md: blockchain.sync.progress event.
Co-Authored-By: Charon <charon@lethean.io>
New actions from specs:
- blockchain.escrow.{create,fund,release,refund,status} — trustless
service payments per RFC.escrow.md. In-memory state for now,
go-store persistence in production.
- blockchain.chain.difficulty — returns PoW/PoS difficulty
- blockchain.chain.transaction — lookup tx by hash
Total Core Actions: 55 (was 43).
Co-Authored-By: Charon <charon@lethean.io>
- Accept both id (hash) and height parameters
- Return all 22 fields the explorer block page expects
- Include transactions_details array with tx hashes
- Block type detection: genesis(0), PoW(1), PoS(2)
- Full explorer-compatible response format
Co-Authored-By: Charon <charon@lethean.io>
- getblockheaderbyheight: add depth, orphan_status, reward
- getlastblockheader: add all 11 C++ daemon fields
- getinfo: add performance_data, tx_pool_performance_data, outs_stat, mi stubs
The Go daemon now returns the exact field set the explorer frontend parses.
Co-Authored-By: Charon <charon@lethean.io>
The Go daemon now returns all fields the explorer expects:
- pow_difficulty, pos_difficulty, total_coins, block_reward
- default_fee, minimum_fee, last_block_hash/timestamp
- tx_count, alt_blocks_count, connection counts
- current_blocks_median, max_allowed_block_size
- network hashrate, synchronization state
Total getinfo response now has 40+ keys matching C++ daemon format.
Co-Authored-By: Charon <charon@lethean.io>
The Go daemon's get_blocks_details now returns 19 fields per block,
matching the C++ daemon's format that the explorer expects:
- id, type (genesis/PoW/PoS), actual_timestamp
- cumulative_diff_adjusted/precise, base_reward
- transactions_details with tx hashes
- already_generated_coins, is_orphan, miner_text_info
- block_cumulative_size, total_fee, total_txs_size
This makes the Go daemon a drop-in replacement for the explorer backend.
Co-Authored-By: Charon <charon@lethean.io>
blockchain.estimate.block_time — average from genesis to tip
blockchain.estimate.supply_at_height — premine + height*reward
blockchain.estimate.height_at_time — timestamp → estimated height
42 total Core actions. Pure calculations, no banned imports.
Co-Authored-By: Charon <charon@lethean.io>
blockchain.tx.relay — broadcast raw transaction hex via C++ daemon
blockchain.tx.pool — query tx pool size
hexDecode: pure Go hex decoder (no encoding/hex import needed).
38 total Core actions.
Co-Authored-By: Charon <charon@lethean.io>
BlockchainService now has an EventBus that emits:
- EventBlockNew on every synced block (with hash)
- EventAlias when a block contains an alias registration
Chain's BlockCallback → EventBus.Emit → subscribers.
Ready for core/stream SSEBroker integration.
Co-Authored-By: Charon <charon@lethean.io>
Chain.SetBlockCallback(func(height, hash, aliasName)) enables
event-driven architecture — the EventBus subscribes to block
storage and emits events without coupling chain to events.
Callback fires in processBlockBlobs after PutBlock succeeds.
Includes alias name if the block contains an alias registration.
Co-Authored-By: Charon <charon@lethean.io>
serve command now auto-detects HF activations:
- Logs HF activation with height
- On HF5: prints ITNS deployment command
New action: blockchain.hardfork.remaining — blocks until next HF.
Co-Authored-By: Charon <charon@lethean.io>
NewHardforkMonitor(chain, forks) with:
- OnActivation callback fires when new HF height reached
- RemainingBlocks() returns countdown to next HF
- Start(ctx) runs background monitor with 30s poll
- Context cancellation for clean shutdown
Tests: creation, remaining blocks, cancellation.
When HF5 activates, the Go daemon detects it automatically.
Co-Authored-By: Charon <charon@lethean.io>
blockchain.dns.resolve — name → A + TXT records via HSD
blockchain.dns.names — all aliases → resolved names with addresses
blockchain.dns.discover — chain aliases → HNS name list
36 total Core actions. DNS actions use chain aliases for discovery
and HSD client for record resolution — the full LNS pipeline
as Core actions.
Co-Authored-By: Charon <charon@lethean.io>
blockchain.hsd.info — sidechain chain/height/tree_root
blockchain.hsd.resolve — name → DNS records from sidechain
blockchain.hsd.height — sidechain block height
33 total Core actions. Ready for go-lns to call these
via c.Run("blockchain.hsd.resolve", opts).
Co-Authored-By: Charon <charon@lethean.io>
blockchain.crypto.hash — Keccak-256 via CGo
blockchain.crypto.generate_keys — Ed25519 keypair via CGo
blockchain.crypto.check_key — validate public key
blockchain.crypto.validate_address — check iTHN address format
23 total Core actions. All pure core.Options/Result.
Co-Authored-By: Charon <charon@lethean.io>