Trust Stack Docs
Developers

Smart contracts

Map each Move module to its assets, objects, authorities, and events.

The core package is supra_trust_stack. Its framework dependency is pinned to commit 3fecf50d0701f38064faa83c980aabe5c63309fe; local tests use the reviewed Supra CLI container digest recorded in move/trust-stack/README.md.

Revision-5 replacement

The current source adds compatible external Fungible Asset custody without admission, bounded fee increases as well as decreases, 60-second queued testnet governance, and opt-in revocable vesting. The September 22 immutable publication is the active revision-5 core; revisions 4, 3, and 2 remain available for historical positions. asset_policy attestations become advisory for core Fungible Asset custody, and vesting adds creator-only refunds of unvested principal for schedules created with that option. The revision-5 manifest records publication, initialization, freeze, and matching bytecode evidence; its product-lifecycle acceptance remains in progress.

Module map

ModuleAsset modelPersistent statePrimary authority
foundationNoneVersion marker onlyNone
fee_configNative SUPRA and in-kind vesting feesGlobal schedule, roles, and renunciation stateGovernor multisig; separate treasury administrator and collector
asset_policyNoneAdvisory external-asset attestationsRotatable policy council multisig
token_factoryFungible AssetController at metadata objectCreator mint; holder self-burn when enabled
fixed_lockFungible AssetOne position and store objectBeneficiary after unlock
vestingFungible AssetOne schedule and store objectBeneficiary claims; original creator may revoke an explicitly revocable schedule
batch_distributionFungible AssetEvents onlySender in one atomic transaction
merkle_airdropFungible AssetCampaign, claim set, store objectLeaf recipient; creator-only remainder destination
digital_asset_factory0x4 Digital AssetStandard collection and token objectsFirst owner after mint
digital_asset_lock0x4 Digital AssetLock object owning one tokenBeneficiary after unlock
payment_streamFungible AssetStream and store objectRecipient claims; creator cancel only if selected
staking_poolFungible AssetPool vaults and position objectsStaker; bounded creator reward recovery

The Dexlyn V1 dexlyn_lp_lock module is a separate package because it stores a legacy generic Coin<LP<X,Y,Curve>> and depends on an external protocol's type identity.

Design conventions

  • Creation and funding happen atomically.
  • Every custody position owns an untransferable object or vault.
  • Assets are bound by metadata or object identity, never by display symbol.
  • Chain time enforces schedules.
  • State is updated in a transfer-safe order and replay is rejected.
  • Terminal actions verify exact vault conservation.
  • Events are emitted only after successful state transitions.
  • Public views expose enough recorded terms and lifecycle state for the dApp to reconcile current state.

Package policy

Source presence does not imply deployment. The checked-in deployment manifest is authoritative for package address, chain ID, source commit, bytecode hashes, transaction evidence, and acceptance lifecycles. New contract behavior requires a fresh immutable testnet publication and evidence record before its UI action can be described as live.

For value-bearing releases, prefer immutable packages deployed side by side. Existing positions continue under their original package and policy; migration should be a beneficiary-authorized withdrawal and new deposit, not an invisible global logic change.

On this page