-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added Constants.sol to make new deployments easier
- Loading branch information
Showing
1 changed file
with
54 additions
and
0 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
// SPDX-License-Identifier: MIT | ||
/* | ||
* The EVM Interpreter was deployed at deterministic address using the `create2` method from the Universal Factory, | ||
* once solidity's version can change the `Intepreter.sol` creation code, the constants below are useful to deploy | ||
* the interpreter at a deterministic address in any network that also contains the Universal Factory Contract. | ||
* | ||
* The interpreter can be easily deployed as demonstrated below: | ||
* ```solidity | ||
* import {IUniversalFactory} from "universal-factory/src/interfaces/IUniversalFactory.sol"; | ||
* import {INTERPRETER_ADDRESS, INTERPRETER_CREATE2_SALT, INTERPRETER_CREATION_CODE} from "evm-interpreter/src/utils/Constants.sol"; | ||
* | ||
* IUniversalFactory factory = IUniversalFactory(0x0000000000001C4Bf962dF86e38F0c10c7972C6E); | ||
* address interpreter = factory.create2(INTERPRETER_CREATE2_SALT, INTERPRETER_CREATION_CODE); | ||
* require(interpreter == INTERPRETER_ADDRESS); | ||
* ``` | ||
* | ||
* For more information on how to use the Universal Factory, see: | ||
* - https://github.com/Analog-Labs/universal-factory | ||
*/ | ||
pragma solidity >=0.7.0 <0.9.0; | ||
|
||
/** | ||
* @dev The address of UniversalFactory, which deployed this contract using the `create2` method. | ||
*/ | ||
address constant INTERPRETER_CREATE2_DEPLOYER = 0x0000000000001C4Bf962dF86e38F0c10c7972C6E; | ||
|
||
/** | ||
* @dev EIP-1014 CREATE2 salt used to deploy the interpreter. | ||
* reference: https://eips.ethereum.org/EIPS/eip-1014 | ||
*/ | ||
bytes32 constant INTERPRETER_CREATE2_SALT = 0xc8530e31f6ca0170eadd291ef7444560d457094dc3888d929e3cd76bcd4acf7f; | ||
|
||
/** | ||
* @dev The address of which the Interpreter was deployed, can be computed as: | ||
* `address(uint160(uint256(keccak256(abi.encodePacked(bytes1(0xff), INTERPRETER_CREATE2_DEPLOYER, INTERPRETER_CREATE2_SALT, INTERPRETER_INITCODE_HASH)))))`. | ||
*/ | ||
address constant INTERPRETER_ADDRESS = 0x0000000000001e3F4F615cd5e20c681Cf7d85e8D; | ||
|
||
/** | ||
* @dev The codehash of the Interpreter, must be the same regardless the address or solidity version. | ||
*/ | ||
bytes32 constant INTERPRETER_CODEHASH = 0xaa65624ae6c78a7f070d28f3aa36674e5c835a708ad1422a45530c18d83b725e; | ||
|
||
/** | ||
* @dev The hash of the initicode. | ||
* INTERPRETER_INITCODE_HASH == keccak256(INTERPRETER_CREATION_CODE); | ||
*/ | ||
bytes32 constant INTERPRETER_INITCODE_HASH = 0x9fbdeb778ae8c9daa6db3f5c8d55d2c4bbaba059382891af1cbac6562f88bbe5; | ||
|
||
/** | ||
* @dev This is the `type(Interpreter).creationCode` used to deploy the interpreter at the `INTERPRETER_ADDRESS`. | ||
* defined as a constant to allow it to be deployed at the same address using different solidity versions. | ||
*/ | ||
bytes constant INTERPRETER_CREATION_CODE = hex"6120c060405261200b60808181525f9161003860a03961200f810180516001600160601b03163060601b179052805190915060208201f3fe5b591561000e573610611fc057005b5f5f525f5b80355f1a6400000000051b565b710000000000000000000000000000000000010191019080355f1a60051b565b710000000000000000000000000000000000010191029080355f1a60051b565b700000000000000000000000000000000001019190039080355f1a60051b565b700000000000000000000000000000000001019190049080355f1a60051b565b700000000000000000000000000000000001019190049080355f1a60051b565b700000000000000000000000000000000001019190069080355f1a60051b565b700000000000000000000000000000000001019190079080355f1a60051b565b700000000000000000000000000000000001019291089080355f1a60051b565b700000000000000000000000000000000001019291099080355f1a60051b565b7000000000000000000000000000000000010191900a9080355f1a60051b565b7000000000000000000000000000000000010191900b9080355f1a60051b567e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000005b710000000000000000000000000000000000010191119080355f1a60051b565b710000000000000000000000000000000000010191109080355f1a60051b565b710000000000000000000000000000000000010191139080355f1a60051b565b710000000000000000000000000000000000010191129080355f1a60051b565b710000000000000000000000000000000000010191149080355f1a60051b565b710000000000000000000000000000000000010190159080355f1a60051b565b710000000000000000000000000000000000010191169080355f1a60051b565b710000000000000000000000000000000000010191179080355f1a60051b565b710000000000000000000000000000000000010191189080355f1a60051b565b710000000000000000000000000000000000010190199080355f1a60051b565b7000000000000000000000000000000000010191901a9080355f1a60051b565b7000000000000000000000000000000000010191901b9080355f1a60051b565b7000000000000000000000000000000000010191901c9080355f1a60051b565b7000000000000000000000000000000000010191901d9080355f1a60051b565bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005b700000000000000000000000000000000001019190209080355f1a60051b565bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005b720000000000000000000000000000000000000101309080355f1a60051b565b710000000000000000000000000000000000010190319080355f1a60051b565b720000000000000000000000000000000000000101329080355f1a60051b565b720000000000000000000000000000000000000101339080355f1a60051b565b720000000000000000000000000000000000000101349080355f1a60051b565b71000000000000000000000000000000000001015f915080355f1a60051b565b7200000000000000000000000000000000000001015f9080355f1a60051b565b6e0000000000000000000000000000010192915036903780355f1a60051b565b720000000000000000000000000000000000000101369080355f1a60051b565b700000000000000000000000000000000001019291903780355f1a60051b565b7200000000000000000000000000000000000001013a9080355f1a60051b565b7100000000000000000000000000000000000101903b9080355f1a60051b565b6f0000000000000000000000000000000101939291903c80355f1a60051b565b7200000000000000000000000000000000000001013d9080355f1a60051b565b700000000000000000000000000000000001019291903e80355f1a60051b565b7100000000000000000000000000000000000101903f9080355f1a60051b565b710000000000000000000000000000000000010190409080355f1a60051b565b720000000000000000000000000000000000000101419080355f1a60051b565b720000000000000000000000000000000000000101429080355f1a60051b565b720000000000000000000000000000000000000101439080355f1a60051b565b720000000000000000000000000000000000000101449080355f1a60051b565b720000000000000000000000000000000000000101459080355f1a60051b565b720000000000000000000000000000000000000101469080355f1a60051b565b720000000000000000000000000000000000000101479080355f1a60051b565b720000000000000000000000000000000000000101489080355f1a60051b565b710000000000000000000000000000000000010190499080355f1a60051b565b7200000000000000000000000000000000000001014a9080355f1a60051b565bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005bfe007b000000000000000000000000000000000000000000000000000000005b720000000000000000000000000000000000000101905080355f1a60051b565b710000000000000000000000000000000000010190519080355f1a60051b565b710000000000000000000000000000000000010191905280355f1a60051b565b710000000000000000000000000000000000010191905380355f1a60051b565b710000000000000000000000000000000000010190549080355f1a60051b565b710000000000000000000000000000000000010191905580355f1a60051b565b50806d000000000000000000000000000101903560f01c615b001860051b565b90916d0000000000000000000000000ac057905060010180355f1a60051b565b807300000000000000000000000000000000000000010180355f1a60051b565b720000000000000000000000000000000000000101599080355f1a60051b565b7200000000000000000000000000000000000001015a9080355f1a60051b565b740000000000000000000000000000000000000000010180355f1a60051b565b7100000000000000000000000000000000000101905c9080355f1a60051b565b710000000000000000000000000000000000010191905d80355f1a60051b565b700000000000000000000000000000000001019291905e80355f1a60051b565b7200000000000000000000000000000000000001015f9080355f1a60051b565b8035806d00000000000000000000000000011a916002019060021a60051b565b6a00000000000000000000010180358060f01c916002019060021a60051b565b6a00000000000000000000010180358060e81c916003019060031a60051b565b6a00000000000000000000010180358060e01c916004019060041a60051b565b6a00000000000000000000010180358060d81c916005019060051a60051b565b6a00000000000000000000010180358060d01c916006019060061a60051b565b6a00000000000000000000010180358060c81c916007019060071a60051b565b6a00000000000000000000010180358060c01c916008019060081a60051b565b6a00000000000000000000010180358060b81c916009019060091a60051b565b6a00000000000000000000010180358060b01c91600a0190600a1a60051b565b6a00000000000000000000010180358060a81c91600b0190600b1a60051b565b6a00000000000000000000010180358060a01c91600c0190600c1a60051b565b6a00000000000000000000010180358060981c91600d0190600d1a60051b565b6a00000000000000000000010180358060901c91600e0190600e1a60051b565b6a00000000000000000000010180358060881c91600f0190600f1a60051b565b6a00000000000000000000010180358060801c916010019060101a60051b565b6a00000000000000000000010180358060781c916011019060111a60051b565b6a00000000000000000000010180358060701c916012019060121a60051b565b6a00000000000000000000010180358060681c916013019060131a60051b565b6a00000000000000000000010180358060601c916014019060141a60051b565b6a00000000000000000000010180358060581c916015019060151a60051b565b6a00000000000000000000010180358060501c916016019060161a60051b565b6a00000000000000000000010180358060481c916017019060171a60051b565b6a00000000000000000000010180358060401c916018019060181a60051b565b6a00000000000000000000010180358060381c916019019060191a60051b565b6a00000000000000000000010180358060301c91601a0190601a1a60051b565b6a00000000000000000000010180358060281c91601b0190601b1a60051b565b6a00000000000000000000010180358060201c91601c0190601c1a60051b565b6a00000000000000000000010180358060181c91601d0190601d1a60051b565b6a00000000000000000000010180358060101c91601e0190601e1a60051b565b6a00000000000000000000010180358060081c91601f0190601f1a60051b565b6e0000000000000000000000000000010180359060200180355f1a60051b565b720000000000000000000000000000000000000101819080355f1a60051b565b720000000000000000000000000000000000000101829080355f1a60051b565b720000000000000000000000000000000000000101839080355f1a60051b565b720000000000000000000000000000000000000101849080355f1a60051b565b720000000000000000000000000000000000000101859080355f1a60051b565b720000000000000000000000000000000000000101869080355f1a60051b565b720000000000000000000000000000000000000101879080355f1a60051b565b720000000000000000000000000000000000000101889080355f1a60051b565b720000000000000000000000000000000000000101899080355f1a60051b565b7200000000000000000000000000000000000001018a9080355f1a60051b565b7200000000000000000000000000000000000001018b9080355f1a60051b565b7200000000000000000000000000000000000001018c9080355f1a60051b565b7200000000000000000000000000000000000001018d9080355f1a60051b565b7200000000000000000000000000000000000001018e9080355f1a60051b565b7200000000000000000000000000000000000001018f9080355f1a60051b565b60010160208059035115025903528f602059038051905f90526300000013565b710000000000000000000000000000000000010190919080355f1a60051b565b710000000000000000000000000000000000010190929080355f1a60051b565b710000000000000000000000000000000000010190939080355f1a60051b565b710000000000000000000000000000000000010190949080355f1a60051b565b710000000000000000000000000000000000010190959080355f1a60051b565b710000000000000000000000000000000000010190969080355f1a60051b565b710000000000000000000000000000000000010190979080355f1a60051b565b710000000000000000000000000000000000010190989080355f1a60051b565b710000000000000000000000000000000000010190999080355f1a60051b565b7100000000000000000000000000000000000101909a9080355f1a60051b565b7100000000000000000000000000000000000101909b9080355f1a60051b565b7100000000000000000000000000000000000101909c9080355f1a60051b565b7100000000000000000000000000000000000101909d9080355f1a60051b565b7100000000000000000000000000000000000101909e9080355f1a60051b565b7100000000000000000000000000000000000101909f9080355f1a60051b565b60010160208059035115025903529f602059038051905f90526300000013565b71000000000000000000000000000000000001019190a080355f1a60051b565b70000000000000000000000000000000000101929190a180355f1a60051b565b6f000000000000000000000000000000010193929190a280355f1a60051b565b6e000000000000000000000000000001019493929190a380355f1a60051b565b6d000000000000000000000000000101959493929190a480355f1a60051b567e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000005b6f0000000000000000000000000000000101929190f09080355f1a60051b565b6b0000000000000000000000010196959493929190f19080355f1a60051b565b6b0000000000000000000000010196959493929190f29080355f1a60051b565b50f37a000000000000000000000000000000000000000000000000000000fe5b611e88611fec565b64000000000101959493929190f49080355f1a60051b565b6e0000000000000000000000000000010193929190f59080355f1a60051b567e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000005b6c0000000000000000000000000101959493929190fa9080355f1a60051b567e000000000000000000000000000000000000000000000000000000000000007e000000000000000000000000000000000000000000000000000000000000005b50fd7a000000000000000000000000000000000000000000000000000000fe5bfe7c00000000000000000000000000000000000000000000000000000000005b611fe8611fec565b50ff005b307300000000000000000000000000000000000000001461200957565bfe"; |