Skip to content

Commit

Permalink
[entropy] set provider fee and uri (#1230)
Browse files Browse the repository at this point in the history
* set provider fee and uri

* update comment

* pre commit

* abis gen

* update tests
  • Loading branch information
Dev Kalra authored Jan 18, 2024
1 parent 112db1d commit 658d7ca
Show file tree
Hide file tree
Showing 6 changed files with 194 additions and 0 deletions.
27 changes: 27 additions & 0 deletions target_chains/ethereum/contracts/contracts/entropy/Entropy.sol
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,33 @@ abstract contract Entropy is IEntropy, EntropyState {
return _state.accruedPythFeesInWei;
}

// Set provider fee. It will revert if provider is not registered.
function setProviderFee(uint128 newFeeInWei) external override {
EntropyStructs.ProviderInfo storage provider = _state.providers[
msg.sender
];

if (provider.sequenceNumber == 0) {
revert EntropyErrors.NoSuchProvider();
}
uint128 oldFeeInWei = provider.feeInWei;
provider.feeInWei = newFeeInWei;
emit ProviderFeeUpdated(msg.sender, oldFeeInWei, newFeeInWei);
}

// Set provider uri. It will revert if provider is not registered.
function setProviderUri(bytes calldata newUri) external override {
EntropyStructs.ProviderInfo storage provider = _state.providers[
msg.sender
];
if (provider.sequenceNumber == 0) {
revert EntropyErrors.NoSuchProvider();
}
bytes memory oldUri = provider.uri;
provider.uri = newUri;
emit ProviderUriUpdated(msg.sender, oldUri, newUri);
}

function constructUserCommitment(
bytes32 userRandomness
) public pure override returns (bytes32 userCommitment) {
Expand Down
33 changes: 33 additions & 0 deletions target_chains/ethereum/contracts/forge-test/Entropy.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -696,4 +696,37 @@ contract EntropyTest is Test, EntropyTestUtils {
assertEq(providerInfo1.uri, provider1Uri);
assertEq(providerInfo1.commitmentMetadata, provider1CommitmentMetadata);
}

function testSetProviderFee() public {
assertNotEq(random.getProviderInfo(provider1).feeInWei, 1);

vm.prank(provider1);
random.setProviderFee(1);

assertEq(random.getProviderInfo(provider1).feeInWei, 1);
}

function testSetProviderFeeByUnregistered() public {
vm.prank(unregisteredProvider);
vm.expectRevert();
random.setProviderFee(1);
}

function testSetProviderUri() public {
bytes memory newUri = bytes("https://new.com");

assertNotEq0(random.getProviderInfo(provider1).uri, newUri);

vm.prank(provider1);
random.setProviderUri(newUri);

assertEq0(random.getProviderInfo(provider1).uri, newUri);
}

function testSetProviderUriByUnregistered() public {
bytes memory newUri = bytes("https://new.com");
vm.prank(unregisteredProvider);
vm.expectRevert();
random.setProviderUri(newUri);
}
}
4 changes: 4 additions & 0 deletions target_chains/ethereum/entropy_sdk/solidity/EntropyEvents.sol
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,8 @@ interface EntropyEvents {
bytes32 blockHash,
bytes32 randomNumber
);

event ProviderFeeUpdated(address provider, uint128 oldFee, uint128 newFee);

event ProviderUriUpdated(address provider, bytes oldUri, bytes newUri);
}
4 changes: 4 additions & 0 deletions target_chains/ethereum/entropy_sdk/solidity/IEntropy.sol
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ interface IEntropy is EntropyEvents {
view
returns (uint128 accruedPythFeesInWei);

function setProviderFee(uint128 newFeeInWei) external;

function setProviderUri(bytes calldata newUri) external;

function constructUserCommitment(
bytes32 userRandomness
) external pure returns (bytes32 userCommitment);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,54 @@
[
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "provider",
"type": "address"
},
{
"indexed": false,
"internalType": "uint128",
"name": "oldFee",
"type": "uint128"
},
{
"indexed": false,
"internalType": "uint128",
"name": "newFee",
"type": "uint128"
}
],
"name": "ProviderFeeUpdated",
"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": [
Expand Down
76 changes: 76 additions & 0 deletions target_chains/ethereum/entropy_sdk/solidity/abis/IEntropy.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,54 @@
[
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "provider",
"type": "address"
},
{
"indexed": false,
"internalType": "uint128",
"name": "oldFee",
"type": "uint128"
},
{
"indexed": false,
"internalType": "uint128",
"name": "newFee",
"type": "uint128"
}
],
"name": "ProviderFeeUpdated",
"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": [
Expand Down Expand Up @@ -509,6 +559,32 @@
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint128",
"name": "newFeeInWei",
"type": "uint128"
}
],
"name": "setProviderFee",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "newUri",
"type": "bytes"
}
],
"name": "setProviderUri",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
Expand Down

0 comments on commit 658d7ca

Please sign in to comment.