Compliance mapping

What a regulated sukuk offering needs, what Tsamara does about each item today, and what code cannot solve.

This is an engineering document, not legal advice. The legal and sharia position behind it is in Regulatory and sharia notes. Tsamara is a devnet prototype with a mock series: it holds no licence, has no regulatory approval and no sharia certification. The requirements below are the ones we designed against and must be validated with counsel and a sharia board for any real issuance.

Status key

StatusMeaning
OnchainEnforced by a program; the operator cannot bypass it
ToolingEnforced by the operator API; depends on the operator behaving
DesignedDecided and tracked as an issue, not built
ExternalNeeds a licence, a contract or a third party; not a software problem

Investor eligibility and transfer restrictions

RequirementControlStatus
Only identified investors hold the instrumentToken accounts are frozen by default; only the compliance authority can thaw oneOnchain
A recipient must be a known investorTransfer hook requires an investor record for the recipient on every transferOnchain
Offering restrictions by jurisdictionRestricted jurisdictions are stored in the series config; registration and every transfer check themOnchain
Per-investor holding limit on transfersTransfer hook checks the recipient's balance after the transferOnchain
Per-investor holding limit on primary subscriptionThe API checks the limit before the issuer co-signs; the hook does not run on mint (#21)Tooling
Offboarding an investorThe compliance authority freezes the accountOnchain
Identity verification (KYC)Sumsub WebSDK level with identity document and liveness; the API reads the verdict and country server-side and only then registers the investor. Sandbox credentials only, and the country is the document's, not proven residenceTooling
Sanctions and AML screeningNot configured on the verification levelExternal
Investor classification (retail, professional, accredited)Not modelledDesigned

Issuer controls and governance

RequirementControlStatus
Separation of dutiesMinting and investor approval are different keys; the demo asserts the issuer key cannot approve investorsOnchain
No single key can act aloneAuthorities held in a multisig (#19)Designed
Recovery for lost keys, inheritance and court ordersThe compliance authority is the mint's permanent delegate and can move units without the holder's signature. The library refuses to build the transfer without a reason and an ordering authority, and writes both onchain as a memo; the transfer hook still applies. Nothing onchain stops the authority using the delegate directly, so this rests on who holds that key (#19)Tooling
Changing series rules after issuanceNo instruction to update the config; rules are fixed at initializationDesigned
Operator access controlAdmin routes require a shared token; keys are files on diskTooling

Settlement, payments and records

RequirementControlStatus
Delivery versus paymentPayment and delivery are instructions in one transactionOnchain
Public, tamper-evident termsAkad, maturity, currency, profit rate, unit size, restrictions and holding cap are stored in the token's metadataOnchain
Audit trailEvery approval, subscription, transfer and distribution is a confirmed transaction; the indexer derives a per-wallet history from themOnchain, read through tooling
Accurate pro rata distributionsInteger math, rounded down, unit-tested; holders are read from the indexerTooling
A distribution cannot be paid twiceEach batch is written onchain with a memo naming the series, the period and the batch; the API skips a batch whose memo is already on the treasury's history. If holdings change between a failed run and its retry, batch boundaries can move, so a record-date snapshot is still needed for a series larger than one batchTooling
Settlement assetA mock dollar token on devnet; a real stablecoin on the same token program works without code changes. Stablecoin settlement is not permitted everywhere: in Indonesia the rupiah is mandatory for domestic transactionsExternal
Registry of recordThe chain is the registry in this design; whether that is legally sufficient depends on the jurisdictionExternal

Sharia

RequirementControlStatus
The underlying sukuk is sharia-compliantInherited from the real instrument; the demo series is a mockExternal
The series may trade at a negotiated priceOnly defensible while the underlying is majority tangible assets. The ratio and its as-of date are published in the series terms; nothing updates or enforces it yetDesigned
The tokenized structure preserves the holder's rights in the underlying assetDepends on the legal wrapper between the token and the sukuk, which does not exist yetExternal
Sharia board review of the structure and of secondary tradingNoneExternal
Returns are profit distributions, not interestThe series models an expected periodic distribution set by the akad; we deliberately do not use Token-2022's interest-bearing extensionOnchain

Issuance and distribution

RequirementControlStatus
Authority to issue or tokenize the instrumentNone. Only a sovereign's own issuer can issue its sukuk; anyone else issues a new instrument that holds itExternal
The token carries a real claimThe prototype token represents nothing. A real one needs a trust or wakalah arrangement giving holders a beneficial share, a trustee and a default waterfallExternal
Licence to distribute to investors in each jurisdictionNoneExternal
Custody of the underlying sukukNoneExternal
Disclosure documents and risk warningsA prototype notice on every surface; no offering documentExternal
Data protectionThe chain stores a wallet address and a country code per investor, and no other personal dataOnchain
Security reviewThe compliance program is unaudited (#23)External

What this adds up to

The parts of compliance that are rules about who may hold and transfer the instrument are enforced by programs. The parts that are about who the issuer is, whether investors are who they claim to be, and whether the structure is lawful and sharia-compliant are not software, and none of them are in place.

On this page