How are execution types fuliflled? How are roles defined and determined?
The Dexible contract is responsible for satisfying execution requests. Today it only support Swap requests. But future versions will open this up to more executions types such as lending, staking, and other primitives.
Here is the relationships for the Dexible contract:
Like the Community Vault, there are base contracts that provide configuration, storage property views, and swap functionality for protocol. Dexible is configured with whitelisted relay wallets. The relays are used to enforce the rule that only relays can submit sensitive execution requests where certain fields of the request require more control, like affiliate fees for example. Here is a breakdown of how these contracts satisfy the requirements: