Rhinestone supports both locked and unlocked funds.Using unlocked funds is the default flow and does not require any setup. In this case, the funds are “locked” just-in-time (the JIT flow). The claim transactions on source chain(s) are processed first, then the fill transaction is executed on the target chain. The JIT flow is generally slower.For a better performance, you can use resource-locked funds using the Fill-First flow instead. The user would first deposit (lock) the funds into The Compact contract. When executing an intent, the relayer would first handle the fill transaction on the destination chain, then use locked funds as a payment on the source chain(s). The Fill-First flow is significantly faster.Learn more about the JIT flow and Resource Locking in our conceptual guide.
To use resource locking, the user needs to top up their locked balance.There are two ways to lock: sweep user assets automatically or deposit manually.
If enabled as part of the intent, The Compact will be automatically topped up the first time the user does an intent. The intent will use the JIT flow to sweep all supported tokens into The Compact. After that, all intents will come through the Fill-First flow (until the locked balance is depleted).To automatically lock the user funds:
Permissionless withdrawals are two-step: you first need to enable the withdrawal, then wait for an unlock (reset) period, and do the actual withdrawal.The current reset period used by Rhinestone is 7 days.To enable the withdrawal: