Enable transfer ETH from Timelock

Recently, Coinbase transferred the Compound Protocol Timelock a significant amount of ETH in this TX. Currently, due to a quirk in the Governance implementation, it is not possible to send ETH from the Timelock.

On line 147 in Governor Bravo:

timelock.executeTransaction.value(proposal.values[i])(proposal.targets[i], proposal.values[i], proposal.signatures[i], proposal.calldatas[i], proposal.eta);

The entire value of the executed transaction is passed from Governor Bravo to the Timelock (and then subsequently out of the Timelock). This flow of funds has never been used and I propose deprecating it in favor of all ETH value for transactions coming from the Timelock.

I propose fixing this quirk to allow the community to spend ETH in this PR. It implements the new code and extensively tests it in unit testing and fork simulations. There are only minor changes to the solidity: the execute function is no longer payable, and line 147 (as referenced above) no longer sends value.

3 Likes

I created proposal 114 to implement this change; however, I quickly noticed that the changes from proposal 89 were not integrated since the PR head was forked prior to that merge. I’ll update the new implementation to allow for the lower proposal threshold and re-propose tomorrow.

3 Likes

yes i was having an issue with that one thank you

This is the full change that is being done by the proposal.

2 Likes