Import
Initialization
assertOperatorMode if called without operatorMode: true.
shycustody is a standalone pooled-custody embodiment. The manifest must still
declare transfer_layer: "shywire" because silo-unit transfers ride the
anonymous transfer rail, but the custody embodiment has its own canonical
objects and lifecycle: operator registration, SKU admission, consortium policy,
intake lots, issuance, redemption, settlement, and demurrage.
Policy and operators
Asset and supply
getSupply is public — it returns aggregate mint count minus burn count per asset, verifiable by any third party without operator cooperation. getBalance returns the specific holder’s balance and requires the caller to hold a valid account commitment.
SKUs and lots
Redemptions
Demurrage
demurrage_policy in the shyconfig (policy_burn). The burn is applied as a TxType 16 transaction. The effect is visible in getSupply without revealing which holder was affected.
Build and submit (operator)
All build methods return{ txJson, ...metadata }. Submit with client.submit(txJson) or pass to dispatch.
Asset registration
Account registration
Mint (deposit)
Transfer
Redemption request (participant)
Redemption settlement (operator)
Intake lot record (operator)
Evidence requirements
The custody shyconfig declares which evidence types are required for an intake lot to be accepted:buildRecordIntakeLot validates that all declared evidence types are provided before building the transaction.