Smart contracts
Solidity or Rust contracts written to a spec, with unit tests, fuzzing and invariant tests, plus a documented upgrade and pause strategy.
Services / Web3
Smart contracts, wallets and on-chain products built security-first — because on-chain code is public, permanent and usually holding someone’s money. Tested, audit-ready, and designed so a person who has never opened a wallet can still get through.
Start a projectWhere we win
You can patch a web app on a Friday afternoon. You cannot patch a contract holding funds — you can only migrate off it, publicly, while everybody watches. So the tests, the invariants, the upgrade path and the key management are settled before the first deploy, not after an auditor hands you a list.
What we build
Solidity or Rust contracts written to a spec, with unit tests, fuzzing and invariant tests, plus a documented upgrade and pause strategy.
We get code, tests and documentation into the state an auditor needs, run the static analysis first, and handle remediation when findings come back.
Wallet connection, transaction states, gas estimation and the error paths — the parts that decide whether a first-time user finishes or leaves.
Standards-compliant tokens, minting, royalties, vesting and distribution, with the economics implemented as specified rather than improvised late.
Indexers, subgraphs, event pipelines and oracles connecting on-chain state to the ordinary backend that has to report on it.
Multisig, account abstraction and key management set up so that no single laptop is a single point of failure.
The toolkit
Chains
Contracts
Front end
What you get
Questions
We prepare for audit and fix what comes back, but we don’t sign off our own code. Anything holding meaningful value should be audited by an independent firm, and we’ll help you choose one and run the engagement.
Whichever your users and liquidity are already on — usually Ethereum or an L2 like Base or Arbitrum, sometimes Solana when throughput and fees decide it. It’s a distribution question more than a technical one.
That’s most of the work. Account abstraction, sponsored gas, email or passkey sign-in and honest transaction previews turn a five-step ordeal into something ordinary. We design for that user by default.
Standard request. We index events into a conventional database so reporting, support and finance all see the same truth as the chain does.
Often it isn’t, and we’ll say so. If the only thing the chain buys you is a press release, a database will be cheaper, faster and far easier to fix.
That’s what the pause switch, the upgrade path and the monitoring are for — decided at design time. We also agree upfront who gets called, and how fast, if something goes wrong at 3am.