konar est. 2026
CASE STUDY · 05
GOVERNMENT-GRADE CRYPTO CUSTODY  ·  2022 — 2024  ·  ENGINEER

I built the multi-sig engine at a custody platform that 2× AUM during my tenure.

Asset Reality is the end-to-end platform governments use to seize, manage, and dispose of digital and physical assets. During 19 months on the engineering team (Jul 2022 – Feb 2024), I owned two load-bearing systems: the multi-signature governance and escrow engine that controls every custody withdrawal, and the 12-chain blockchain ingestion platform that monitors the network in real time. Platform AUM grew from $200M when I joined to $500M by the time I left, with seizure workflows live across French, Belgian, US, EU, and Caribbean law enforcement. AUM figures are platform-attributable, not personal, but the systems that sustained that growth are mine.

TENURE
19 mo
jul 2022 – feb 2024
AUM GROWTH
$200M → $500M
during tenure · $1B+ AUM post-tenure
CHAINS INGESTED
12
real-time blockchain indexing
JURISDICTIONS
5+
fr · be · us · eu · caribbean
COMMITS
860
across 25 repos
SERVICES OWNED
2
governance · chain ingestion

When governments seize crypto, the asset doesn't sit in an evidence bag. It needs to be transferred into custody, tracked across jurisdictions, approved for disbursement by multiple agencies, and produce an audit trail that will survive courtroom scrutiny. Until recently there was no dedicated infrastructure for any of this. Asset Reality built it: multi-sig governance workflows, escrow state machines, blockchain ingestion across 12 chains, chain-of-custody document trails, and APIs that law enforcement agencies actually integrate with. I joined in July 2022 and owned two of the platform's critical subsystems for the next 19 months.

  ┌─ blockchain layer (12 chains: ETH · BTC · BCH · LTC · DOGE · XRP · SOL · TRON · MATIC · ARB · ERC-20)
  │
  ├──▶ ar-chain-service          [ go workspaces · per-chain monitor modules ]
  │      ├── eth-monitor          go-ethereum ws client, real-time block subscription
  │      ├── btc-monitor          RPC + mempool monitoring
  │      ├── sol-monitor / trx-monitor / xrp-monitor / …
  │      ├── chain-broker         RabbitMQ AMQP fanout — normalized tx events
  │      └── tx-history-service   consumer → MongoDB tx records
  │
  ├──▶ ar-custodian-service       [ go · Fireblocks REST API ]
  │      JWT-signed Fireblocks client — vaults, wallet addresses, balances,
  │      transactions, exchange accounts
  │
  └──▶ ar-governance-service  [ go · MongoDB · WebSocket · RabbitMQ ]
         │
         ├── escrow state machine
         │     PENDING → AWAITING_APPROVAL → APPROVED / DENIED / EXPIRED
         │     auto-denial when approval threshold becomes unreachable
         │
         ├── multi-sig approval engine
         │     Group A (mandatory approvers) + Group B (configurable threshold)
         │     any required approver rejection → immediate denial
         │     real-time WebSocket push to all pending approvers
         │
         ├── Fireblocks webhook handler
         │     SUBMITTED → PENDING_SIGNATURE → BROADCASTING → CONFIRMED
         │     status propagated to escrow record + downstream notifiers
         │
         └── notification pipeline → RabbitMQ → ar-notification-service → email
                                                │
                                                ▼
                              ┌─ ar-account-service  [ PostgreSQL · GORM · Redis ]
                              │   orgs · users · escrow accounts · RBAC
                              │
                              └─ ar-frontends (React 18 · Ant Design · Turborepo)
                                    custody app · activity app · escrow app
                                    seizure wallet flows · portfolio views
                                    external-ID chain-of-custody system
01  ·  DECISION
Configurable multi-sig groups over fixed N-of-M

ar-governance-service supports named groups (A and B) with per-group mandatory approvers and configurable thresholds, not a fixed N-of-M scheme. Agencies have different approval hierarchies; the state machine accommodates them without code changes. Mandatory approvers within a group make it impossible to route around specific roles.

02  ·  DECISION
Auto-denial when threshold becomes unreachable

If enough required approvers have denied that the remaining approvals can never reach the threshold, the escrow record is automatically set to DENIED without waiting for a timeout. Government custody workflows can't have funds hanging in limbo. Deterministic denial keeps queues clean and audit trails unambiguous.

03  ·  DECISION
Per-chain Go workspace modules for ingestion

The 12 chain monitors live as independently deployable Go workspace modules inside ar-chain-service, wired through a chain-broker via RabbitMQ AMQP. Adding a new chain means adding a module, not forking the pipeline. Each monitor has its own health endpoint; failures are isolated. ERC-20 contract monitoring is a separate module from the ETH block monitor.

04  ·  DECISION
Fireblocks as the custody layer, not a custom HSM

ar-custodian-service wraps the Fireblocks REST API with a JWT-signed client (shopspring/decimal for amounts, gorilla/mux routing). Fireblocks provides MPC key management, policy engine, and regulatory audit logs that would take years to build. The custody integration handles vaults, wallet address generation, transaction submission, and exchange accounts.

05  ·  DECISION
RabbitMQ as the event bus across all services

All 20+ microservices communicate via RabbitMQ AMQP: blockchain events, governance state changes, notification triggers. Kafka would have been overengineered for this workload volume. RabbitMQ's per-queue durability and per-message acknowledgement gives the reliability guarantees custody workflows need without operational complexity.

06  ·  DECISION
External-ID system for chain-of-custody traceability

I added an external reference ID field across all asset categories (digital, physical, seizures) on both backend and frontend. Law enforcement agencies have their own case reference numbers that need to follow assets through the platform. Without the external-ID layer, correlating an Asset Reality record to a court filing requires manual lookup, an audit failure in a courtroom context.

SYSTEM / REPO STACK ROLE
ar-governance-service go · mongodb · rabbitmq · websocket primary author
ar-chain-service (12 monitors) go workspaces · go-ethereum · rabbitmq primary author
ar-frontends (8 React apps) react 18 · typescript · ant design · vite · turborepo primary contributor
tokenbalancelambda / portfoliovaluelambda typescript · aws lambda · ccxt sole author
ar-custodian-service go · fireblocks api · postgresql · gorm contributor
platform dockerization (15+ services) docker · docker compose · air · aws ecs led effort (dec 2023)

During my tenure (Jul 2022 – Feb 2024) the platform grew from $200M AUM to $500M, supporting seizure workflows for Belgian COAS, the French government's seized-crypto liquidation program, UK law enforcement, and agencies across North America and the Caribbean. The $4.91M seed round closed in January 2023 to hire engineers and expand operations. Since I left, Asset Reality has crossed $1B+ in AUM, earned FCA VASP registration (July 2025), and is actively raising a Series A+. The platform is becoming the de-facto operating system for seized crypto globally.

What I took from 19 months in a regulated, government-grade codebase: the cost of correctness is not abstract. A bug in the governance engine doesn't break a user flow. It could mis-release seized government funds or stall a criminal prosecution. That changes how you design state machines, how you write tests, and how you think about edge cases. Multi-sig design patterns, Fireblocks integration, and Go microservices at production scale are the portable skills; the disposition toward correctness is harder to name and more valuable.