File tree Expand file tree Collapse file tree 6 files changed +194
-0
lines changed Expand file tree Collapse file tree 6 files changed +194
-0
lines changed Original file line number Diff line number Diff line change @@ -342,6 +342,33 @@ abstract contract Entropy is IEntropy, EntropyState {
342
342
return _state.accruedPythFeesInWei;
343
343
}
344
344
345
+ // Set provider fee. It will revert if provider is not registered.
346
+ function setProviderFee (uint128 newFeeInWei ) external override {
347
+ EntropyStructs.ProviderInfo storage provider = _state.providers[
348
+ msg .sender
349
+ ];
350
+
351
+ if (provider.sequenceNumber == 0 ) {
352
+ revert EntropyErrors.NoSuchProvider ();
353
+ }
354
+ uint128 oldFeeInWei = provider.feeInWei;
355
+ provider.feeInWei = newFeeInWei;
356
+ emit ProviderFeeUpdated (msg .sender , oldFeeInWei, newFeeInWei);
357
+ }
358
+
359
+ // Set provider uri. It will revert if provider is not registered.
360
+ function setProviderUri (bytes calldata newUri ) external override {
361
+ EntropyStructs.ProviderInfo storage provider = _state.providers[
362
+ msg .sender
363
+ ];
364
+ if (provider.sequenceNumber == 0 ) {
365
+ revert EntropyErrors.NoSuchProvider ();
366
+ }
367
+ bytes memory oldUri = provider.uri;
368
+ provider.uri = newUri;
369
+ emit ProviderUriUpdated (msg .sender , oldUri, newUri);
370
+ }
371
+
345
372
function constructUserCommitment (
346
373
bytes32 userRandomness
347
374
) public pure override returns (bytes32 userCommitment ) {
Original file line number Diff line number Diff line change @@ -696,4 +696,37 @@ contract EntropyTest is Test, EntropyTestUtils {
696
696
assertEq (providerInfo1.uri, provider1Uri);
697
697
assertEq (providerInfo1.commitmentMetadata, provider1CommitmentMetadata);
698
698
}
699
+
700
+ function testSetProviderFee () public {
701
+ assertNotEq (random.getProviderInfo (provider1).feeInWei, 1 );
702
+
703
+ vm.prank (provider1);
704
+ random.setProviderFee (1 );
705
+
706
+ assertEq (random.getProviderInfo (provider1).feeInWei, 1 );
707
+ }
708
+
709
+ function testSetProviderFeeByUnregistered () public {
710
+ vm.prank (unregisteredProvider);
711
+ vm.expectRevert ();
712
+ random.setProviderFee (1 );
713
+ }
714
+
715
+ function testSetProviderUri () public {
716
+ bytes memory newUri = bytes ("https://new.com " );
717
+
718
+ assertNotEq0 (random.getProviderInfo (provider1).uri, newUri);
719
+
720
+ vm.prank (provider1);
721
+ random.setProviderUri (newUri);
722
+
723
+ assertEq0 (random.getProviderInfo (provider1).uri, newUri);
724
+ }
725
+
726
+ function testSetProviderUriByUnregistered () public {
727
+ bytes memory newUri = bytes ("https://new.com " );
728
+ vm.prank (unregisteredProvider);
729
+ vm.expectRevert ();
730
+ random.setProviderUri (newUri);
731
+ }
699
732
}
Original file line number Diff line number Diff line change @@ -15,4 +15,8 @@ interface EntropyEvents {
15
15
bytes32 blockHash ,
16
16
bytes32 randomNumber
17
17
);
18
+
19
+ event ProviderFeeUpdated (address provider , uint128 oldFee , uint128 newFee );
20
+
21
+ event ProviderUriUpdated (address provider , bytes oldUri , bytes newUri );
18
22
}
Original file line number Diff line number Diff line change @@ -70,6 +70,10 @@ interface IEntropy is EntropyEvents {
70
70
view
71
71
returns (uint128 accruedPythFeesInWei );
72
72
73
+ function setProviderFee (uint128 newFeeInWei ) external ;
74
+
75
+ function setProviderUri (bytes calldata newUri ) external ;
76
+
73
77
function constructUserCommitment (
74
78
bytes32 userRandomness
75
79
) external pure returns (bytes32 userCommitment );
Original file line number Diff line number Diff line change 1
1
[
2
+ {
3
+ "anonymous" : false ,
4
+ "inputs" : [
5
+ {
6
+ "indexed" : false ,
7
+ "internalType" : " address" ,
8
+ "name" : " provider" ,
9
+ "type" : " address"
10
+ },
11
+ {
12
+ "indexed" : false ,
13
+ "internalType" : " uint128" ,
14
+ "name" : " oldFee" ,
15
+ "type" : " uint128"
16
+ },
17
+ {
18
+ "indexed" : false ,
19
+ "internalType" : " uint128" ,
20
+ "name" : " newFee" ,
21
+ "type" : " uint128"
22
+ }
23
+ ],
24
+ "name" : " ProviderFeeUpdated" ,
25
+ "type" : " event"
26
+ },
27
+ {
28
+ "anonymous" : false ,
29
+ "inputs" : [
30
+ {
31
+ "indexed" : false ,
32
+ "internalType" : " address" ,
33
+ "name" : " provider" ,
34
+ "type" : " address"
35
+ },
36
+ {
37
+ "indexed" : false ,
38
+ "internalType" : " bytes" ,
39
+ "name" : " oldUri" ,
40
+ "type" : " bytes"
41
+ },
42
+ {
43
+ "indexed" : false ,
44
+ "internalType" : " bytes" ,
45
+ "name" : " newUri" ,
46
+ "type" : " bytes"
47
+ }
48
+ ],
49
+ "name" : " ProviderUriUpdated" ,
50
+ "type" : " event"
51
+ },
2
52
{
3
53
"anonymous" : false ,
4
54
"inputs" : [
Original file line number Diff line number Diff line change 1
1
[
2
+ {
3
+ "anonymous" : false ,
4
+ "inputs" : [
5
+ {
6
+ "indexed" : false ,
7
+ "internalType" : " address" ,
8
+ "name" : " provider" ,
9
+ "type" : " address"
10
+ },
11
+ {
12
+ "indexed" : false ,
13
+ "internalType" : " uint128" ,
14
+ "name" : " oldFee" ,
15
+ "type" : " uint128"
16
+ },
17
+ {
18
+ "indexed" : false ,
19
+ "internalType" : " uint128" ,
20
+ "name" : " newFee" ,
21
+ "type" : " uint128"
22
+ }
23
+ ],
24
+ "name" : " ProviderFeeUpdated" ,
25
+ "type" : " event"
26
+ },
27
+ {
28
+ "anonymous" : false ,
29
+ "inputs" : [
30
+ {
31
+ "indexed" : false ,
32
+ "internalType" : " address" ,
33
+ "name" : " provider" ,
34
+ "type" : " address"
35
+ },
36
+ {
37
+ "indexed" : false ,
38
+ "internalType" : " bytes" ,
39
+ "name" : " oldUri" ,
40
+ "type" : " bytes"
41
+ },
42
+ {
43
+ "indexed" : false ,
44
+ "internalType" : " bytes" ,
45
+ "name" : " newUri" ,
46
+ "type" : " bytes"
47
+ }
48
+ ],
49
+ "name" : " ProviderUriUpdated" ,
50
+ "type" : " event"
51
+ },
2
52
{
3
53
"anonymous" : false ,
4
54
"inputs" : [
509
559
"stateMutability" : " nonpayable" ,
510
560
"type" : " function"
511
561
},
562
+ {
563
+ "inputs" : [
564
+ {
565
+ "internalType" : " uint128" ,
566
+ "name" : " newFeeInWei" ,
567
+ "type" : " uint128"
568
+ }
569
+ ],
570
+ "name" : " setProviderFee" ,
571
+ "outputs" : [],
572
+ "stateMutability" : " nonpayable" ,
573
+ "type" : " function"
574
+ },
575
+ {
576
+ "inputs" : [
577
+ {
578
+ "internalType" : " bytes" ,
579
+ "name" : " newUri" ,
580
+ "type" : " bytes"
581
+ }
582
+ ],
583
+ "name" : " setProviderUri" ,
584
+ "outputs" : [],
585
+ "stateMutability" : " nonpayable" ,
586
+ "type" : " function"
587
+ },
512
588
{
513
589
"inputs" : [
514
590
{
You can’t perform that action at this time.
0 commit comments