Abstract
The Execution App, developed by karpatkey, addresses the need for rapid, error-minimised execution in high-pressure situations such as hacks, exploits, and governance attacks. These time-sensitive and high-risk scenarios are common in DeFi and DAO governance. The Execution App supports treasuries that are managed via Zodiac Roles Modifier (ZRM) by enabling swift execution of disassembling strategies through a reliable user interface (UI).
The Execution App is a powerful infrastructure for emergency scenarios, but also serves as a powerful tool to streamline day-to-day operations.
Motivation
The Execution App is a Asset Management tool built to respond quickly to unexpected events. The DAO can choose to pre-approve any exit-strategies to interact with protocols used for Agile Execution, through which the Execution App can address the following pain points:
- Minimising human error: With predefined actions in place, the Execution App significantly improves reaction time and reduces the likelihood of mistakes when constructing complex payloads in time-sensitive or high-stakes situations.
- Reducing UI dependency: In unfortunate situations, protocol UIs often become overwhelmed by heavy user interactions, causing lag or even shutdowns. The Execution App mitigates these risks by moving execution tasks to a secure and consolidated app, reducing reliance on vulnerable UIs.
- Bypassing Multisignature process: When time is of the essence, multisig execution can be slow and cumbersome. The Execution App enables Asset Managers to quickly and efficiently move funds out of DeFi positions.
DAOs currently using the Execution App; Gnosis & karpatkey.
Specification
Setup
The Execution App incorporates EOAs assigned specific agile roles, which are granted specific permissions through the Zodiac Module, in order to execute pre-designed strategies including:
- Withdrawing funds.
- Unstaking assets from liquidity pools or staking protocols.
- Repaying any outstanding debt and subsequently withdrawing collateral.
- Executing token swaps to convert assets into more desired or stable forms.
A selection of these strategies is proposed to the Balancer DAO for approval. Once approved, they can be executed by the designated Execution App address.
Execution
Once set up, execution is carried out through a UI available to AMs, which generates all necessary transaction payloads with simple, clear, and streamlined actions based on the configuration.
- Landing page:
- Choose position & the exit strategy:
- The Execution App delivers the payload & Tenderly simulations for execution:
Private Key Management
To bypass the multi-signature phase during execution, EOAs are configured with allowlisted strategies. This allows EOAs to execute transactions on behalf of the managed treasury at any time, but it is restricted to existing positions only.
Security is our top priority, and so is private key management. We use a vault infrastructure which generates private keys securely within the vault, ensuring they remain protected and never exposed. Additionally, the infrastructure includes a backup and restore strategy to handle disaster recovery scenarios efficiently.
We want to emphasise that keys are securely stored and cannot be accessed. Even in the unlikely event of a private key leak, the permissions policy will strictly limit execution to pre-approved swaps / strategies for disassembling or exiting DeFi positions, the keys cannot be used to transfer / withdraw the underlying assets.
Implementation
Given the Avatar’s current permissions policy we suggest adding the following disassembling strategies into the Execution App on behalf of the managed treasury.
- Holdings (via the Swapper Role).
- ETH-neutrality:
- Swap any of [stETH, wstETH, rETH, WETH, oETH, osETH] for [ETH, WETH] on [CoW, Uniswap, Balancer, Curve].
- USD-neutrality:
- Swap any of [DAI, USDT, USDC, GYD, sDAI, GHO, stkGHO, USDS, sUSDS] for [DAI, USDT, USDC] on [CoW, Uniswap, Balancer, Curve].
- Wrap and unwrap ETH.
- ETH-neutrality:
- DeFi positions (via the Disassembler Role).
- Maker DSR
- Withdraw DAI from the DSR Manager.
- RocketPool
- Unstake rETH for ETH.
- Lido
- Unstake stETH /wstETH for ETH.
- Aave V3
- Withdraw USDC / USDT / DAI from Aave market.
- Redeem GHO from stkGHO contract.
- Compound V3
- Withdraw USDC from the comet.
- Curve
- Withdraw oETH & ETH from LP position.
- Origin Protocol
- Withdraw staked ETH via ARM and vault.
- Spark
- Withdraw USDS from Sky savings rate.
- Stakewise
- Withdraw staked ETH from Genesis Vault.
- Uniswap V3 WETH-WBTC
- Collect fees
- Gygroscope
- Redeem underlying GYD from the Savings contract.
- Maker DSR
Payloads
[Swapper Permission Policy Setup]
This payload executes the following actions, all at once, to setup the Swapper setup:
- Create the SWAPPER Role.
- Assign the Swapper EOA to the Swapper Role as a member.
- Apply the Permission Policy to the SWAPPER Role.
Tenderly Simulation available here.
Permissions page: https://roles.gnosisguild.org/permissions/eth/s0m8BXPrrs4yg9fnmluqD6XfWuaVlXtSQxaXO7YoQ?annotations=false
Permissions diff page: https://roles.gnosisguild.org/eth:0x13c61a25DB73e7a94a244bD2205aDba8b4a60F4a/roles/SWAPPER/diff/s0m8BXPrrs4yg9fnmluqD6XfWuaVlXtSQxaXO7YoQ?annotations=false
[Disassembler Permission Policy Setup]
This payload executes the following actions, all at once, to setup the Disassembler setup:
- Create the DISASSEMBLER Role.
- Assign the Disassembler EOA to the DISASSEMBLER Role as a member.
- Apply the Permission Policy to the DISASSEMBLER Role.
Tenderly Simulation available here.
Permissions page: https://roles.gnosisguild.org/permissions/eth/d1IYmypoi3riIdQO18t3Cg5jkl1GymkW4Z33RiI?annotations=false
Permissions diff page: https://roles.gnosisguild.org/eth:0x13c61a25DB73e7a94a244bD2205aDba8b4a60F4a/roles/DISASSEMBLER/diff/d1IYmypoi3riIdQO18t3Cg5jkl1GymkW4Z33RiI?annotations=false
*Note: because these are new roles, the permissions page and permissions diff page are the same, i.e. there is nothing on the left hand side of the permissions diff page.