Allow users to send delegatecall custom transactions
What is this feature about?
Currently the safe web interface allows sending out custom transactions for contract interaction. It allows filling up the destination, value and callcode, but it does not provide the option to delegatecall into a contract (Especially useful when using proxies).
The smart contracts already support it, as well as the safe_cli.
Why is it needed? What is the value? For whom do we build it?
We use the safe on a day to day basis (for managing privileged access to contracts) and for complex interactions we have proxies and delegatecall into them, so the safe calls our contracts and executes whatever is in the proxy, this saves a lot of time encoding transactions, and it also makes a lot easier for approvers to verify the transactions.
High-level overview of the feature
A checkbox in the send custom transaction modal would be enough (first screenshot in the gdoc below). A loud warning on the transactions list is also advisable, as delegatecalls could be maliciously used to change safe params like adding owners or changing the threshold (second screenshot below). They will basically have to verify if the destination is trusted.
Screens
The link of the provided template is not public, let me know if this is enough: https://docs.google.com/document/d/181SCyoFj-OTD7BxSy8B9j8H5rOC4tdwvDmYUNqT7zgk/edit?usp=sharing
Thanks for the feature request @fabiohild. I think this could fit nicely into some kind of advanced settings when making transactions, along with setting the Safe nonce etc manually. I agree about the loud warnings due to the nature of delegate calls.
just in case this would help you short term @fabiohild : It is possible to manually / programmatically submit delegate call transactions via the transaction service (https://safe-transaction.gnosis.io/). Once submitted to the service, the tx shows up in the UI and owners can confirm / execute the tx.
++ very much support this feature to change the operation type — this prevents me from easily proposing multisend txs (a delegatecall generated by ape safe, but i'm unwilling to load my pk into memory to have ape safe use the tx service)
I'm also interested in this feature. Being able to delegatecall a verified smart contract would be much better for automation & much safer re: multiparty verification than going through txbuilder.