Real-world assets, issued and serviced like institutional instruments.
Structure an asset, publish a compliance policy, run the book, issue to a register, release proceeds through a double-entry ledger, and service the instrument for its whole life — in one system, inside one transaction boundary.
67 asset classes across 8 groups · permissioned token standards · maker-checker on every irreversible action
Most tokenization fails after the token is issued.
Issuance is the easy part. What breaks is everything afterwards: a register that disagrees with the cap table, a distribution that does not sum, a compliance decision nobody can reconstruct, and money that cannot be matched to the subscription it paid for.
One path, from a structured asset to a serviced instrument.
Each step refuses to proceed on facts the next step depends on. That is the design: an offering cannot open without a policy in force, and units cannot be issued against an allocation that has not settled.
- Structure the assetChoose from 67 asset classes, record the legal vehicle, appoint the parties and assemble the data room. Readiness is derived from what has actually been recorded, not from a checklist somebody ticks.
- Publish a compliance policyEligibility is a rule set over a closed vocabulary of investor attributes, reviewable as data and never evaluated as code. A workspace with no published policy admits nobody.
- Open the offeringSubscriptions are checked against the terms first and the policy second, and only then is a payment reference issued — telling somebody ineligible where to send funds manufactures a refund obligation out of nothing.
- Allocate and issueAn oversubscribed book is accepted and scaled back deterministically, rounded down to whole units with the residual returned. Units reach the register before the issuer is paid for them.
- Service for the instrument’s lifeDistributions to holders of record, corporate actions that rewrite the register under a previewed plan, and redemptions that burn units and recognise the payable in one transaction.
Three drawings that describe how it actually behaves.
Not an architecture poster. Each of these is a mechanism you can find in the product, and the last one shows what is missing as plainly as what is there.
One gate, evaluated identically on both sides
Before any unit moves, canTransfer evaluates the sender, the recipient, the instrument and the amount together. The function that answers it is the same one that mirrors the Solidity compliance module check for check — so an off-chain gate and an on-chain gate cannot drift apart, because there is only one.
A refusal is a state to act on rather than a message that vanishes. Lockups expire and freezes are lifted, so a refused transfer stays re-checkable.
A reference, or an exception for a person
Matching on amount and date “when it is obvious” is how one investor’s subscription money gets credited to another and discovered months later, once tokens have been issued against it. Under- and overpayments are exceptions, never part-applied.
The dashed box is deliberate. No card, local-rail or stablecoin provider adapter is connected in this build, and every surface that offers one says so with the reason.
Isolation that fails three separate ways
A tenant’s data is separated in the schema, in the query client and by the database’s own row-level security. Each layer is sufficient alone, which is the only reason to run three: a defect in one is contained by the others.
The database layer is not theoretical. With no tenant context the application role reads zero rows, and a cross-tenant insert is refused by Postgres — both verified running against the deployed database rather than asserted here.
A status and the entries behind it cannot disagree.
Every movement that touches money posts to a double-entry ledger in the same database transaction as the state change that caused it. If the posting fails, the status change rolls back with it.
A marketplace that refuses before it tempts.
Listed offerings are browsable by anyone. Whether you can subscribe to one is a decision the issuer's published policy makes about you — and the answer is given before a payment reference is ever issued.
Every asset type gets its own model.
A warehouse is not an office block, and neither is a treasury bill. Each group carries its own structure, custody expectations, servicing obligations and token model.
Integrations and rails.
§57 of our own specification forbids a mocked capability that looks finished. This table is asked of the running process rather than written down, so it stops saying a provider is missing the moment one is connected.
Object storageConnected
The data room stores documents with a content hash verified on every read, so what an investor reads is provably what was filed.
Payment providerNot connected
Subscriptions can be recorded and reconciled against a bank statement, but no payment is initiated from here.
Identity verification providerNot connected
Verification cases can be opened, decided and evidenced by a person; nothing is checked automatically against an external register.
Blockchain signerNot connected
A deployment plan is produced with preflight checks and an approval gate, and the broadcast step reports that it cannot sign rather than appearing to succeed.
Notification deliveryNot connected
In-app notifications are written to this system’s own database. Email, SMS and webhook have a port and no adapter, and say so per channel.
Model providerNot connected
Assistants report unavailable with the reason rather than degrading into keyword matching presented as intelligence.
Assurance still outstanding
These are launch gates in our own specification and none of them has been satisfied. They are listed because their absence is not visible from any screen.
- An external smart-contract audit
- A penetration test
- A disaster-recovery rehearsal against a real restore
- A load test at the volumes the SLOs assume
- An independent accessibility audit
See it against your own asset.
The fastest way to judge infrastructure is to structure something real in it. Bring an instrument you are actually considering and we will walk it through end to end.