diff --git a/apps/fortuna/src/chain/ethereum.rs b/apps/fortuna/src/chain/ethereum.rs index bbf46db6c9..fb60abe809 100644 --- a/apps/fortuna/src/chain/ethereum.rs +++ b/apps/fortuna/src/chain/ethereum.rs @@ -83,7 +83,7 @@ impl SignablePythContractInner { { // Extract Log from TransactionReceipt. let l: RawLog = r.logs[0].clone().into(); - if let PythRandomEvents::RequestedFilter(r) = PythRandomEvents::decode_log(&l)? { + if let PythRandomEvents::Requested1Filter(r) = PythRandomEvents::decode_log(&l)? { Ok(r.request.sequence_number) } else { Err(anyhow!("No log with sequence number")) @@ -147,7 +147,7 @@ impl SignablePythContractInner { .await? .await? { - if let PythRandomEvents::RevealedFilter(r) = + if let PythRandomEvents::Revealed1Filter(r) = PythRandomEvents::decode_log(&r.logs[0].clone().into())? { Ok(r.random_number) diff --git a/target_chains/ethereum/contracts/contracts/entropy/Entropy.sol b/target_chains/ethereum/contracts/contracts/entropy/Entropy.sol index aef34dc36d..3ab9a9d3ba 100644 --- a/target_chains/ethereum/contracts/contracts/entropy/Entropy.sol +++ b/target_chains/ethereum/contracts/contracts/entropy/Entropy.sol @@ -150,7 +150,10 @@ abstract contract Entropy is IEntropy, EntropyState { provider.sequenceNumber += 1; - emit Registered(EntropyStructConverter.toV1ProviderInfo(provider)); + emit EntropyEvents.Registered( + EntropyStructConverter.toV1ProviderInfo(provider) + ); + emit EntropyEventsV2.Registered(msg.sender, bytes("")); } // Withdraw a portion of the accumulated fees for the provider msg.sender. @@ -172,7 +175,13 @@ abstract contract Entropy is IEntropy, EntropyState { (bool sent, ) = msg.sender.call{value: amount}(""); require(sent, "withdrawal to msg.sender failed"); - emit Withdrawal(msg.sender, msg.sender, amount); + emit EntropyEvents.Withdrawal(msg.sender, msg.sender, amount); + emit EntropyEventsV2.Withdrawal( + msg.sender, + msg.sender, + amount, + bytes("") + ); } function withdrawAsFeeManager( @@ -202,7 +211,13 @@ abstract contract Entropy is IEntropy, EntropyState { (bool sent, ) = msg.sender.call{value: amount}(""); require(sent, "withdrawal to msg.sender failed"); - emit Withdrawal(provider, msg.sender, amount); + emit EntropyEvents.Withdrawal(provider, msg.sender, amount); + emit EntropyEventsV2.Withdrawal( + provider, + msg.sender, + amount, + bytes("") + ); } // requestHelper allocates and returns a new request for the given provider. @@ -349,6 +364,13 @@ abstract contract Entropy is IEntropy, EntropyState { userRandomNumber, EntropyStructConverter.toV1Request(req) ); + emit EntropyEventsV2.Requested( + provider, + req.requester, + req.sequenceNumber, + userRandomNumber, + bytes("") + ); return req.sequenceNumber; } @@ -570,6 +592,15 @@ abstract contract Entropy is IEntropy, EntropyState { providerRevelation, randomNumber ); + emit EntropyEventsV2.Revealed( + provider, + req.requester, + req.sequenceNumber, + randomNumber, + false, + ret, + bytes("") + ); clearRequest(provider, sequenceNumber); } else if ( ret.length > 0 || @@ -590,6 +621,15 @@ abstract contract Entropy is IEntropy, EntropyState { randomNumber, ret ); + emit EntropyEventsV2.Revealed( + provider, + req.requester, + sequenceNumber, + randomNumber, + true, + ret, + bytes("") + ); req.callbackStatus = EntropyStatusConstants.CALLBACK_FAILED; } else { // Callback reverted by (potentially) running out of gas, but the calling context did not have enough gas @@ -608,6 +648,15 @@ abstract contract Entropy is IEntropy, EntropyState { providerRevelation, randomNumber ); + emit EntropyEventsV2.Revealed( + provider, + req.requester, + req.sequenceNumber, + randomNumber, + false, + bytes(""), + bytes("") + ); clearRequest(provider, sequenceNumber); @@ -732,6 +781,12 @@ abstract contract Entropy is IEntropy, EntropyState { uint128 oldFeeInWei = provider.feeInWei; provider.feeInWei = newFeeInWei; emit ProviderFeeUpdated(msg.sender, oldFeeInWei, newFeeInWei); + emit EntropyEventsV2.ProviderFeeUpdated( + msg.sender, + oldFeeInWei, + newFeeInWei, + bytes("") + ); } function setProviderFeeAsFeeManager( @@ -754,6 +809,12 @@ abstract contract Entropy is IEntropy, EntropyState { providerInfo.feeInWei = newFeeInWei; emit ProviderFeeUpdated(provider, oldFeeInWei, newFeeInWei); + emit EntropyEventsV2.ProviderFeeUpdated( + provider, + oldFeeInWei, + newFeeInWei, + bytes("") + ); } // Set provider uri. It will revert if provider is not registered. @@ -767,6 +828,12 @@ abstract contract Entropy is IEntropy, EntropyState { bytes memory oldUri = provider.uri; provider.uri = newUri; emit ProviderUriUpdated(msg.sender, oldUri, newUri); + emit EntropyEventsV2.ProviderUriUpdated( + msg.sender, + oldUri, + newUri, + bytes("") + ); } function setFeeManager(address manager) external override { @@ -780,6 +847,12 @@ abstract contract Entropy is IEntropy, EntropyState { address oldFeeManager = provider.feeManager; provider.feeManager = manager; emit ProviderFeeManagerUpdated(msg.sender, oldFeeManager, manager); + emit EntropyEventsV2.ProviderFeeManagerUpdated( + msg.sender, + oldFeeManager, + manager, + bytes("") + ); } // Set the maximum number of hashes to record in a request. This should be set according to the maximum gas limit @@ -799,6 +872,12 @@ abstract contract Entropy is IEntropy, EntropyState { oldMaxNumHashes, maxNumHashes ); + emit EntropyEventsV2.ProviderMaxNumHashesAdvanced( + msg.sender, + oldMaxNumHashes, + maxNumHashes, + bytes("") + ); } // Set the default gas limit for a request. @@ -817,6 +896,12 @@ abstract contract Entropy is IEntropy, EntropyState { uint32 oldGasLimit = provider.defaultGasLimit; provider.defaultGasLimit = gasLimit; emit ProviderDefaultGasLimitUpdated(msg.sender, oldGasLimit, gasLimit); + emit EntropyEventsV2.ProviderDefaultGasLimitUpdated( + msg.sender, + oldGasLimit, + gasLimit, + bytes("") + ); } function constructUserCommitment( diff --git a/target_chains/ethereum/contracts/forge-test/Entropy.t.sol b/target_chains/ethereum/contracts/forge-test/Entropy.t.sol index 84fd32f59e..4191c17d6c 100644 --- a/target_chains/ethereum/contracts/forge-test/Entropy.t.sol +++ b/target_chains/ethereum/contracts/forge-test/Entropy.t.sol @@ -12,10 +12,11 @@ import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import "./utils/EntropyTestUtils.t.sol"; import "../contracts/entropy/EntropyUpgradable.sol"; import "@pythnetwork/entropy-sdk-solidity/EntropyStatusConstants.sol"; +import "@pythnetwork/entropy-sdk-solidity/EntropyEventsV2.sol"; // TODO // - fuzz test? -contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { +contract EntropyTest is Test, EntropyTestUtils, EntropyEvents, EntropyEventsV2 { ERC1967Proxy public proxy; EntropyUpgradable public random; @@ -742,7 +743,7 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { random.withdraw(providerOneBalance); } - function testgetProviderInfoV2() public { + function testGetProviderInfoV2() public { EntropyStructsV2.ProviderInfo memory providerInfo1 = random .getProviderInfoV2(provider1); // These two fields aren't used by the Entropy contract itself -- they're just convenient info to store @@ -818,6 +819,14 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { isRequestWithCallback: true }) ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Requested( + provider1, + user1, + providerInfo.sequenceNumber, + userRandomNumber, + bytes("") + ); vm.roll(1234); uint64 assignedSequenceNumber = random.requestWithCallback{value: fee}( provider1, @@ -868,6 +877,20 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { 0 ) ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Revealed( + provider1, + req.requester, + req.sequenceNumber, + random.combineRandomValues( + userRandomNumber, + provider1Proofs[assignedSequenceNumber], + 0 + ), + false, + bytes(""), + bytes("") + ); vm.prank(user1); random.revealWithCallback( provider1, @@ -921,6 +944,20 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { 0 ) ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Revealed( + provider1, + req.requester, + req.sequenceNumber, + random.combineRandomValues( + userRandomNumber, + provider1Proofs[assignedSequenceNumber], + 0 + ), + false, + bytes(""), + bytes("") + ); random.revealWithCallback( provider1, assignedSequenceNumber, @@ -1004,6 +1041,20 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { 0 ) ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Revealed( + provider1, + req.requester, + req.sequenceNumber, + random.combineRandomValues( + userRandomNumber, + provider1Proofs[assignedSequenceNumber], + 0 + ), + false, + bytes(""), + bytes("") + ); random.revealWithCallback( provider1, assignedSequenceNumber, @@ -1062,6 +1113,20 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { ), revertReason ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Revealed( + provider1, + address(consumer), + assignedSequenceNumber, + random.combineRandomValues( + userRandomNumber, + provider1Proofs[assignedSequenceNumber], + 0 + ), + true, + revertReason, + bytes("") + ); random.revealWithCallback( provider1, assignedSequenceNumber, @@ -1113,6 +1178,20 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { 0 ) ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Revealed( + provider1, + reqAfterFailure.requester, + reqAfterFailure.sequenceNumber, + random.combineRandomValues( + userRandomNumber, + provider1Proofs[assignedSequenceNumber], + 0 + ), + false, + bytes(""), + bytes("") + ); random.revealWithCallback( provider1, assignedSequenceNumber, @@ -1179,6 +1258,20 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { // out-of-gas reverts have an empty bytes array as the return value. "" ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Revealed( + provider1, + address(consumer), + assignedSequenceNumber, + random.combineRandomValues( + userRandomNumber, + provider1Proofs[assignedSequenceNumber], + 0 + ), + true, + "", + "" + ); random.revealWithCallback( provider1, assignedSequenceNumber, @@ -1229,6 +1322,20 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { 0 ) ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Revealed( + provider1, + address(consumer), + assignedSequenceNumber, + random.combineRandomValues( + userRandomNumber, + provider1Proofs[assignedSequenceNumber], + 0 + ), + false, + "", + "" + ); random.revealWithCallback( provider1, assignedSequenceNumber, @@ -1471,6 +1578,13 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { vm.prank(provider1); vm.expectEmit(false, false, false, true, address(random)); emit ProviderDefaultGasLimitUpdated(provider1, 0, newGasLimit); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.ProviderDefaultGasLimitUpdated( + provider1, + 0, + newGasLimit, + bytes("") + ); random.setDefaultGasLimit(newGasLimit); EntropyStructsV2.ProviderInfo memory info = random.getProviderInfoV2( @@ -1688,6 +1802,20 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { // out-of-gas reverts have an empty bytes array as the return value. "" ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Revealed( + provider1, + address(consumer), + sequenceNumber, + random.combineRandomValues( + userRandomNumber, + provider1Proofs[sequenceNumber], + 0 + ), + true, + bytes(""), + bytes("") + ); random.revealWithCallback( provider1, sequenceNumber, @@ -1715,6 +1843,20 @@ contract EntropyTest is Test, EntropyTestUtils, EntropyEvents { 0 ) ); + vm.expectEmit(false, false, false, true, address(random)); + emit EntropyEventsV2.Revealed( + provider1, + req.requester, + req.sequenceNumber, + random.combineRandomValues( + userRandomNumber, + provider1Proofs[sequenceNumber], + 0 + ), + false, + bytes(""), + bytes("") + ); random.revealWithCallback( provider1, sequenceNumber, diff --git a/target_chains/ethereum/entropy_sdk/solidity/EntropyEventsV2.sol b/target_chains/ethereum/entropy_sdk/solidity/EntropyEventsV2.sol new file mode 100644 index 0000000000..bb5221843b --- /dev/null +++ b/target_chains/ethereum/entropy_sdk/solidity/EntropyEventsV2.sol @@ -0,0 +1,142 @@ +// SPDX-License-Identifier: Apache-2.0 +pragma solidity ^0.8.0; + +import "./EntropyStructs.sol"; + +/** + * @title EntropyEventsV2 + * @notice Interface defining events for the Entropy V2 system, which handles random number generation + * and provider management on Ethereum. + * @dev This interface is used to emit events that track the lifecycle of random number requests, + * provider registrations, and system configurations. + */ +interface EntropyEventsV2 { + /** + * @notice Emitted when a new provider registers with the Entropy system + * @param provider The address of the registered provider + * @param extraArgs A field for extra data for forward compatibility. + */ + event Registered(address indexed provider, bytes extraArgs); + + /** + * @notice Emitted when a user requests a random number from a provider + * @param provider The address of the provider handling the request + * @param caller The address of the user requesting the random number + * @param sequenceNumber A unique identifier for this request + * @param userRandomNumber A random number provided by the user for additional entropy + * @param extraArgs A field for extra data for forward compatibility. + */ + event Requested( + address indexed provider, + address indexed caller, + uint64 indexed sequenceNumber, + bytes32 userRandomNumber, + bytes extraArgs + ); + + /** + * @notice Emitted when a provider reveals the generated random number + * @param provider The address of the provider that generated the random number + * @param caller The address of the user who requested the random number (and who receives a callback) + * @param sequenceNumber The unique identifier of the request + * @param randomNumber The generated random number + * @param callbackFailed Whether the callback to the caller failed + * @param callbackReturnValue Return value from the callback. If the callback failed, this field contains + * the error code and any additional returned data. Note that "" often indicates an out-of-gas error. + * If the callback returns more than 256 bytes, only the first 256 bytes of the callback return value are included. + * @param extraArgs A field for extra data for forward compatibility. + */ + event Revealed( + address indexed provider, + address indexed caller, + uint64 indexed sequenceNumber, + bytes32 randomNumber, + bool callbackFailed, + bytes callbackReturnValue, + bytes extraArgs + ); + + /** + * @notice Emitted when a provider updates their fee + * @param provider The address of the provider updating their fee + * @param oldFee The previous fee amount + * @param newFee The new fee amount + * @param extraArgs A field for extra data for forward compatibility. + */ + event ProviderFeeUpdated( + address indexed provider, + uint128 oldFee, + uint128 newFee, + bytes extraArgs + ); + + /** + * @notice Emitted when a provider updates their default gas limit + * @param provider The address of the provider updating their gas limit + * @param oldDefaultGasLimit The previous default gas limit + * @param newDefaultGasLimit The new default gas limit + * @param extraArgs A field for extra data for forward compatibility. + */ + event ProviderDefaultGasLimitUpdated( + address indexed provider, + uint32 oldDefaultGasLimit, + uint32 newDefaultGasLimit, + bytes extraArgs + ); + + /** + * @notice Emitted when a provider updates their URI + * @param provider The address of the provider updating their URI + * @param oldUri The previous URI + * @param newUri The new URI + * @param extraArgs A field for extra data for forward compatibility. + */ + event ProviderUriUpdated( + address indexed provider, + bytes oldUri, + bytes newUri, + bytes extraArgs + ); + + /** + * @notice Emitted when a provider updates their fee manager address + * @param provider The address of the provider updating their fee manager + * @param oldFeeManager The previous fee manager address + * @param newFeeManager The new fee manager address + * @param extraArgs A field for extra data for forward compatibility. + */ + event ProviderFeeManagerUpdated( + address indexed provider, + address oldFeeManager, + address newFeeManager, + bytes extraArgs + ); + + /** + * @notice Emitted when a provider updates their maximum number of hashes that can be advanced + * @param provider The address of the provider updating their max hashes + * @param oldMaxNumHashes The previous maximum number of hashes + * @param newMaxNumHashes The new maximum number of hashes + * @param extraArgs A field for extra data for forward compatibility. + */ + event ProviderMaxNumHashesAdvanced( + address indexed provider, + uint32 oldMaxNumHashes, + uint32 newMaxNumHashes, + bytes extraArgs + ); + + /** + * @notice Emitted when a provider withdraws their accumulated fees + * @param provider The address of the provider withdrawing fees + * @param recipient The address receiving the withdrawn fees + * @param withdrawnAmount The amount of fees withdrawn + * @param extraArgs A field for extra data for forward compatibility. + */ + event Withdrawal( + address indexed provider, + address indexed recipient, + uint128 withdrawnAmount, + bytes extraArgs + ); +} diff --git a/target_chains/ethereum/entropy_sdk/solidity/IEntropy.sol b/target_chains/ethereum/entropy_sdk/solidity/IEntropy.sol index 9d86e3684a..b262de616e 100644 --- a/target_chains/ethereum/entropy_sdk/solidity/IEntropy.sol +++ b/target_chains/ethereum/entropy_sdk/solidity/IEntropy.sol @@ -2,9 +2,10 @@ pragma solidity ^0.8.0; import "./EntropyEvents.sol"; +import "./EntropyEventsV2.sol"; import "./EntropyStructsV2.sol"; -interface IEntropy is EntropyEvents { +interface IEntropy is EntropyEvents, EntropyEventsV2 { // Register msg.sender as a randomness provider. The arguments are the provider's configuration parameters // and initial commitment. Re-registering the same provider rotates the provider's commitment (and updates // the feeInWei). diff --git a/target_chains/ethereum/entropy_sdk/solidity/abis/IEntropy.json b/target_chains/ethereum/entropy_sdk/solidity/abis/IEntropy.json index 302a39cc48..1d6465bfa3 100644 --- a/target_chains/ethereum/entropy_sdk/solidity/abis/IEntropy.json +++ b/target_chains/ethereum/entropy_sdk/solidity/abis/IEntropy.json @@ -76,9 +76,65 @@ { "anonymous": false, "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "oldDefaultGasLimit", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "newDefaultGasLimit", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "extraArgs", + "type": "bytes" + } + ], + "name": "ProviderDefaultGasLimitUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "provider", + "type": "address" + }, { "indexed": false, "internalType": "address", + "name": "oldFeeManager", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newFeeManager", + "type": "address" + } + ], + "name": "ProviderFeeManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", "name": "provider", "type": "address" }, @@ -93,6 +149,12 @@ "internalType": "address", "name": "newFeeManager", "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "extraArgs", + "type": "bytes" } ], "name": "ProviderFeeManagerUpdated", @@ -123,6 +185,37 @@ "name": "ProviderFeeUpdated", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "oldFee", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "newFee", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "extraArgs", + "type": "bytes" + } + ], + "name": "ProviderFeeUpdated", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -151,8 +244,64 @@ { "anonymous": false, "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, { "indexed": false, + "internalType": "uint32", + "name": "oldMaxNumHashes", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "newMaxNumHashes", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "extraArgs", + "type": "bytes" + } + ], + "name": "ProviderMaxNumHashesAdvanced", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "oldUri", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "newUri", + "type": "bytes" + } + ], + "name": "ProviderUriUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, "internalType": "address", "name": "provider", "type": "address" @@ -168,6 +317,12 @@ "internalType": "bytes", "name": "newUri", "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "extraArgs", + "type": "bytes" } ], "name": "ProviderUriUpdated", @@ -248,6 +403,25 @@ "name": "Registered", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "extraArgs", + "type": "bytes" + } + ], + "name": "Registered", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -303,6 +477,43 @@ "name": "Requested", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "sequenceNumber", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "userRandomNumber", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "extraArgs", + "type": "bytes" + } + ], + "name": "Requested", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -461,6 +672,55 @@ "name": "Revealed", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "caller", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint64", + "name": "sequenceNumber", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "randomNumber", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "bool", + "name": "callbackFailed", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "callbackReturnValue", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "extraArgs", + "type": "bytes" + } + ], + "name": "Revealed", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -559,6 +819,37 @@ "name": "Withdrawal", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "provider", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint128", + "name": "withdrawnAmount", + "type": "uint128" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "extraArgs", + "type": "bytes" + } + ], + "name": "Withdrawal", + "type": "event" + }, { "inputs": [ { diff --git a/target_chains/ethereum/entropy_sdk/solidity/package.json b/target_chains/ethereum/entropy_sdk/solidity/package.json index e0ef46a626..4f487e1875 100644 --- a/target_chains/ethereum/entropy_sdk/solidity/package.json +++ b/target_chains/ethereum/entropy_sdk/solidity/package.json @@ -14,7 +14,7 @@ "scripts": { "test:format": "prettier --check .", "fix:format": "prettier --write .", - "build": "generate-abis IEntropy IEntropyConsumer EntropyErrors EntropyEvents EntropyStructs EntropyStructsV2 EntropyStatusConstants PRNG", + "build": "generate-abis IEntropy IEntropyConsumer EntropyErrors EntropyEvents EntropyEventsV2 EntropyStructs EntropyStructsV2 EntropyStatusConstants PRNG", "test": "git diff --exit-code abis" }, "keywords": [