types defines the shared data model. Import path: github.com/co-mission/shyware/types
AssetRecord
An asset registered by the operator. shyware does not issue assets — it provides the anonymous transfer layer for an existing asset (e.g. USDC, a sovereign token).AssetID is the canonical key. Choose a short, stable identifier — it appears in
every TransferRecord and cannot be changed after registration.
TransferRecord — List 1
An anonymous transfer. Contains the amount and asset, never the sender or recipient identity.TransferID is the only receipt the sender holds. It can be used to prove a transfer
occurred (the record exists in List 1) without revealing the sender’s identity.
ParticipantRecord — List 2
A participation record. Contains the nullifier (a commitment to identity) never the amount.IdentityHash is the nullifier. It is stored in List 2 and checked for uniqueness on every
transfer. A duplicate nullifier causes the transaction to be rejected.
AccountRecord
The on-chain balance for an account. The account is identified by a commitment — the wallet address itself never appears on-chain.AccountRecord per (AccountCommitment, AssetID) pair. An account must be registered
with TxTypeRegisterAccount before it can receive or send transfers.
SupplyRecord
Tracks the total minted and burned for an asset. Publicly queryable.TotalSupply is the only quantity visible to the public. Individual balances are not
queryable without operator credentials.