-
Notifications
You must be signed in to change notification settings - Fork 369
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
148 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
32 changes: 32 additions & 0 deletions
32
packages/protocol/test-sol/precompiles/NumberValidatorsInCurrentSetPrecompile.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
// TODO move this to test folder | ||
pragma solidity >=0.8.7 <0.8.20; | ||
|
||
import "forge-std/console.sol"; | ||
import "@celo-contracts/common/interfaces/IRegistry.sol"; | ||
import "@celo-contracts/governance/interfaces/IValidators.sol"; | ||
|
||
contract NumberValidatorsInCurrentSetPrecompile { | ||
address constant ADDRESS = address(0xff - 6); | ||
|
||
uint256 public NumberOfValidators = 1; | ||
|
||
address internal constant registryAddress = 0x000000000000000000000000000000000000ce10; | ||
|
||
receive() external payable {} | ||
|
||
fallback(bytes calldata) external payable returns (bytes memory) { | ||
return abi.encodePacked(NumberOfValidators); | ||
} | ||
|
||
function setNumberOfValidators() external{ | ||
IRegistry registry = IRegistry(registryAddress); | ||
address validatorsAddress = registry.getAddressForString("Validators"); | ||
IValidators validatorsContract = IValidators(validatorsAddress); | ||
address[] memory registeredValidators = validatorsContract.getRegisteredValidators(); | ||
NumberOfValidators = registeredValidators.length; | ||
} | ||
|
||
function getAddress() public pure returns (address) { | ||
return ADDRESS; | ||
} | ||
} |
57 changes: 57 additions & 0 deletions
57
packages/protocol/test-sol/precompiles/ValidatorSignerAddressFromCurrentSetPrecompile.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
// TODO move this to test folder | ||
pragma solidity >=0.8.7 <0.8.20; | ||
|
||
import "forge-std/console.sol"; | ||
import "@celo-contracts/common/interfaces/IRegistry.sol"; | ||
import "@celo-contracts/governance/interfaces/IValidators.sol"; | ||
|
||
contract ValidatorSignerAddressFromCurrentSetPrecompile { | ||
address constant ADDRESS = address(0xff - 5); | ||
|
||
uint256 public constant EPOCH_SIZE = 100; | ||
|
||
address[] validators; | ||
|
||
address internal constant registryAddress = 0x000000000000000000000000000000000000ce10; | ||
|
||
receive() external payable {} | ||
|
||
fallback(bytes calldata input) external payable returns (bytes memory) { | ||
uint256 index = getUint256FromBytes(input, 0); | ||
return abi.encodePacked(uint256(uint160(validators[index]))); | ||
} | ||
|
||
function getAddress() public pure returns (address) { | ||
return ADDRESS; | ||
} | ||
|
||
function getUint256FromBytes(bytes memory bs, uint256 start) internal pure returns (uint256) { | ||
return uint256(getBytes32FromBytes(bs, start)); | ||
} | ||
|
||
function setValidators() external{ | ||
IRegistry registry = IRegistry(registryAddress); | ||
address validatorsAddress = registry.getAddressForString("Validators"); | ||
IValidators validatorsContract = IValidators(validatorsAddress); | ||
address[] memory registeredValidators = validatorsContract.getRegisteredValidators(); | ||
for (uint256 i = 0; i < registeredValidators.length; i++) { | ||
validators.push(registeredValidators[i]); | ||
} | ||
} | ||
|
||
/** | ||
* @notice Converts bytes to bytes32. | ||
* @param bs byte[] data | ||
* @param start offset into byte data to convert | ||
* @return bytes32 data | ||
*/ | ||
function getBytes32FromBytes(bytes memory bs, uint256 start) internal pure returns (bytes32) { | ||
require(bs.length >= start + 32, "slicing out of range"); | ||
bytes32 x; | ||
assembly { | ||
x := mload(add(bs, add(start, 32))) | ||
} | ||
return x; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters