Skip to content

feat(axe): add Axe (AXE) on the Dash parser with Axe's own chain parameters - #40

Merged
stultusmundi merged 1 commit into
masterfrom
feat/axe
Oct 30, 2026
Merged

stultusmundi merged 1 commit into
masterfrom
feat/axe

Conversation

@stultusmundi

Copy link
Copy Markdown
Collaborator

What

Adds Axe (AXE), a Dash Core fork (AXErunners/axe, axed 1.6.1.1), served by the Dash parser and RPC with Axe's own chain parameters.

  • New package bchain/coins/axe: NewAxeRPC wraps dash.NewDashRPC, NewAxeParser wraps the Dash parser. Registered as BlockChainFactories["Axe"].
  • dash.DashRPC gets an exported FirstBlockWithSpecialTransactions field. The default stays 1028160, so Dash is unchanged. Axe sets its own DIP3 height, 213696, so blocks from there on are fetched transaction by transaction (the bitcoin block parser cannot read special transactions).
  • configs/coins/axe.json: ports 9169 / 9069 / 8069 / 38369, Insight listener and explorer UI on 3001, public_url https://explorer.axe.zelcore.io, backend backend-axe 1.6.1.1.
  • docs/ports.md (regenerated), docs/insight-compatibility.md, TestInsightProductionCoinConfigs entry.

Why

Axe has no explorer on our infrastructure. Its transaction format is Dash's, so the Dash code does the parsing. Only the network parameters differ, and they must not collide with Dash's in chaincfg.

Sources for the parameters

All from src/chainparams.cpp of AXErunners/axe at tag v1.6.1.1 (identical on master), CMainParams:

  • pchMessageStart b5 ce 6b 04 (read little endian: 0x046bceb5)
  • PUBKEY_ADDRESS 55 (P), SCRIPT_ADDRESS 16 (7), SECRET_KEY 204
  • EXT_PUBLIC_KEY 04 88 B2 1E (xpub_magic 76067358), EXT_SECRET_KEY 04 88 AD E4
  • nExtCoinType 4242; SLIP-0044 lists 4242 as AXE
  • nPowTargetSpacing 2.5 minutes (averageBlockTimeMs 150000); DIP0003Height 213696
  • testnet magic ce e2 ca f1, prefixes 140 / 19

Backend: axecore-1.6.1.1-x86_64-linux-gnu.tar.gz from the official AXErunners release, sha256 f6f8daffa90bfeeb095938144b4a75bd4887fff0d93545d427ca3b1f5cc7e16d (downloaded and hashed, not executed). Layout is axecore-1.6.1/bin/axed, so --strip 1. The 1.6.1.1 daemon is Dash 0.16 based and still needs -deprecatedrpc=estimatefee, as Dash's config passes.

Verification

  • go test -tags unittest ./bchain/coins/axe/ ./bchain/coins/dash/ ./bchain/coins/ ./build/tools/ pass; go vet and gofmt clean.
  • validate_backend_artifacts.py (0 errors, 2 existing warnings for other coins) and the .github/scripts unit tests pass; the port registry check is clean.
  • Parser tests use real Axe mainnet data from a live axed 1.6.1.1: a transaction from block 5005718 (two P2PKH inputs, P2SH output, OP_RETURN, change) and the version 3 type 5 CbTx coinbase of block 5008000. Both raw hexes hash back to their txids, and both parse through ParseTxFromJson. Also covered: network parameters, P and 7 address round trip, pack/unpack.
  • server tests could not be built locally (rocksdb headers missing); CI covers them.

Notes

  • No fiat_rates keys: AXE has no CoinGecko or CoinPaprika listing.
  • Hosts keep their own axed; only blockbook-axe is installed. Backend config is valid but the backend package is not deployed.
  • Axe regtest is not registered: its magic (fc c1 b7 dc) equals Dash's and chaincfg.Register rejects duplicates.

…meters

Axe is a Dash Core fork (AXErunners/axe, axed 1.6.1.1). Its transactions are
Dash's, including the DIP2 special types (CbTx, quorum commitments), so the
new bchain/coins/axe package reuses the Dash parser and RPC. It registers its
own network parameters from src/chainparams.cpp at v1.6.1.1: mainnet magic
b5ce6b04, P2PKH 55 ('P'), P2SH 16 ('7'), standard xpub/xprv versions, testnet
magic cee2caf1.

DashRPC gets an exported FirstBlockWithSpecialTransactions field (default
unchanged at 1028160) so Axe can use its own DIP3 activation height, 213696;
blocks from there on are read transaction by transaction. Axe regtest is not
registered because its magic equals Dash's and chaincfg refuses duplicates.

configs/coins/axe.json: ports 9169/9069/8069/38369, Insight listener and
explorer UI on 3001, SLIP-44 4242, 150 second block time, backend pinned to the
v1.6.1.1 linux x86_64 tarball by sha256. No fiat rates: AXE has no price
listing. Hosts keep their own axed; only blockbook-axe is installed.

Parser tests use real Axe mainnet data: a P2PKH/P2SH/OP_RETURN transaction
from block 5005718 and the version 3 type 5 coinbase of block 5008000, both
hashed back to their txids.
@stultusmundi
stultusmundi merged commit 09108db into master Oct 30, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant