Feature Request: Simulate Proposals

:computer: Environment

:memo:Details

Proposals are nearly always sensitive operations. It would give us a lot more confidence before executing them if Defender could simulate the TX and display in human readable formats what events were fired and ideally what state changes occurred.

This is especially valuable for multisends that we are semi-manually constructing right now for which we have no context when someone actually goes to execute.

What We Do Now To Deal With This

  • We don't simulate and just hope/trust it will work
  • We go to Tenderly and manually use their simulator. This is annoying, and requires a lot of manual work, which is easy to mess up, but it works.

Potential Solutions

  • You could integrate with Tenderly. They already have a pretty nice simulator UI (see screenshot below). Pro: you don't have to build the actual UI or logic. Con: Only works for customers that also use Tenderly.
  • You build in simulation support natively. Pro: This works for all your customers. Con: More work on your side!

1 Like

Thanks for the feature request, @blakewest!

We're leaning towards this solution, since it should be easy to set up. We are thinking about adding a Simulate on Tenderly link on Admin proposals, that would redirect you to the Tenderly Simulate form with all values pre-populated, so you just hit Simulate Transaction and get the results.

Do you think something like that would work for you?

As an example, we would generate the following link for a proposal:

https://dashboard.tenderly.co/simulator/new?block=9529209&blockIndex=0&from=0xF608FA64c4fF8aDdbEd106E69f3459effb4bC3D1&gas=8000000&gasPrice=0&value=0&contractAddress=0xB07b1C80371915dEFd254d1C57BeF2bDe6D3b610&rawFunctionInput=0x69fe0e2d000000000000000000000000000000000000000000000000000000000000000a&network=4

@spalladino Yeah, this would work great. Would just want to confirm it works for multisig wallets initiating transactions with a few signers. I'd tried manually simulating such things via tenderly and we couldn't quite get it to work. Putting the from address as the multisig wouldn't do the delegate call correctly. And putting the to address as the multisig and the from as one of the signers was also failing.

Like ideally we could simulate without having to first get everyone to sign. But that said, even if it only worked after everyone signed, and then we could simulate and execute, that would be much better than what we have now.

But overall, this would be awesome! Thanks! - Blake

1 Like

One way it could work is to offer a button to the one creating the transaction, once they click it simulates the transaction and offer a link to the result of the simulation. Maybe even keep the link attached to the proposal as it is useful to other people reviewing it.

I like how Gnosis Safe implemented it.