safe-react icon indicating copy to clipboard operation
safe-react copied to clipboard

Allow users to send delegatecall custom transactions

Open fabiohild opened this issue 5 years ago • 4 comments

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

fabiohild avatar Oct 03 '20 01:10 fabiohild

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.

tschubotz avatar Oct 05 '20 09:10 tschubotz

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.

tschubotz avatar Oct 05 '20 10:10 tschubotz

++ 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)

shrugs avatar Oct 27 '21 00:10 shrugs

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.

adhusson avatar Oct 20 '22 17:10 adhusson