Detailed Protocol Flows
1. Strategy Deployment Flow
Call Chain:
Registry.deploy(implementation, name, symbol, asset, assetDecimals, manager, initData)Checks authorization
Deploys strategy using minimal proxy
Initializes strategy and tRWA token
Registers deployed strategy
State Changes:
Registry registers strategy
Strategy instance is initialized
Token and (optionally) escrow are deployed
Events:
Deploy(strategy, token, asset)StrategyInitialized(admin, manager, asset, sToken)SetReporter(reporter)
2. Standard Deposit Flow
Call Chain:
tRWA.deposit(assets, receiver)Calculates shares
Runs deposit hooks
Transfers assets via Conduit
Mints shares
State Changes:
totalSupplyincreasesReceiver's balance updated
Assets transferred
Events:
Deposit(sender, receiver, assets, shares)
3. Standard Withdrawal Flow
Call Chain:
tRWA.withdraw(assets, receiver, owner)
// or
tRWA.redeem(shares, receiver, owner)Runs withdrawal hooks
Burns shares
Transfers assets
State Changes:
totalSupplydecreasesOwner's balance updated
Assets transferred
Events:
Withdraw(sender, receiver, owner, assets, shares)WithdrawalQueued(withdrawalId, owner, assets, shares)(if queued)
4. Two-Phase Deposit Flow (GatedMintRWA)
Deposit Request Phase:
GatedMintRWA.requestDeposit(assets, receiver)Runs deposit hooks
Transfers assets to escrow
Emits
DepositPending
Accept Flow:
GatedMintEscrow.acceptDeposit(depositId)Moves assets to strategy
Calls
mintSharesEmits
DepositAccepted
Reject Flow:
GatedMintEscrow.refundDeposit(depositId)Returns assets to depositor
Emits
DepositRefunded
Events:
DepositPendingDepositAccepted/BatchDepositsAcceptedDepositRefunded/BatchDepositsRefunded
5. KYC / Compliance Validation Flow
KYC Setup:
KycRulesHook.allow(account)
KycRulesHook.deny(account)Modifies allowlist/denylist
Validation on Token Operations:
Runs hooks:
onBeforeTransfer,onBeforeDeposit,onBeforeWithdrawChecks sender/receiver permissions
Events:
AddressAllowedAddressDeniedAddressRestrictionRemoved
Last updated