01 · What we do
On-chain products
Smart contracts, the wallet flow that writes to them, and the screens that read back what happened.
A contract decides what can happen on chain and which address is allowed to trigger it. We write that contract, and the application that reads its state and submits transactions to it. Every privileged operation, admin, freeze, mint and pause, is enumerated with the address that holds it, and then run against a live test chain. A unit test does not reproduce a sequencer, a reorganisation, or a transaction that fails halfway.
Solidity for EVM chains, Rust for newer execution layers, TypeScript for the interface. The application builds a transaction and hands it to the wallet the holder already uses, which signs it. The private key never reaches our code or yours.
What this covers
Fan tokens and digital collectibles
Token contracts for mint, transfer, and display, plus the product a holder uses: connect a wallet, see a balance, complete a mint.
Supply, pause, and admin paths are included in the first release. Metadata and the public gallery are part of the same build.
Ticketing and access control
On-chain gates for events and programs. Who may enter, who may call a privileged instruction, and how that authority is transferred or revoked.
The freeze path is implemented alongside the ticket. We verify the lifecycle on-chain: grant, use, transfer, revoke, and reject after revoke.
Smart contracts and audits
Solidity, TypeScript, and Rust for execution layers. Review of what the contract allows, including the admin path, while it is still cheap to change.
Beyond the test suite, privileged paths are exercised against chain state and a sequencer log. On a young platform, toolchain bugs are part of the job.
Wallets and payment flows
Connect, sign, and pay. The product handles rejected transactions, the wrong network, and missing funds, with a message a person can act on.
Recovery and session expiry are built into the first flow, so a holder who changes device or loses a session can get back in.
Explorers and on-chain dashboards
Chain state in a dashboard: balances, events, mints, and the history of privileged actions. Built for the person who has to explain a number to someone else.
Each figure traces to a query against the chain or an indexer we run. If the indexer lags, the dashboard says so.
Loyalty and rewards programs
Points, drops, and redemptions tied to on-chain balances. Earn, burn, and the pause path.
Freeze and pause are implemented with the first mint, so an operator can halt the program without a redeploy.
Deliverables
Contracts and their tests
Solidity or Rust, with privileged paths exercised against chain state.
Written review notes
What the contract allows, including the admin path.
Indexer and schema
Chain events in a database you can query, with the lag visible.
Wallet flow and dashboard
The screens a holder and an operator use, including the failure cases.
Deploy and stop procedure
The procedure to deploy, and the procedure to halt.
Example
Example · Blockchain infrastructure
Access-control libraries for a zkVM execution layer
Shared admin and freeze authorities for programs on a new execution layer. One annotation adopts the pattern. Sixty host tests, then the full lifecycle exercised against on-chain state.
Read the write-up