diff --git a/src/Gatekeeper.sol b/src/Gatekeeper.sol index a69bad9..dcafb11 100644 --- a/src/Gatekeeper.sol +++ b/src/Gatekeeper.sol @@ -225,8 +225,10 @@ contract Gatekeeper is IGatekeeper, Weaver, ReentrancyGuard { StorageHistory(storageHistory).trySetTransactionExecuted(exodusSession); - (bool success,) = payload.target.call(call); - if (!success) revert ExecutionReverted(); + (bool success, bytes memory ret) = payload.target.call(call); + if (!success) { + emit GovernanceExecutionFailed(exodusSession, payload.target, ret); + } } function _extractPublicKey(bytes calldata call) internal view returns (uint256) { diff --git a/src/interfaces/IGatekeeper.sol b/src/interfaces/IGatekeeper.sol index 17615f3..20f5169 100644 --- a/src/interfaces/IGatekeeper.sol +++ b/src/interfaces/IGatekeeper.sol @@ -23,6 +23,7 @@ interface IGatekeeper { event Recalled(address indexed receiver, uint256 indexed amount); event Rotated(bytes32 indexed aggregatedPublicKey, uint256 indexed session); event VoluntaryVerification(address indexed sender, uint256 indexed gasSpent); + event GovernanceExecutionFailed(uint256 exodusSession, address target, bytes ret); function staking() external view returns (address); function deployer() external view returns (address);