Skip to content

Commit 658d7ca

Browse files
author
Dev Kalra
authored
[entropy] set provider fee and uri (#1230)
* set provider fee and uri * update comment * pre commit * abis gen * update tests
1 parent 112db1d commit 658d7ca

File tree

6 files changed

+194
-0
lines changed

6 files changed

+194
-0
lines changed

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

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff 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) {

target_chains/ethereum/contracts/forge-test/Entropy.t.sol

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff 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
}

target_chains/ethereum/entropy_sdk/solidity/EntropyEvents.sol

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff 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
}

target_chains/ethereum/entropy_sdk/solidity/IEntropy.sol

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff 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);

target_chains/ethereum/entropy_sdk/solidity/abis/EntropyEvents.json

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,54 @@
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": [

target_chains/ethereum/entropy_sdk/solidity/abis/IEntropy.json

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,54 @@
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": [
@@ -509,6 +559,32 @@
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
{

0 commit comments

Comments
 (0)