Skip to content

Commit 5da7aef

Browse files
authored
feat(entropy): Event V2 spec (#2621)
* Revised event spec * ok it works * generate abi * fix event decoding * PR comments
1 parent 7cd8977 commit 5da7aef

File tree

7 files changed

+670
-9
lines changed

7 files changed

+670
-9
lines changed

apps/fortuna/src/chain/ethereum.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ impl<T: JsonRpcClient + 'static + Clone> SignablePythContractInner<T> {
8383
{
8484
// Extract Log from TransactionReceipt.
8585
let l: RawLog = r.logs[0].clone().into();
86-
if let PythRandomEvents::RequestedFilter(r) = PythRandomEvents::decode_log(&l)? {
86+
if let PythRandomEvents::Requested1Filter(r) = PythRandomEvents::decode_log(&l)? {
8787
Ok(r.request.sequence_number)
8888
} else {
8989
Err(anyhow!("No log with sequence number"))
@@ -147,7 +147,7 @@ impl<T: JsonRpcClient + 'static + Clone> SignablePythContractInner<T> {
147147
.await?
148148
.await?
149149
{
150-
if let PythRandomEvents::RevealedFilter(r) =
150+
if let PythRandomEvents::Revealed1Filter(r) =
151151
PythRandomEvents::decode_log(&r.logs[0].clone().into())?
152152
{
153153
Ok(r.random_number)

target_chains/ethereum/contracts/contracts/entropy/Entropy.sol

Lines changed: 88 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,10 @@ abstract contract Entropy is IEntropy, EntropyState {
150150

151151
provider.sequenceNumber += 1;
152152

153-
emit Registered(EntropyStructConverter.toV1ProviderInfo(provider));
153+
emit EntropyEvents.Registered(
154+
EntropyStructConverter.toV1ProviderInfo(provider)
155+
);
156+
emit EntropyEventsV2.Registered(msg.sender, bytes(""));
154157
}
155158

156159
// Withdraw a portion of the accumulated fees for the provider msg.sender.
@@ -172,7 +175,13 @@ abstract contract Entropy is IEntropy, EntropyState {
172175
(bool sent, ) = msg.sender.call{value: amount}("");
173176
require(sent, "withdrawal to msg.sender failed");
174177

175-
emit Withdrawal(msg.sender, msg.sender, amount);
178+
emit EntropyEvents.Withdrawal(msg.sender, msg.sender, amount);
179+
emit EntropyEventsV2.Withdrawal(
180+
msg.sender,
181+
msg.sender,
182+
amount,
183+
bytes("")
184+
);
176185
}
177186

178187
function withdrawAsFeeManager(
@@ -202,7 +211,13 @@ abstract contract Entropy is IEntropy, EntropyState {
202211
(bool sent, ) = msg.sender.call{value: amount}("");
203212
require(sent, "withdrawal to msg.sender failed");
204213

205-
emit Withdrawal(provider, msg.sender, amount);
214+
emit EntropyEvents.Withdrawal(provider, msg.sender, amount);
215+
emit EntropyEventsV2.Withdrawal(
216+
provider,
217+
msg.sender,
218+
amount,
219+
bytes("")
220+
);
206221
}
207222

208223
// requestHelper allocates and returns a new request for the given provider.
@@ -349,6 +364,13 @@ abstract contract Entropy is IEntropy, EntropyState {
349364
userRandomNumber,
350365
EntropyStructConverter.toV1Request(req)
351366
);
367+
emit EntropyEventsV2.Requested(
368+
provider,
369+
req.requester,
370+
req.sequenceNumber,
371+
userRandomNumber,
372+
bytes("")
373+
);
352374
return req.sequenceNumber;
353375
}
354376

@@ -570,6 +592,15 @@ abstract contract Entropy is IEntropy, EntropyState {
570592
providerRevelation,
571593
randomNumber
572594
);
595+
emit EntropyEventsV2.Revealed(
596+
provider,
597+
req.requester,
598+
req.sequenceNumber,
599+
randomNumber,
600+
false,
601+
ret,
602+
bytes("")
603+
);
573604
clearRequest(provider, sequenceNumber);
574605
} else if (
575606
ret.length > 0 ||
@@ -590,6 +621,15 @@ abstract contract Entropy is IEntropy, EntropyState {
590621
randomNumber,
591622
ret
592623
);
624+
emit EntropyEventsV2.Revealed(
625+
provider,
626+
req.requester,
627+
sequenceNumber,
628+
randomNumber,
629+
true,
630+
ret,
631+
bytes("")
632+
);
593633
req.callbackStatus = EntropyStatusConstants.CALLBACK_FAILED;
594634
} else {
595635
// 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 {
608648
providerRevelation,
609649
randomNumber
610650
);
651+
emit EntropyEventsV2.Revealed(
652+
provider,
653+
req.requester,
654+
req.sequenceNumber,
655+
randomNumber,
656+
false,
657+
bytes(""),
658+
bytes("")
659+
);
611660

612661
clearRequest(provider, sequenceNumber);
613662

@@ -732,6 +781,12 @@ abstract contract Entropy is IEntropy, EntropyState {
732781
uint128 oldFeeInWei = provider.feeInWei;
733782
provider.feeInWei = newFeeInWei;
734783
emit ProviderFeeUpdated(msg.sender, oldFeeInWei, newFeeInWei);
784+
emit EntropyEventsV2.ProviderFeeUpdated(
785+
msg.sender,
786+
oldFeeInWei,
787+
newFeeInWei,
788+
bytes("")
789+
);
735790
}
736791

737792
function setProviderFeeAsFeeManager(
@@ -754,6 +809,12 @@ abstract contract Entropy is IEntropy, EntropyState {
754809
providerInfo.feeInWei = newFeeInWei;
755810

756811
emit ProviderFeeUpdated(provider, oldFeeInWei, newFeeInWei);
812+
emit EntropyEventsV2.ProviderFeeUpdated(
813+
provider,
814+
oldFeeInWei,
815+
newFeeInWei,
816+
bytes("")
817+
);
757818
}
758819

759820
// Set provider uri. It will revert if provider is not registered.
@@ -767,6 +828,12 @@ abstract contract Entropy is IEntropy, EntropyState {
767828
bytes memory oldUri = provider.uri;
768829
provider.uri = newUri;
769830
emit ProviderUriUpdated(msg.sender, oldUri, newUri);
831+
emit EntropyEventsV2.ProviderUriUpdated(
832+
msg.sender,
833+
oldUri,
834+
newUri,
835+
bytes("")
836+
);
770837
}
771838

772839
function setFeeManager(address manager) external override {
@@ -780,6 +847,12 @@ abstract contract Entropy is IEntropy, EntropyState {
780847
address oldFeeManager = provider.feeManager;
781848
provider.feeManager = manager;
782849
emit ProviderFeeManagerUpdated(msg.sender, oldFeeManager, manager);
850+
emit EntropyEventsV2.ProviderFeeManagerUpdated(
851+
msg.sender,
852+
oldFeeManager,
853+
manager,
854+
bytes("")
855+
);
783856
}
784857

785858
// 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 {
799872
oldMaxNumHashes,
800873
maxNumHashes
801874
);
875+
emit EntropyEventsV2.ProviderMaxNumHashesAdvanced(
876+
msg.sender,
877+
oldMaxNumHashes,
878+
maxNumHashes,
879+
bytes("")
880+
);
802881
}
803882

804883
// Set the default gas limit for a request.
@@ -817,6 +896,12 @@ abstract contract Entropy is IEntropy, EntropyState {
817896
uint32 oldGasLimit = provider.defaultGasLimit;
818897
provider.defaultGasLimit = gasLimit;
819898
emit ProviderDefaultGasLimitUpdated(msg.sender, oldGasLimit, gasLimit);
899+
emit EntropyEventsV2.ProviderDefaultGasLimitUpdated(
900+
msg.sender,
901+
oldGasLimit,
902+
gasLimit,
903+
bytes("")
904+
);
820905
}
821906

822907
function constructUserCommitment(

0 commit comments

Comments
 (0)