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 {
342342 return _state.accruedPythFeesInWei;
343343 }
344344
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+
345372 function constructUserCommitment (
346373 bytes32 userRandomness
347374 ) 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 {
696696 assertEq (providerInfo1.uri, provider1Uri);
697697 assertEq (providerInfo1.commitmentMetadata, provider1CommitmentMetadata);
698698 }
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+ }
699732}
Original file line number Diff line number Diff line change @@ -15,4 +15,8 @@ interface EntropyEvents {
1515 bytes32 blockHash ,
1616 bytes32 randomNumber
1717 );
18+
19+ event ProviderFeeUpdated (address provider , uint128 oldFee , uint128 newFee );
20+
21+ event ProviderUriUpdated (address provider , bytes oldUri , bytes newUri );
1822}
Original file line number Diff line number Diff line change @@ -70,6 +70,10 @@ interface IEntropy is EntropyEvents {
7070 view
7171 returns (uint128 accruedPythFeesInWei );
7272
73+ function setProviderFee (uint128 newFeeInWei ) external ;
74+
75+ function setProviderUri (bytes calldata newUri ) external ;
76+
7377 function constructUserCommitment (
7478 bytes32 userRandomness
7579 ) external pure returns (bytes32 userCommitment );
Original file line number Diff line number Diff line change 11[
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+ },
252 {
353 "anonymous" : false ,
454 "inputs" : [
Original file line number Diff line number Diff line change 11[
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+ },
252 {
353 "anonymous" : false ,
454 "inputs" : [
509559 "stateMutability" : " nonpayable" ,
510560 "type" : " function"
511561 },
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+ },
512588 {
513589 "inputs" : [
514590 {
You can’t perform that action at this time.
0 commit comments