07
Blockchain
Verifiable ledgers and tokens, when they are genuinely needed
Few companies need this, and it should be said: in most cases a well-built database solves the same problem for far less. When you genuinely need a ledger nobody can rewrite, the work changes nature.
- Threat modelActors, trust boundaries and where the funds move
- TestsThe properties that must never break, written as rules
- Automated analysisKnown mistakes, searched across every contract on every change
- Random sequencesThousands of combinations nobody would write by hand
- Mathematical verificationThe rule proven for every possible value, not just the tested ones
- External auditMandatory before production: the code is worth real money
Code is money, so you prove it
Tests as the base, then automated analysis across every contract, thousands of random sequences against the properties that must never break, and mathematical verification on the critical rules.
These tools find different things: automated analysis recognises known mistakes, random sequences find combinations nobody would have written by hand, mathematical verification proves a rule holds for every possible value and not only the ones you tested.
Upgradeable but not arbitrary
Contracts that must evolve go through a mandatory delay before every change: whoever holds funds has time to see what is about to change and to leave. The ones that must not change stay immutable and without special powers.
Withdrawals carry explicit limits, and whoever is owed something withdraws it rather than receiving it: that way one badly behaved recipient cannot block everyone else.
A chain is infrastructure too
Behind a network there are processes that must stay up: the component ordering transactions, the public node, the one publishing data to the layer below, the explorer and the monitoring. It is systems work as much as contract work.
First question: do you actually need it?
In most cases the answer is no, and it is worth hearing that from whoever builds these things. A well-made database with an append-only change log and verified backups solves ninety-five per cent of traceability problems at a fraction of the cost, without tying you to a moving ecosystem.
It is genuinely needed when the ledger must be verifiable by parties who don't trust each other and none of them can be the custodian: consortia, supply chains with several actors, instruments representing transferable value. If the parties trust you, you don't need it.
When the answer is no we say so, and propose the cheaper route. It is the only way the opposite answer, when it comes, is worth anything.
The cost nobody quotes for
It isn't writing the contracts: it is verifying them. On a serious project, testing, analysis and formal proof weigh as much as the writing, sometimes more. Which is why low quotes in this field are a signal, not a bargain.
Then there is the external audit, which belongs in the budget from the start: no serious organisation puts value-handling contracts into production without independent review. And there is maintenance, because a chain changes too: protocol upgrades, node versions, dependencies to revisit.
What stays off the chain
Almost everything. On the chain go the few things that must be verifiable by everyone and modifiable by nobody: proof that an event happened, the transfer of a right, the balance of an instrument. Everything else — customer records, documents, personal data — stays outside, in normal systems.
It is a practical obligation before a matter of taste: personal data written to a public chain cannot be deleted, which collides with the right to erasure. The correct approach is to keep the data outside and put at most a fingerprint on the chain, allowing verification without disclosure.
What we work with, and how we verify it
In this field the stack matters less than the verification pipeline: these tools find different things, and all of them are needed.
Contracts
- Solidity
- OpenZeppelin
- upgradeable proxies
- mandatory delay on changes
We start from libraries used and reviewed by thousands of projects rather than rewriting delicate primitives. What must evolve goes through a declared delay before every change; what must not change stays immutable and without special powers.
Testing
- Hardhat
- Foundry
- code coverage
- attack scenarios
Tests don't only verify that it works: they verify that it doesn't work when it shouldn't. A large share of the cases written reproduce attempted abuse, not correct use.
Verification
- Halmos
- Certora
- Echidna
- Slither
- Mythril
Tools that find different things: automated analysis recognises known mistakes, random sequences find combinations nobody would write by hand, formal proof shows a rule holds for every possible value and not only the tested ones.
Network
- Arbitrum Nitro
- public node
- explorer
- monitoring
- Docker
Behind a chain there are processes that must stay up like any other system: the component ordering transactions, the node answering queries, the one publishing data to the layer below. It is systems work as much as contract work.
Portfolio
What we did on this, project by project.
Manora
Layer 2 network with its own gas coin
- Seven contracts on an OpenZeppelin base: immutable fixed-supply coin, wrapper, reimbursement of publishing costs, distribution with progressive vesting, treasury with delayed withdrawals and a daily cap, five-tier staking with fee discounts from 10% to 70%.
- A shared upgradeable base with a mandatory 48-hour delay on every change, role control and an emergency stop.
- 487 automated tests at 99.4% statement coverage; mathematical verification on 27 of 29 properties and 50 of 51 rules, random sequences against the staking invariants, automated analysis with no true positives.
- Network on Arbitrum Nitro with a custom gas coin and distinct identifiers between development and production for replay protection.
- Phased release with a manifest and post-release checks, plus a thirteen-document package for external auditors.
- Solidity
- OpenZeppelin
- Hardhat
- Foundry
- Docker
- Arbitrum Nitro
Need this?
Tell us the problem and we'll tell you how we would tackle it — and if it isn't worth doing, we'll tell you that too.
Let's talk