What's shipped, what's next, what we're kanoodling on.
This page is our kanban board. Every phase we've finished, every item we're actively building, every half-formed idea sitting in the parking lot. Updated as often as the code changes — with dev notes in between for the thinking that doesn't fit a task row.
60+ items shipped, 115,000+ blocks produced.
The chain is running. Eight validators across three continents producing blocks under real BFT consensus. Explorer, CLI wallet, Chrome extension, desktop app + auto-updater, playground, SDK, social showcase, Telegram wallet — all live today.
The current focus — delegate, tokenise, govern.
Cross-contract calls and the desktop auto-updater are out the door. What is next: commission + delegation, the ARC-20 token standard, governance v2 tiers, and growing the public validator set. All on the path to mainnet.
Ideas worth remembering, not ready to commit.
Dynamic fee adjustment. Bond burning on slashing. WebSocket subscriptions. DeFi primitives. On-chain token registry. The parking lot is where an idea lives until we have the evidence or the time to move it up the board.
What we're building right now.
Governance v2 tiers.
Split proposals into hard and soft. Soft for parameter tuning and treasury spends. Hard for invariants, VM libraries, and economic changes — 3-week window, 2/3 supermajority, 10% stake quorum. Hard floors stay unreachable.
Commission + delegation.
Per-validator commission rate (20% cap, 24h change cooldown), delegator accounts with pro-rata rewards and shared slashing, redelegate helper. The rest of Staking v2 — what makes home validating economic for small operators.
ARC-20 token standard.
Native token interface for the chain: balanceOf, transfer, approve, allowance + Transfer/Approval events. Explorer decodes Transfers, wallet auto-detects holdings, optional on-chain TokenRegistry for verified metadata. Blocks mainnet readiness.
‣ Dev note
“A chain that claims ‘anybody can validate’ can't halt when a laptop closes. So we made the committee a function of who actually showed up in the last 30 blocks.”
— after the 23h outage
Governance v2 — hard/soft tiers
Tier field on proposals, different bond + quorum + window + supermajority per tier. Hard floors stay governance-unreachable. Needed before Phase 3.
Commission + delegation
Per-validator commission (20% cap, 24h cooldown), delegator accounts with pro-rata rewards + shared slashing, redelegate helper. The rest of Staking v2.
Validator cluster expansion
More public validators, community-run. The one-liner installer made onboarding trivial; pairs with delegation so small operators can run without 500 ASE of their own.
ARC-20 token standard
Token interface — balanceOf, transfer, approve, allowance + Transfer/Approval events. Docs page, playground template, explorer Transfer decoding, wallet token UI. First step toward a real token ecosystem.
Governance UI in Operator
Create-proposal form and vote buttons in the Governance tab. Read-only today.
Website /download page
Aggregates all install paths (Chrome extension, Operator, CLI, VPS one-liner) with status chips. Operator packaging is done — page just needs writing.
Chrome Web Store resubmission
Get the native extension wallet back in front of reviewers. Listing copy, screenshots, privacy declarations.
‣ Dev note
“Design target is 2-second blocks. Runtime is 6. The right answer isn't a guess — it's whatever p99 vote propagation tells us when we have 50 validators instead of 5.”
— on block time tuning
The work that's already running in production.
Phase by phase, oldest first. None of this is speculative — every row below is code you can run or a block you can look up on the explorer today.
BFT consensus engine
Tendermint-style with pre-vote / pre-commit / 2/3 finality. Tested against a 4-validator local devnet before any network code was written.
Dilithium3 signatures
ML-DSA-65 (NIST FIPS 204) across every signature path: votes, transactions, block proposals. Zero classical crypto anywhere.
Hardened JavaScript VM
SES Compartments for contract execution, frozen primordials, no ambient authority. Deterministic across CPU architectures.
Sparse Merkle Tree state
BLAKE3-keyed over LevelDB. State root in every block header.
Staking + slashing as contracts
Both modules are system contracts, not special chain code. Upgradeable via governance, inspectable like any other contract.
‣ Dev note
“Four validators, 200 lines of code, zero network sockets. The whole BFT engine gated on a single Promise. It just worked.”
— building consensus before networking
testnet.asentum.com live
2-second blocks, BFT finality, ML-DSA-65 everywhere. Caddy + Let's Encrypt TLS. JSON-RPC open to all origins.
Block explorer (rebrand)
Dark editorial palette replacing the phosphor-green terminal look. Block / tx / address / contract detail pages, search, validator list.
Faucet
Drip test ASE to any address from the explorer, via RPC, or via the wallet UI.
MetaMask compatibility
Standard eth_* JSON-RPC methods work unmodified. MetaMask reads the chain; the Asentum Wallet does the Dilithium3 signing.
‣ Dev note
“Spent weeks fighting libp2p mesh negotiation. Then I just POSTed votes over HTTP to every peer. Less cool to say. Way more reliable in practice.”
— on killing libp2p
CLI + curl | sh installer
Single Node-SEA binary for macOS, Linux, Windows. One-liner drops it on $PATH and pre-configures the testnet RPC.
Native Chrome extension wallet
Manifest V3 with window.asentum provider. Password-encrypted vault, per-origin permissions, per-tx approval popups, multiple accounts.
Contract playground
In-browser IDE at /playground. Three templates, wallet connect, post-deploy method introspection with auto-generated forms.
@asentum/sdk
TypeScript SDK — AsentumClient, AsentumWallet, AsentumContract. ~14 KB bundled, works in Node and browser.
Asentum Operator desktop app
Electron app spawning a real validator as a child process. GUI onboarding, chain sync, staking form, system-tray background mode.
On-chain governance v1
Single-tier proposals with bond, quorum, voting window, execution timelock. VM library injection end-to-end.
Five validators, three continents
Four Hetzner CX22 boxes across Germany + US East + US West, plus a local Mac. BFT surviving real network jitter.
Graceful quorum transition
PENDING_BLOCKS = 10. New validators enter a pending window before being counted for consensus.
Kill-one survival verified
Shut down primary, three survivors kept producing blocks, primary rejoined and synced back. Zero tombstones, zero forks.
Liveness-aware committee
Committee = registered validators who proposed ≥ 1 of the last 30 blocks. Deterministic, home-validator tolerant. A closed laptop no longer halts the chain.
Minimum self-bond (50,000 ASE)
bond() rejects totals below the floor. Applies to initial bonds and partial tops. Exiting below the floor must be a full unbond.
Stake-concentration handled by the 10% per-block reward cap
No hard maximum self-bond. Concentration economics are addressed by the 10% per-block reward cap — excess emission redistributes pro-rata to non-capped validators in the active committee.
14-day unbonding window
unbond() queues into pending withdraw with unlockAt = block + 604,800. Stake stays slashable during the window. Closes the slash-and-run hole.
withdraw() + getWithdrawable()
Claim matured withdrawals; wallets read the pending/matured breakdown for the UI. getStakingParams() exposes the four constants for config-driven frontends.
curl | bash validator installer
Single-command setup on a fresh Ubuntu box: deps, node bundle, Dilithium3 key, systemd unit, ufw, sync progress bar, balance polling, auto-bond, active-set confirmation.
asentum-validator CLI wrapper
status / balance / earnings / transfer / unstake / withdraw / keys / logs / start / stop / restart. Lands on $PATH after install.
msg.value coupling for bond
bond(pubKey) reads from msg.value, debits the caller, credits the staking contract. withdraw() uses the new transfer() VM primitive to send matured ASE back.
SDK getReceipt false-positive fix
Chain returns 200 OK with {error,txHash} for unmined txs. SDK was treating that as a valid receipt; tx.wait() now polls correctly.
Five-validator cluster live
Germany ×2, US ×2, Asia ×1. New Asia node onboarded end-to-end via the one-liner — strangers can now bring up validators without me on a call.
Cross-contract E() async calls
E(addr).method(args) with a call-stack reentrancy guard, atomic rollback on revert, and contract pre-loading from tx args. The mechanism that makes composability without reentrancy possible.
$ASE live on Ethereum mainnet
ERC-20 deployed at 0x041Ff0…1D80B2 with a Uniswap V2 ETH/ASE pair. Real liquidity, real price discovery. Listed on the Uniswap interface and routed in the swap aggregator.
Presale contract + ETH referrals
73 Hardhat tests covering bonus window, hardcap, wallet cap, full E2E lifecycle. Pull-based 5% ETH referral payouts. Deployed at 0x7ac5…C214; wired to the live website.
Founders-round ASE distribution
On-chain distribution to founders-round contributors with claim flow at /claim. Referral earnings claimable from the same page.
Standalone explorer at explorer.asentum.com
Next.js app with its own indexer. Search, address pages, block detail, validator list with proposer counts. Decoupled from the node binary so explorer ships ship independently.
Social showcase at social.asentum.com
On-chain social dapp built on five contracts (Profile / Posts / Follow / Gallery / Votes). Light editorial theme, Cloudinary image uploads, live activity stream, tx-on-explorer link from every post.
Social indexer service
Background indexer over the social contracts. HTTP API for activities + post lookups, WebSocket stream for live updates. Replays from genesis on cold start.
Telegram wallet bot
Wallet-as-a-bot. Dilithium3 wallet bound to a Telegram ID, 6-character pairing code for dapp connections, inline-keyboard transaction approval. No app store, no extension.
Operator v0.5.x + auto-updater
Signed .dmg + .exe builds with electron-updater wired to a downloads server. Recovery-phrase import for existing wallets. Snapshot-based sync. The download page is unblocked.
Mobile PWA wallet
Web-based wallet at wallet.asentum.com. Mobile-first, installable to home screen via service worker. Reuses extension wallet logic. The fallback for users who cannot install the extension.
IDE at ide.asentum.com
Full Remix-style contract IDE. Monaco editor, multi-file projects, deploy/interact panel, contract verification, deployment history, testnet/mainnet switching. Replaces the current /playground.
docs.asentum.com + AIPs
Move docs to a subdomain. Formal Asentum Improvement Proposal process — governance-adjacent off-chain discussion.
Token indexer
Background scanner that indexes Transfer events per block into a holder map. Enables token list page, top holders, holder counts, volume tracking on the explorer.
Native cron + ARC-21 subscriptions
Protocol-level scheduled execution. Cron registry system contract, block builder fires due jobs before mempool. Enables recurring payments, DCA, streaming payments. No other L1 has this at the protocol level.
Ethereum ↔ Asentum bridge
Phase 1: multisig trusted bridge for ERC-20 ↔ native ASE. Phase 2: Ethereum light client on Asentum (BLS12-381 verification). Phase 3: Solidity ML-DSA-65 verifier — first PQC-to-EVM verified bridge.
Website light mode
Light/dark toggle for asentum.com. Design the light palette to match the social showcase, update every page. Dark-only today.
Recovery phrases across all wallets
BIP-39 24-word format with Asentum-specific Dilithium3 derivation. Operator already imports; remaining is unified gen + format across extension + CLI.
CI pipeline for SEA builds
GitHub Actions matrix → artifacts on release tag → auto-rsync to /install/ and /downloads/. Replaces manual local cross-build.
‣ Dev note
“No delegation? No mainnet. No hard/soft governance? No mainnet. Docs misaligned with code? No mainnet. The gate is in the list, not on a date.”
— on why mainnet isn't scoped
WebSocket subscriptions
eth_subscribe for newHeads, logs, pending txs. HTTP-only today. Not hard, just hasn't been needed.
Dynamic EIP-1559 base fee
Static at 1 wei today because block utilisation has been trivial. Adjustment algo ready to drop in when congestion appears.
Service-node reward pool
15% of base fees diverted before burn, routed to service nodes. Needs per-request tracking + periodic payouts.
Block time tuning
Running 2s today. Whether that stays optimal depends on real p99 vote propagation when the validator set is bigger.
Historical balance queries
eth_getBalance(addr, blockTag) — needs state snapshots per block. Archive-mode only.
Per-opcode gas metering
Finer metering would price individual JS operations more fairly but adds real VM complexity.
Bond burning on slashing
Today a slash tombstones but doesn't burn. Burn closes the slash-and-run loophole. Trivial once burn fraction is signed off.
Code-signing certs
Apple Developer ID + notarization for macOS. EV Authenticode for Windows to kill SmartScreen. Budget question.
On-chain TokenRegistry
System contract where deployers register tokens. Verified token list. Explorer reads the registry for authoritative metadata. Optional final phase of the ARC-20 rollout.
DeFi / AMM primitives
Reference AMM, reference lending, reference stablecoin. Not part of the protocol, but part of what needs to exist.
Mainnet launch
Phase 4. Not dated. We ship when the spec is closed, economics finalised, and external audits come back clean.
‣ Dev note
“Every chain shows you the curated ‘we're building this’ list. The parking lot is where we also show what we're NOT building — yet.”
— on keeping the lot visible
A chain that's built in public, one row at a time.
Join the launch list and we'll send you a note whenever something significant lands — never anything else. Or read the thesis if you want the why before the what.