From c4eaf04b3496213d9b024c9336bc8cc1c04dfa07 Mon Sep 17 00:00:00 2001 From: Vladislav Volosnikov Date: Wed, 9 Oct 2024 16:46:59 +0300 Subject: [PATCH] Rename interpreter to emulator --- .../dev-contracts/test/CustomUpgradeTest.sol | 2 +- .../test/ExecutorProvingTest.sol | 6 +-- .../StateTransitionManager.sol | 2 +- .../chain-deps/DiamondInit.sol | 2 +- .../chain-deps/ZkSyncHyperchainStorage.sol | 4 +- .../chain-deps/facets/Executor.sol | 4 +- .../chain-deps/facets/Getters.sol | 4 +- .../chain-interfaces/IDiamondInit.sol | 6 ++- .../chain-interfaces/IGetters.sol | 4 +- .../contracts/upgrades/BaseZkSyncUpgrade.sol | 30 ++++++----- l1-contracts/deploy-scripts/DeployL1.s.sol | 4 +- .../scripts/upgrade-consistency-checker.ts | 8 +-- l1-contracts/scripts/utils.ts | 4 +- l1-contracts/src.ts/deploy-process.ts | 2 +- l1-contracts/src.ts/deploy-test-process.ts | 8 +-- l1-contracts/src.ts/deploy.ts | 14 ++--- l1-contracts/src.ts/diamondCut.ts | 2 +- l1-contracts/src.ts/utils.ts | 14 ++--- .../concrete/DiamondCut/UpgradeLogic.t.sol | 2 +- .../concrete/Executor/ExecutorProof.t.sol | 2 +- .../concrete/Executor/_Executor_Shared.t.sol | 4 +- .../foundry/unit/concrete/Utils/Utils.sol | 10 ++-- .../unit/concrete/Utils/UtilsFacet.sol | 8 +-- .../chain-deps/DiamondInit/Initialize.t.sol | 2 +- .../facets/Admin/ExecuteUpgrade.t.sol | 2 +- .../facets/Getters/_Getters_Shared.t.sol | 4 +- .../test/unit_tests/executor_proof.spec.ts | 4 +- .../test/unit_tests/l2-upgrade.test.spec.ts | 12 ++--- .../test/unit_tests/proxy_test.spec.ts | 2 +- system-contracts/SystemContractsHashes.json | 6 +-- .../{EvmInterpreter.yul => EvmEmulator.yul} | 4 +- .../EvmEmulator.template.yul} | 12 ++--- .../EvmEmulatorFunctions.template.yul} | 0 .../EvmEmulatorLoop.template.yul} | 0 system-contracts/package.json | 2 +- system-contracts/scripts/deploy-preimages.ts | 54 +++++++++---------- .../scripts/preprocess-emulator.ts | 22 ++++++++ .../scripts/preprocess-interpreter.ts | 22 -------- 38 files changed, 149 insertions(+), 145 deletions(-) rename system-contracts/contracts/{EvmInterpreter.yul => EvmEmulator.yul} (99%) rename system-contracts/{evm-interpreter/EvmInterpreter.template.yul => evm-emulator/EvmEmulator.template.yul} (94%) rename system-contracts/{evm-interpreter/EvmInterpreterFunctions.template.yul => evm-emulator/EvmEmulatorFunctions.template.yul} (100%) rename system-contracts/{evm-interpreter/EvmInterpreterLoop.template.yul => evm-emulator/EvmEmulatorLoop.template.yul} (100%) create mode 100644 system-contracts/scripts/preprocess-emulator.ts delete mode 100644 system-contracts/scripts/preprocess-interpreter.ts diff --git a/l1-contracts/contracts/dev-contracts/test/CustomUpgradeTest.sol b/l1-contracts/contracts/dev-contracts/test/CustomUpgradeTest.sol index c1c3d2f4c..875e81715 100644 --- a/l1-contracts/contracts/dev-contracts/test/CustomUpgradeTest.sol +++ b/l1-contracts/contracts/dev-contracts/test/CustomUpgradeTest.sol @@ -34,7 +34,7 @@ contract CustomUpgradeTest is BaseZkSyncUpgrade { _setBaseSystemContracts( _proposedUpgrade.bootloaderHash, _proposedUpgrade.defaultAccountHash, - _proposedUpgrade.evmSimulatorHash, + _proposedUpgrade.evmEmulatorHash, isPatchOnly ); diff --git a/l1-contracts/contracts/dev-contracts/test/ExecutorProvingTest.sol b/l1-contracts/contracts/dev-contracts/test/ExecutorProvingTest.sol index 1ff8fc2b6..5970e6be4 100644 --- a/l1-contracts/contracts/dev-contracts/test/ExecutorProvingTest.sol +++ b/l1-contracts/contracts/dev-contracts/test/ExecutorProvingTest.sol @@ -32,15 +32,15 @@ contract ExecutorProvingTest is ExecutorFacet { return _processL2Logs(_newBatch, _expectedSystemContractUpgradeTxHash); } - /// Sets the DefaultAccount Hash and Bootloader Hash. + /// Sets the DefaultAccount Hash, Bootloader Hash and EVM emulator Hash. function setHashes( bytes32 l2DefaultAccountBytecodeHash, bytes32 l2BootloaderBytecodeHash, - bytes32 l2EvmSimulatorBytecode + bytes32 l2EvmEmulatorBytecode ) external { s.l2DefaultAccountBytecodeHash = l2DefaultAccountBytecodeHash; s.l2BootloaderBytecodeHash = l2BootloaderBytecodeHash; - s.l2EvmSimulatorBytecodeHash = l2EvmSimulatorBytecode; + s.l2EvmEmulatorBytecodeHash = l2EvmEmulatorBytecode; s.zkPorterIsAvailable = false; } } diff --git a/l1-contracts/contracts/state-transition/StateTransitionManager.sol b/l1-contracts/contracts/state-transition/StateTransitionManager.sol index cbb8706d6..a14298f2a 100644 --- a/l1-contracts/contracts/state-transition/StateTransitionManager.sol +++ b/l1-contracts/contracts/state-transition/StateTransitionManager.sol @@ -356,7 +356,7 @@ contract StateTransitionManager is IStateTransitionManager, ReentrancyGuard, Own factoryDeps: bytesEmptyArray, bootloaderHash: bytes32(0), defaultAccountHash: bytes32(0), - evmSimulatorHash: bytes32(0), + evmEmulatorHash: bytes32(0), verifier: address(0), verifierParams: VerifierParams({ recursionNodeLevelVkHash: bytes32(0), diff --git a/l1-contracts/contracts/state-transition/chain-deps/DiamondInit.sol b/l1-contracts/contracts/state-transition/chain-deps/DiamondInit.sol index 531e3698a..48eabd4e1 100644 --- a/l1-contracts/contracts/state-transition/chain-deps/DiamondInit.sol +++ b/l1-contracts/contracts/state-transition/chain-deps/DiamondInit.sol @@ -62,7 +62,7 @@ contract DiamondInit is ZkSyncHyperchainBase, IDiamondInit { s.__DEPRECATED_verifierParams = _initializeData.verifierParams; s.l2BootloaderBytecodeHash = _initializeData.l2BootloaderBytecodeHash; s.l2DefaultAccountBytecodeHash = _initializeData.l2DefaultAccountBytecodeHash; - s.l2EvmSimulatorBytecodeHash = _initializeData.l2EvmSimulatorBytecodeHash; + s.l2EvmEmulatorBytecodeHash = _initializeData.l2EvmEmulatorBytecodeHash; s.priorityTxMaxGasLimit = _initializeData.priorityTxMaxGasLimit; s.feeParams = _initializeData.feeParams; s.blobVersionedHashRetriever = _initializeData.blobVersionedHashRetriever; diff --git a/l1-contracts/contracts/state-transition/chain-deps/ZkSyncHyperchainStorage.sol b/l1-contracts/contracts/state-transition/chain-deps/ZkSyncHyperchainStorage.sol index b490d2f62..952472e54 100644 --- a/l1-contracts/contracts/state-transition/chain-deps/ZkSyncHyperchainStorage.sol +++ b/l1-contracts/contracts/state-transition/chain-deps/ZkSyncHyperchainStorage.sol @@ -98,9 +98,9 @@ struct ZkSyncHyperchainStorage { /// @notice Bytecode hash of default account (bytecode for EOA). /// @dev Used as an input to zkp-circuit. bytes32 l2DefaultAccountBytecodeHash; - /// @notice Bytecode hash of evm simulator. + /// @notice Bytecode hash of evm emulator. /// @dev Used as an input to zkp-circuit. - bytes32 l2EvmSimulatorBytecodeHash; + bytes32 l2EvmEmulatorBytecodeHash; /// @dev Indicates that the porter may be touched on L2 transactions. /// @dev Used as an input to zkp-circuit. bool zkPorterIsAvailable; diff --git a/l1-contracts/contracts/state-transition/chain-deps/facets/Executor.sol b/l1-contracts/contracts/state-transition/chain-deps/facets/Executor.sol index c157a575d..bcef798f4 100644 --- a/l1-contracts/contracts/state-transition/chain-deps/facets/Executor.sol +++ b/l1-contracts/contracts/state-transition/chain-deps/facets/Executor.sol @@ -600,13 +600,13 @@ contract ExecutorFacet is ZkSyncHyperchainBase, IExecutor { function _batchMetaParameters() internal view returns (bytes memory) { bytes32 l2DefaultAccountBytecodeHash = s.l2DefaultAccountBytecodeHash; - bytes32 l2EvmSimulatorBytecodeHash = s.l2EvmSimulatorBytecodeHash; + bytes32 l2EvmEmulatorBytecodeHash = s.l2EvmEmulatorBytecodeHash; return abi.encodePacked( s.zkPorterIsAvailable, s.l2BootloaderBytecodeHash, l2DefaultAccountBytecodeHash, - l2EvmSimulatorBytecodeHash + l2EvmEmulatorBytecodeHash ); } diff --git a/l1-contracts/contracts/state-transition/chain-deps/facets/Getters.sol b/l1-contracts/contracts/state-transition/chain-deps/facets/Getters.sol index 5ea7a92fa..5e7350edd 100644 --- a/l1-contracts/contracts/state-transition/chain-deps/facets/Getters.sol +++ b/l1-contracts/contracts/state-transition/chain-deps/facets/Getters.sol @@ -143,8 +143,8 @@ contract GettersFacet is ZkSyncHyperchainBase, IGetters, ILegacyGetters { } /// @inheritdoc IGetters - function getL2EvmSimulatorBytecodeHash() external view returns (bytes32) { - return s.l2EvmSimulatorBytecodeHash; + function getL2EvmEmulatorBytecodeHash() external view returns (bytes32) { + return s.l2EvmEmulatorBytecodeHash; } /// @inheritdoc IGetters diff --git a/l1-contracts/contracts/state-transition/chain-interfaces/IDiamondInit.sol b/l1-contracts/contracts/state-transition/chain-interfaces/IDiamondInit.sol index ebc8686c6..893ff7b7b 100644 --- a/l1-contracts/contracts/state-transition/chain-interfaces/IDiamondInit.sol +++ b/l1-contracts/contracts/state-transition/chain-interfaces/IDiamondInit.sol @@ -18,6 +18,7 @@ import {FeeParams} from "../chain-deps/ZkSyncHyperchainStorage.sol"; /// @param verifierParams Verifier config parameters that describes the circuit to be verified /// @param l2BootloaderBytecodeHash The hash of bootloader L2 bytecode /// @param l2DefaultAccountBytecodeHash The hash of default account L2 bytecode +/// @param l2EvmEmulatorBytecodeHash The hash of EVM emulator L2 bytecode /// @param priorityTxMaxGasLimit maximum number of the L2 gas that a user can request for L1 -> L2 transactions /// @param feeParams Fee parameters to be used for L1->L2 transactions /// @param blobVersionedHashRetriever Address of contract used to pull the blob versioned hash for a transaction. @@ -36,7 +37,7 @@ struct InitializeData { VerifierParams verifierParams; bytes32 l2BootloaderBytecodeHash; bytes32 l2DefaultAccountBytecodeHash; - bytes32 l2EvmSimulatorBytecodeHash; + bytes32 l2EvmEmulatorBytecodeHash; uint256 priorityTxMaxGasLimit; FeeParams feeParams; address blobVersionedHashRetriever; @@ -46,6 +47,7 @@ struct InitializeData { /// @param verifierParams Verifier config parameters that describes the circuit to be verified /// @param l2BootloaderBytecodeHash The hash of bootloader L2 bytecode /// @param l2DefaultAccountBytecodeHash The hash of default account L2 bytecode +/// @param l2EvmEmulatorBytecodeHash The hash of EVM emulator L2 bytecode /// @param priorityTxMaxGasLimit maximum number of the L2 gas that a user can request for L1 -> L2 transactions /// @param feeParams Fee parameters to be used for L1->L2 transactions /// @param blobVersionedHashRetriever Address of contract used to pull the blob versioned hash for a transaction. @@ -54,7 +56,7 @@ struct InitializeDataNewChain { VerifierParams verifierParams; bytes32 l2BootloaderBytecodeHash; bytes32 l2DefaultAccountBytecodeHash; - bytes32 l2EvmSimulatorBytecodeHash; + bytes32 l2EvmEmulatorBytecodeHash; uint256 priorityTxMaxGasLimit; FeeParams feeParams; address blobVersionedHashRetriever; diff --git a/l1-contracts/contracts/state-transition/chain-interfaces/IGetters.sol b/l1-contracts/contracts/state-transition/chain-interfaces/IGetters.sol index dbcac8b57..d2e692978 100644 --- a/l1-contracts/contracts/state-transition/chain-interfaces/IGetters.sol +++ b/l1-contracts/contracts/state-transition/chain-interfaces/IGetters.sol @@ -81,8 +81,8 @@ interface IGetters is IZkSyncHyperchainBase { /// @return Bytecode hash of default account (bytecode for EOA). function getL2DefaultAccountBytecodeHash() external view returns (bytes32); - /// @return Bytecode hash of EVM simulator. - function getL2EvmSimulatorBytecodeHash() external view returns (bytes32); + /// @return Bytecode hash of EVM emulator. + function getL2EvmEmulatorBytecodeHash() external view returns (bytes32); /// @return Verifier parameters. /// @dev This function is deprecated and will soon be removed. diff --git a/l1-contracts/contracts/upgrades/BaseZkSyncUpgrade.sol b/l1-contracts/contracts/upgrades/BaseZkSyncUpgrade.sol index b4c941989..c7f2453e3 100644 --- a/l1-contracts/contracts/upgrades/BaseZkSyncUpgrade.sol +++ b/l1-contracts/contracts/upgrades/BaseZkSyncUpgrade.sol @@ -35,7 +35,7 @@ struct ProposedUpgrade { bytes[] factoryDeps; bytes32 bootloaderHash; bytes32 defaultAccountHash; - bytes32 evmSimulatorHash; + bytes32 evmEmulatorHash; address verifier; VerifierParams verifierParams; bytes l1ContractsUpgradeCalldata; @@ -57,7 +57,8 @@ abstract contract BaseZkSyncUpgrade is ZkSyncHyperchainBase { /// @notice Сhanges to the bytecode that is used in L2 as a default account event NewL2DefaultAccountBytecodeHash(bytes32 indexed previousBytecodeHash, bytes32 indexed newBytecodeHash); - event NewL2EvmSimulatorBytecodeHash(bytes32 indexed previousBytecodeHash, bytes32 indexed newBytecodeHash); + /// @notice Сhanges to the bytecode that is used in L2 as an EVM emulator + event NewL2EvmEmulatorBytecodeHash(bytes32 indexed previousBytecodeHash, bytes32 indexed newBytecodeHash); /// @notice Verifier address changed event NewVerifier(address indexed oldVerifier, address indexed newVerifier); @@ -87,7 +88,7 @@ abstract contract BaseZkSyncUpgrade is ZkSyncHyperchainBase { _setBaseSystemContracts( _proposedUpgrade.bootloaderHash, _proposedUpgrade.defaultAccountHash, - _proposedUpgrade.evmSimulatorHash, + _proposedUpgrade.evmEmulatorHash, isPatchOnly ); @@ -125,24 +126,24 @@ abstract contract BaseZkSyncUpgrade is ZkSyncHyperchainBase { emit NewL2DefaultAccountBytecodeHash(previousDefaultAccountBytecodeHash, _l2DefaultAccountBytecodeHash); } - /// @notice Change default account bytecode hash, that is used on L2 - /// @param _l2EvmSimulatorBytecodeHash The hash of default account L2 bytecode + /// @notice Change EVM emulator bytecode hash, that is used on L2 + /// @param _l2EvmEmulatorBytecodeHash The hash of EVM emulator L2 bytecode /// @param _patchOnly Whether only the patch part of the protocol version semver has changed - function _setL2EvmSimulatorBytecodeHash(bytes32 _l2EvmSimulatorBytecodeHash, bool _patchOnly) private { - if (_l2EvmSimulatorBytecodeHash == bytes32(0)) { + function _setL2EvmEmulatorBytecodeHash(bytes32 _l2EvmEmulatorBytecodeHash, bool _patchOnly) private { + if (_l2EvmEmulatorBytecodeHash == bytes32(0)) { return; } - require(!_patchOnly, "Patch only upgrade can not set new default account"); + require(!_patchOnly, "Patch only upgrade can not set new EVM emulator"); - L2ContractHelper.validateBytecodeHash(_l2EvmSimulatorBytecodeHash); + L2ContractHelper.validateBytecodeHash(_l2EvmEmulatorBytecodeHash); // Save previous value into the stack to put it into the event later - bytes32 previousL2EvmSimulatorBytecodeHash = s.l2EvmSimulatorBytecodeHash; + bytes32 previousL2EvmEmulatorBytecodeHash = s.l2EvmEmulatorBytecodeHash; // Change the default account bytecode hash - s.l2EvmSimulatorBytecodeHash = _l2EvmSimulatorBytecodeHash; - emit NewL2EvmSimulatorBytecodeHash(previousL2EvmSimulatorBytecodeHash, _l2EvmSimulatorBytecodeHash); + s.l2EvmEmulatorBytecodeHash = _l2EvmEmulatorBytecodeHash; + emit NewL2EvmEmulatorBytecodeHash(previousL2EvmEmulatorBytecodeHash, _l2EvmEmulatorBytecodeHash); } /// @notice Change bootloader bytecode hash, that is used on L2 @@ -214,16 +215,17 @@ abstract contract BaseZkSyncUpgrade is ZkSyncHyperchainBase { /// @notice Updates the bootloader hash and the hash of the default account /// @param _bootloaderHash The hash of the new bootloader bytecode. If zero, it will not be updated. /// @param _defaultAccountHash The hash of the new default account bytecode. If zero, it will not be updated. + /// @param _evmEmulatorHash The hash of the new EVM emulator bytecode. If zero, it will not be updated. /// @param _patchOnly Whether only the patch part of the protocol version semver has changed. function _setBaseSystemContracts( bytes32 _bootloaderHash, bytes32 _defaultAccountHash, - bytes32 _evmSimulatorHash, + bytes32 _evmEmulatorHash, bool _patchOnly ) internal { _setL2BootloaderBytecodeHash(_bootloaderHash, _patchOnly); _setL2DefaultAccountBytecodeHash(_defaultAccountHash, _patchOnly); - _setL2EvmSimulatorBytecodeHash(_evmSimulatorHash, _patchOnly); + _setL2EvmEmulatorBytecodeHash(_evmEmulatorHash, _patchOnly); } /// @notice Sets the hash of the L2 system contract upgrade transaction for the next batch to be committed diff --git a/l1-contracts/deploy-scripts/DeployL1.s.sol b/l1-contracts/deploy-scripts/DeployL1.s.sol index 167abf40d..bca9c53ef 100644 --- a/l1-contracts/deploy-scripts/DeployL1.s.sol +++ b/l1-contracts/deploy-scripts/DeployL1.s.sol @@ -120,7 +120,7 @@ contract DeployL1Script is Script { bytes diamondCutData; bytes32 bootloaderHash; bytes32 defaultAAHash; - bytes32 evmSimulatorHash; + bytes32 evmEmulatorHash; } struct TokensConfig { @@ -443,7 +443,7 @@ contract DeployL1Script is Script { verifierParams: verifierParams, l2BootloaderBytecodeHash: config.contracts.bootloaderHash, l2DefaultAccountBytecodeHash: config.contracts.defaultAAHash, - l2EvmSimulatorBytecodeHash: config.contracts.evmSimulatorHash, + l2EvmEmulatorBytecodeHash: config.contracts.evmEmulatorHash, priorityTxMaxGasLimit: config.contracts.priorityTxMaxGasLimit, feeParams: feeParams, blobVersionedHashRetriever: addresses.blobVersionedHashRetriever diff --git a/l1-contracts/scripts/upgrade-consistency-checker.ts b/l1-contracts/scripts/upgrade-consistency-checker.ts index 49f444da4..96d19d43d 100644 --- a/l1-contracts/scripts/upgrade-consistency-checker.ts +++ b/l1-contracts/scripts/upgrade-consistency-checker.ts @@ -68,7 +68,7 @@ const expectedRecursionLeafLevelVkHash = "0xf9664f4324c1400fa5c3822d667f30e873f5 const expectedRecursionCircuitsSetVksHash = "0x0000000000000000000000000000000000000000000000000000000000000000"; const expectedBootloaderHash = "0x010008e7894d0dd14681c76bdb4d5e4e7f6b51bfe40c957d50eed3fec829fdb0"; const expectedDefaultAccountHash = "0x0100058deb36e1f2eeb48bf3846d0e8eb38e9176754b73116bb41a472459a4dd"; -const expectedEvmSimulatorHash = "0x01000f197081a9906cc411d0698c4961aeb5c74877f37f7071681da6e8ef3f31"; +const expectedEvmEmulatorHash = "0x01000f197081a9906cc411d0698c4961aeb5c74877f37f7071681da6e8ef3f31"; const validatorOne = process.env.ETH_SENDER_SENDER_OPERATOR_COMMIT_ETH_ADDR!; const validatorTwo = process.env.ETH_SENDER_SENDER_OPERATOR_BLOBS_ETH_ADDR!; @@ -222,7 +222,7 @@ async function extractProxyInitializationData(contract: ethers.Contract, data: s recursionCircuitsSetVksHash, l2BootloaderBytecodeHash, l2DefaultAccountBytecodeHash, - l2EvmSimulatorBytecodeHash, + l2EvmEmulatorBytecodeHash, // priorityTxMaxGasLimit, // // We unpack fee params @@ -279,8 +279,8 @@ async function extractProxyInitializationData(contract: ethers.Contract, data: s throw new Error("L2 default account bytecode hash is not correct"); } - if (l2EvmSimulatorBytecodeHash.toLowerCase() !== expectedEvmSimulatorHash.toLowerCase()) { - throw new Error("L2 default account bytecode hash is not correct"); + if (l2EvmEmulatorBytecodeHash.toLowerCase() !== expectedEvmEmulatorHash.toLowerCase()) { + throw new Error("L2 EVM emulator bytecode hash is not correct"); } console.log("STM init data correct!"); diff --git a/l1-contracts/scripts/utils.ts b/l1-contracts/scripts/utils.ts index e60434a8f..7903f708c 100644 --- a/l1-contracts/scripts/utils.ts +++ b/l1-contracts/scripts/utils.ts @@ -70,9 +70,9 @@ export function readSystemContractsBytecode(fileName: string) { return JSON.parse(artifact.toString()).bytecode; } -export function readEvmSimulatorbytecode() { +export function readEvmEmulatorbytecode() { const systemContractsPath = path.join(process.env.ZKSYNC_HOME as string, "contracts/system-contracts"); - return fs.readFileSync(`${systemContractsPath}/contracts-preprocessed/artifacts/EvmInterpreter.yul.zbin`); + return fs.readFileSync(`${systemContractsPath}/contracts-preprocessed/artifacts/EvmEmulator.yul.zbin`); } // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/l1-contracts/src.ts/deploy-process.ts b/l1-contracts/src.ts/deploy-process.ts index 42ab1329f..e9622bfbe 100644 --- a/l1-contracts/src.ts/deploy-process.ts +++ b/l1-contracts/src.ts/deploy-process.ts @@ -16,7 +16,7 @@ import { ADDRESS_ONE } from "../src.ts/utils"; export const L2_BOOTLOADER_BYTECODE_HASH = "0x1000100000000000000000000000000000000000000000000000000000000000"; export const L2_DEFAULT_ACCOUNT_BYTECODE_HASH = "0x1001000000000000000000000000000000000000000000000000000000000000"; -export const L2_EVM_SIMULATOR_BYTECODE_HASH = "0x1010000000000000000000000000000000000000000000000000000000000000"; +export const L2_EVM_EMULATOR_BYTECODE_HASH = "0x1010000000000000000000000000000000000000000000000000000000000000"; export async function initialBridgehubDeployment( deployer: Deployer, diff --git a/l1-contracts/src.ts/deploy-test-process.ts b/l1-contracts/src.ts/deploy-test-process.ts index 09965b3d8..db37fc5e1 100644 --- a/l1-contracts/src.ts/deploy-test-process.ts +++ b/l1-contracts/src.ts/deploy-test-process.ts @@ -15,7 +15,7 @@ import { Deployer } from "./deploy"; import { L2_BOOTLOADER_BYTECODE_HASH, L2_DEFAULT_ACCOUNT_BYTECODE_HASH, - L2_EVM_SIMULATOR_BYTECODE_HASH, + L2_EVM_EMULATOR_BYTECODE_HASH, initialBridgehubDeployment, registerHyperchain, } from "./deploy-process"; @@ -66,7 +66,7 @@ export async function defaultDeployerForTests(deployWallet: Wallet, ownerAddress addresses: addressConfig, bootloaderBytecodeHash: L2_BOOTLOADER_BYTECODE_HASH, defaultAccountBytecodeHash: L2_DEFAULT_ACCOUNT_BYTECODE_HASH, - evmSimulatorBytecodeHash: L2_EVM_SIMULATOR_BYTECODE_HASH, + evmEmulatorBytecodeHash: L2_EVM_EMULATOR_BYTECODE_HASH, }); } @@ -78,7 +78,7 @@ export async function defaultEraDeployerForTests(deployWallet: Wallet, ownerAddr addresses: addressConfig, bootloaderBytecodeHash: L2_BOOTLOADER_BYTECODE_HASH, defaultAccountBytecodeHash: L2_DEFAULT_ACCOUNT_BYTECODE_HASH, - evmSimulatorBytecodeHash: L2_EVM_SIMULATOR_BYTECODE_HASH, + evmEmulatorBytecodeHash: L2_EVM_EMULATOR_BYTECODE_HASH, }); const l2_rpc_addr = "http://localhost:3050"; const web3Provider = new zkethers.Provider(l2_rpc_addr); @@ -318,7 +318,7 @@ export class EraDeployer extends Deployer { verifierParams, l2BootloaderBytecodeHash: L2_BOOTLOADER_BYTECODE_HASH, l2DefaultAccountBytecodeHash: L2_DEFAULT_ACCOUNT_BYTECODE_HASH, - l2EvmSimulatorBytecodeHash: L2_EVM_SIMULATOR_BYTECODE_HASH, + l2EvmEmulatorBytecodeHash: L2_EVM_EMULATOR_BYTECODE_HASH, priorityTxMaxGasLimit, feeParams, blobVersionedHashRetriever: this.addresses.BlobVersionedHashRetriever, diff --git a/l1-contracts/src.ts/deploy.ts b/l1-contracts/src.ts/deploy.ts index 889a699a9..0075b676c 100644 --- a/l1-contracts/src.ts/deploy.ts +++ b/l1-contracts/src.ts/deploy.ts @@ -10,7 +10,7 @@ import { packSemver, readBatchBootloaderBytecode, readSystemContractsBytecode, - readEvmSimulatorbytecode, + readEvmEmulatorbytecode, unpackStringSemVer, } from "../scripts/utils"; import { getTokens } from "./deploy-token"; @@ -44,7 +44,7 @@ import type { Contract, Overrides } from "@ethersproject/contracts"; let L2_BOOTLOADER_BYTECODE_HASH: string; let L2_DEFAULT_ACCOUNT_BYTECODE_HASH: string; -let L2_EVM_SIMULATOR_BYTECODE_HASH: string; +let L2_EVM_EMULATOR_BYTECODE_HASH: string; export interface DeployerConfig { deployWallet: Wallet; @@ -53,7 +53,7 @@ export interface DeployerConfig { verbose?: boolean; bootloaderBytecodeHash?: string; defaultAccountBytecodeHash?: string; - evmSimulatorBytecodeHash?: string; + evmEmulatorBytecodeHash?: string; } export interface Operation { @@ -81,9 +81,9 @@ export class Deployer { L2_DEFAULT_ACCOUNT_BYTECODE_HASH = config.defaultAccountBytecodeHash ? config.defaultAccountBytecodeHash : hexlify(hashL2Bytecode(readSystemContractsBytecode("DefaultAccount"))); - L2_EVM_SIMULATOR_BYTECODE_HASH = config.evmSimulatorBytecodeHash - ? config.evmSimulatorBytecodeHash - : hexlify(hashL2Bytecode(readEvmSimulatorbytecode())); + L2_EVM_EMULATOR_BYTECODE_HASH = config.evmEmulatorBytecodeHash + ? config.evmEmulatorBytecodeHash + : hexlify(hashL2Bytecode(readEvmEmulatorbytecode())); this.ownerAddress = config.ownerAddress != null ? config.ownerAddress : this.deployWallet.address; this.chainId = parseInt(process.env.CHAIN_ETH_ZKSYNC_NETWORK_ID!); } @@ -111,7 +111,7 @@ export class Deployer { verifierParams, L2_BOOTLOADER_BYTECODE_HASH, L2_DEFAULT_ACCOUNT_BYTECODE_HASH, - L2_EVM_SIMULATOR_BYTECODE_HASH, + L2_EVM_EMULATOR_BYTECODE_HASH, this.addresses.StateTransition.Verifier, this.addresses.BlobVersionedHashRetriever, +priorityTxMaxGasLimit, diff --git a/l1-contracts/src.ts/diamondCut.ts b/l1-contracts/src.ts/diamondCut.ts index 99759fa46..0bc960fc0 100644 --- a/l1-contracts/src.ts/diamondCut.ts +++ b/l1-contracts/src.ts/diamondCut.ts @@ -35,7 +35,7 @@ export interface InitializeData { allowList: BigNumberish; l2BootloaderBytecodeHash: string; l2DefaultAccountBytecodeHash: string; - l2EvmSimulatorBytecodeHash: string; + l2EvmEmulatorBytecodeHash: string; priorityTxMaxGasLimit: BigNumberish; } diff --git a/l1-contracts/src.ts/utils.ts b/l1-contracts/src.ts/utils.ts index 5955f0497..41bca767b 100644 --- a/l1-contracts/src.ts/utils.ts +++ b/l1-contracts/src.ts/utils.ts @@ -136,7 +136,7 @@ export interface ProposedUpgrade { factoryDeps: BytesLike[]; bootloaderHash: BytesLike; defaultAccountHash: BytesLike; - evmSimulatorHash: BytesLike; + evmEmulatorHash: BytesLike; verifier: string; verifierParams: VerifierParams; l1ContractsUpgradeCalldata: BytesLike; @@ -188,7 +188,7 @@ function checkValidInitialCutHashParams( verifierParams: VerifierParams, l2BootloaderBytecodeHash: string, l2DefaultAccountBytecodeHash: string, - l2EvmSimulatorBytecodeHash: string, + l2EvmEmulatorBytecodeHash: string, verifier: string, blobVersionedHashRetriever: string, priorityTxMaxGasLimit: number @@ -217,8 +217,8 @@ function checkValidInitialCutHashParams( if (l2DefaultAccountBytecodeHash === ethers.constants.HashZero) { throw new Error("L2 default account bytecode hash is zero"); } - if (l2EvmSimulatorBytecodeHash === ethers.constants.HashZero) { - throw new Error("L2 evm simulator bytecode hash is zero"); + if (l2EvmEmulatorBytecodeHash === ethers.constants.HashZero) { + throw new Error("L2 evm emulator bytecode hash is zero"); } if (verifier === ethers.constants.AddressZero) { throw new Error("Verifier address is zero"); @@ -239,7 +239,7 @@ export function compileInitialCutHash( verifierParams: VerifierParams, l2BootloaderBytecodeHash: string, l2DefaultAccountBytecodeHash: string, - l2EvmSimulatorBytecodeHash: string, + l2EvmEmulatorBytecodeHash: string, verifier: string, blobVersionedHashRetriever: string, priorityTxMaxGasLimit: number, @@ -252,7 +252,7 @@ export function compileInitialCutHash( verifierParams, l2BootloaderBytecodeHash, l2DefaultAccountBytecodeHash, - l2EvmSimulatorBytecodeHash, + l2EvmEmulatorBytecodeHash, verifier, blobVersionedHashRetriever, priorityTxMaxGasLimit @@ -286,7 +286,7 @@ export function compileInitialCutHash( verifierParams, l2BootloaderBytecodeHash, l2DefaultAccountBytecodeHash, - l2EvmSimulatorBytecodeHash, + l2EvmEmulatorBytecodeHash, priorityTxMaxGasLimit, feeParams, blobVersionedHashRetriever, diff --git a/l1-contracts/test/foundry/unit/concrete/DiamondCut/UpgradeLogic.t.sol b/l1-contracts/test/foundry/unit/concrete/DiamondCut/UpgradeLogic.t.sol index 1ee6bcebd..5025af8a5 100644 --- a/l1-contracts/test/foundry/unit/concrete/DiamondCut/UpgradeLogic.t.sol +++ b/l1-contracts/test/foundry/unit/concrete/DiamondCut/UpgradeLogic.t.sol @@ -91,7 +91,7 @@ contract UpgradeLogicTest is DiamondCutTest { // zkPorterIsAvailable: false, l2BootloaderBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, l2DefaultAccountBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, - l2EvmSimulatorBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, + l2EvmEmulatorBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, priorityTxMaxGasLimit: 500000, // priority tx max L2 gas limit // initialProtocolVersion: 0, feeParams: FeeParams({ diff --git a/l1-contracts/test/foundry/unit/concrete/Executor/ExecutorProof.t.sol b/l1-contracts/test/foundry/unit/concrete/Executor/ExecutorProof.t.sol index 36cc60ac9..fcf039155 100644 --- a/l1-contracts/test/foundry/unit/concrete/Executor/ExecutorProof.t.sol +++ b/l1-contracts/test/foundry/unit/concrete/Executor/ExecutorProof.t.sol @@ -77,7 +77,7 @@ contract ExecutorProofTest is Test { utilsFacet.util_setL2DefaultAccountBytecodeHash( 0x0100058d1abd41a9984b37939862f99c18237dc6951c3d5a3d81593c798a8f81 ); - utilsFacet.util_setL2EvmSimulatorBytecodeHash( + utilsFacet.util_setL2EvmEmulatorBytecodeHash( 0x01000f196acd122635a752fcb275be0cc95fd3bba348c1d0908a517fe316418e ); utilsFacet.util_setL2BootloaderBytecodeHash(0x010008ddde4acc465cde1c420883701caadb41954567c0b4e3a0d1093a7afde7); diff --git a/l1-contracts/test/foundry/unit/concrete/Executor/_Executor_Shared.t.sol b/l1-contracts/test/foundry/unit/concrete/Executor/_Executor_Shared.t.sol index 18fb220e4..e9a63985a 100644 --- a/l1-contracts/test/foundry/unit/concrete/Executor/_Executor_Shared.t.sol +++ b/l1-contracts/test/foundry/unit/concrete/Executor/_Executor_Shared.t.sol @@ -83,7 +83,7 @@ contract ExecutorTest is Test { selectors[12] = getters.storedBatchHash.selector; selectors[13] = getters.getL2BootloaderBytecodeHash.selector; selectors[14] = getters.getL2DefaultAccountBytecodeHash.selector; - selectors[15] = getters.getL2EvmSimulatorBytecodeHash.selector; + selectors[15] = getters.getL2EvmEmulatorBytecodeHash.selector; selectors[16] = getters.getVerifierParams.selector; selectors[17] = getters.isDiamondStorageFrozen.selector; selectors[18] = getters.getPriorityTxMaxGasLimit.selector; @@ -178,7 +178,7 @@ contract ExecutorTest is Test { }), l2BootloaderBytecodeHash: dummyHash, l2DefaultAccountBytecodeHash: dummyHash, - l2EvmSimulatorBytecodeHash: dummyHash, + l2EvmEmulatorBytecodeHash: dummyHash, priorityTxMaxGasLimit: 1000000, feeParams: defaultFeeParams(), blobVersionedHashRetriever: blobVersionedHashRetriever diff --git a/l1-contracts/test/foundry/unit/concrete/Utils/Utils.sol b/l1-contracts/test/foundry/unit/concrete/Utils/Utils.sol index 008a93db4..915264aa9 100644 --- a/l1-contracts/test/foundry/unit/concrete/Utils/Utils.sol +++ b/l1-contracts/test/foundry/unit/concrete/Utils/Utils.sol @@ -226,7 +226,7 @@ library Utils { selectors[12] = GettersFacet.storedBatchHash.selector; selectors[13] = GettersFacet.getL2BootloaderBytecodeHash.selector; selectors[14] = GettersFacet.getL2DefaultAccountBytecodeHash.selector; - selectors[15] = GettersFacet.getL2EvmSimulatorBytecodeHash.selector; + selectors[15] = GettersFacet.getL2EvmEmulatorBytecodeHash.selector; selectors[16] = GettersFacet.getVerifierParams.selector; selectors[17] = GettersFacet.isDiamondStorageFrozen.selector; selectors[18] = GettersFacet.getPriorityTxMaxGasLimit.selector; @@ -278,8 +278,8 @@ library Utils { selectors[15] = UtilsFacet.util_getL2BootloaderBytecodeHash.selector; selectors[16] = UtilsFacet.util_setL2DefaultAccountBytecodeHash.selector; selectors[17] = UtilsFacet.util_getL2DefaultAccountBytecodeHash.selector; - selectors[18] = UtilsFacet.util_getL2EvmSimulatorBytecodeHash.selector; - selectors[19] = UtilsFacet.util_setL2EvmSimulatorBytecodeHash.selector; + selectors[18] = UtilsFacet.util_getL2EvmEmulatorBytecodeHash.selector; + selectors[19] = UtilsFacet.util_setL2EvmEmulatorBytecodeHash.selector; selectors[20] = UtilsFacet.util_setPendingAdmin.selector; selectors[21] = UtilsFacet.util_getPendingAdmin.selector; selectors[22] = UtilsFacet.util_setAdmin.selector; @@ -343,7 +343,7 @@ library Utils { verifierParams: makeVerifierParams(), l2BootloaderBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, l2DefaultAccountBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, - l2EvmSimulatorBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, + l2EvmEmulatorBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, priorityTxMaxGasLimit: 500000, feeParams: makeFeeParams(), blobVersionedHashRetriever: address(0x23746765237749923040872834) @@ -359,7 +359,7 @@ library Utils { verifierParams: makeVerifierParams(), l2BootloaderBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, l2DefaultAccountBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, - l2EvmSimulatorBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, + l2EvmEmulatorBytecodeHash: 0x0100000000000000000000000000000000000000000000000000000000000000, priorityTxMaxGasLimit: 80000000, feeParams: makeFeeParams(), blobVersionedHashRetriever: address(0x23746765237749923040872834) diff --git a/l1-contracts/test/foundry/unit/concrete/Utils/UtilsFacet.sol b/l1-contracts/test/foundry/unit/concrete/Utils/UtilsFacet.sol index 55c696b8e..25a2be4fb 100644 --- a/l1-contracts/test/foundry/unit/concrete/Utils/UtilsFacet.sol +++ b/l1-contracts/test/foundry/unit/concrete/Utils/UtilsFacet.sol @@ -80,12 +80,12 @@ contract UtilsFacet is ZkSyncHyperchainBase { return s.l2DefaultAccountBytecodeHash; } - function util_setL2EvmSimulatorBytecodeHash(bytes32 _l2EvmSimulatorBytecodeHash) external { - s.l2EvmSimulatorBytecodeHash = _l2EvmSimulatorBytecodeHash; + function util_setL2EvmEmulatorBytecodeHash(bytes32 _l2EvmEmulatorBytecodeHash) external { + s.l2EvmEmulatorBytecodeHash = _l2EvmEmulatorBytecodeHash; } - function util_getL2EvmSimulatorBytecodeHash() external view returns (bytes32) { - return s.l2EvmSimulatorBytecodeHash; + function util_getL2EvmEmulatorBytecodeHash() external view returns (bytes32) { + return s.l2EvmEmulatorBytecodeHash; } function util_setPendingAdmin(address _pendingAdmin) external { diff --git a/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/DiamondInit/Initialize.t.sol b/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/DiamondInit/Initialize.t.sol index cac368a2b..9433175cf 100644 --- a/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/DiamondInit/Initialize.t.sol +++ b/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/DiamondInit/Initialize.t.sol @@ -100,7 +100,7 @@ contract InitializeTest is DiamondInitTest { ); assertEq(utilsFacet.util_getL2BootloaderBytecodeHash(), initializeData.l2BootloaderBytecodeHash); assertEq(utilsFacet.util_getL2DefaultAccountBytecodeHash(), initializeData.l2DefaultAccountBytecodeHash); - assertEq(utilsFacet.util_getL2EvmSimulatorBytecodeHash(), initializeData.l2EvmSimulatorBytecodeHash); + assertEq(utilsFacet.util_getL2EvmEmulatorBytecodeHash(), initializeData.l2EvmEmulatorBytecodeHash); assertEq(utilsFacet.util_getPriorityTxMaxGasLimit(), initializeData.priorityTxMaxGasLimit); assertEq( keccak256(abi.encode(utilsFacet.util_getFeeParams())), diff --git a/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/facets/Admin/ExecuteUpgrade.t.sol b/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/facets/Admin/ExecuteUpgrade.t.sol index 71ccfc581..edf687dd4 100644 --- a/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/facets/Admin/ExecuteUpgrade.t.sol +++ b/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/facets/Admin/ExecuteUpgrade.t.sol @@ -45,7 +45,7 @@ contract ExecuteUpgradeTest is AdminTest { factoryDeps: new bytes[](0), bootloaderHash: bytes32(0), defaultAccountHash: bytes32(0), - evmSimulatorHash: bytes32(0), + evmEmulatorHash: bytes32(0), verifier: address(0), verifierParams: verifierParams, l1ContractsUpgradeCalldata: hex"", diff --git a/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/facets/Getters/_Getters_Shared.t.sol b/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/facets/Getters/_Getters_Shared.t.sol index 948c79925..5bf4d7639 100644 --- a/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/facets/Getters/_Getters_Shared.t.sol +++ b/l1-contracts/test/foundry/unit/concrete/state-transition/chain-deps/facets/Getters/_Getters_Shared.t.sol @@ -90,8 +90,8 @@ contract GettersFacetWrapper is GettersFacet { s.l2DefaultAccountBytecodeHash = _l2DefaultAccountBytecodeHash; } - function utils_setL2EvmSimulatorBytecodeHash(bytes32 _l2EvmSimulatorBytecodeHash) external { - s.l2EvmSimulatorBytecodeHash = _l2EvmSimulatorBytecodeHash; + function utils_setL2EvmEmulatorBytecodeHash(bytes32 _l2EvmEmulatorBytecodeHash) external { + s.l2EvmEmulatorBytecodeHash = _l2EvmEmulatorBytecodeHash; } function util_setVerifierParams(VerifierParams memory _verifierParams) external { diff --git a/l1-contracts/test/unit_tests/executor_proof.spec.ts b/l1-contracts/test/unit_tests/executor_proof.spec.ts index 8bbb46df3..d99b7c197 100644 --- a/l1-contracts/test/unit_tests/executor_proof.spec.ts +++ b/l1-contracts/test/unit_tests/executor_proof.spec.ts @@ -17,9 +17,9 @@ describe("Executor test", function () { it("Test hashes (Rollup)", async () => { const bootloaderHash = "0x010008bbde6fc402ea3a3d6cb15cb97e70245d3d4e48fb74362d4961b74c16b1"; const aaHash = "0x0100058d9eee51f4b9e9a9ecb7fd7e8301e90bef018c2bd913ed36e583fec8c2"; - const evmSimulatorHash = "0x01000ccb740e2345754450eda583f59b31a346920a22f968dfcfc63feae303ee"; + const evmEmulatorHash = "0x01000ccb740e2345754450eda583f59b31a346920a22f968dfcfc63feae303ee"; - const setResult = await executor.setHashes(aaHash, bootloaderHash, evmSimulatorHash); + const setResult = await executor.setHashes(aaHash, bootloaderHash, evmEmulatorHash); const finish = await setResult.wait(); expect(finish.status == 1); diff --git a/l1-contracts/test/unit_tests/l2-upgrade.test.spec.ts b/l1-contracts/test/unit_tests/l2-upgrade.test.spec.ts index 96d00a531..41fe17544 100644 --- a/l1-contracts/test/unit_tests/l2-upgrade.test.spec.ts +++ b/l1-contracts/test/unit_tests/l2-upgrade.test.spec.ts @@ -416,7 +416,7 @@ describe.only("L2 upgrade test", function () { it("Should successfully perform an upgrade", async () => { const bootloaderHash = ethers.utils.hexlify(hashBytecode(ethers.utils.randomBytes(32))); const defaultAccountHash = ethers.utils.hexlify(hashBytecode(ethers.utils.randomBytes(32))); - const evmSimulatorHash = ethers.utils.hexlify(hashBytecode(ethers.utils.randomBytes(32))); + const evmEmulatorHash = ethers.utils.hexlify(hashBytecode(ethers.utils.randomBytes(32))); const testnetVerifierFactory = await hardhat.ethers.getContractFactory("TestnetVerifier"); const testnetVerifierContract = await testnetVerifierFactory.deploy(); const newVerifier = testnetVerifierContract.address; @@ -436,7 +436,7 @@ describe.only("L2 upgrade test", function () { const upgrade = { bootloaderHash, defaultAccountHash, - evmSimulatorHash, + evmEmulatorHash, verifier: newVerifier, verifierParams: newerVerifierParams, executeUpgradeTx: true, @@ -468,7 +468,7 @@ describe.only("L2 upgrade test", function () { // Now, we check that all the data was set as expected expect(await proxyGetters.getL2BootloaderBytecodeHash()).to.equal(bootloaderHash); expect(await proxyGetters.getL2DefaultAccountBytecodeHash()).to.equal(defaultAccountHash); - expect(await proxyGetters.getL2EvmSimulatorBytecodeHash()).to.equal(evmSimulatorHash); + expect(await proxyGetters.getL2EvmEmulatorBytecodeHash()).to.equal(evmEmulatorHash); expect((await proxyGetters.getVerifier()).toLowerCase()).to.equal(newVerifier.toLowerCase()); expect(await proxyGetters.getProtocolVersion()).to.equal(addToProtocolVersion(initialProtocolVersion, 5, 0)); @@ -512,7 +512,7 @@ describe.only("L2 upgrade test", function () { const currentVerifierParams = await proxyGetters.getVerifierParams(); const currentBootloaderHash = await proxyGetters.getL2BootloaderBytecodeHash(); const currentL2DefaultAccountBytecodeHash = await proxyGetters.getL2DefaultAccountBytecodeHash(); - const currentL2EvmSimulatorBytecodeHash = await proxyGetters.getL2EvmSimulatorBytecodeHash(); + const currentL2EvmEmulatorBytecodeHash = await proxyGetters.getL2EvmEmulatorBytecodeHash(); const testnetVerifierFactory = await hardhat.ethers.getContractFactory("TestnetVerifier"); const testnetVerifierContract = await testnetVerifierFactory.deploy(); @@ -557,7 +557,7 @@ describe.only("L2 upgrade test", function () { // Now, we check that all the data was set as expected expect(await proxyGetters.getL2BootloaderBytecodeHash()).to.equal(currentBootloaderHash); expect(await proxyGetters.getL2DefaultAccountBytecodeHash()).to.equal(currentL2DefaultAccountBytecodeHash); - expect(await proxyGetters.getL2EvmSimulatorBytecodeHash()).to.equal(currentL2EvmSimulatorBytecodeHash); + expect(await proxyGetters.getL2EvmEmulatorBytecodeHash()).to.equal(currentL2EvmEmulatorBytecodeHash); expect((await proxyGetters.getVerifier()).toLowerCase()).to.equal(newVerifier.toLowerCase()); expect(await proxyGetters.getProtocolVersion()).to.equal(addToProtocolVersion(initialProtocolVersion, 5, 1)); @@ -948,7 +948,7 @@ function buildProposeUpgrade(proposedUpgrade: PartialProposedUpgrade): ProposedU l2ProtocolUpgradeTx: buildL2CanonicalTransaction({ nonce: newProtocolVersion }), bootloaderHash: ethers.constants.HashZero, defaultAccountHash: ethers.constants.HashZero, - evmSimulatorHash: ethers.constants.HashZero, + evmEmulatorHash: ethers.constants.HashZero, verifier: ethers.constants.AddressZero, verifierParams: buildVerifierParams({}), l1ContractsUpgradeCalldata: "0x", diff --git a/l1-contracts/test/unit_tests/proxy_test.spec.ts b/l1-contracts/test/unit_tests/proxy_test.spec.ts index 712bde127..4f6dc204a 100644 --- a/l1-contracts/test/unit_tests/proxy_test.spec.ts +++ b/l1-contracts/test/unit_tests/proxy_test.spec.ts @@ -96,7 +96,7 @@ describe("Diamond proxy tests", function () { verifierParams: dummyVerifierParams, l2BootloaderBytecodeHash: "0x0100000000000000000000000000000000000000000000000000000000000000", l2DefaultAccountBytecodeHash: "0x0100000000000000000000000000000000000000000000000000000000000000", - l2EvmSimulatorBytecodeHash: "0x0100000000000000000000000000000000000000000000000000000000000000", + l2EvmEmulatorBytecodeHash: "0x0100000000000000000000000000000000000000000000000000000000000000", priorityTxMaxGasLimit: 500000, // priority tx max L2 gas limit feeParams: defaultFeeParams(), blobVersionedHashRetriever: "0x0000000000000000000000000000000000000001", diff --git a/system-contracts/SystemContractsHashes.json b/system-contracts/SystemContractsHashes.json index 2f0d9d00f..a2a5c8ca2 100644 --- a/system-contracts/SystemContractsHashes.json +++ b/system-contracts/SystemContractsHashes.json @@ -126,9 +126,9 @@ "sourceCodeHash": "0xfcf4828bcc109dea5f88c38f428d9ac5e18d5a2767fa4909277802c7e38c1f93" }, { - "contractName": "EvmInterpreter", - "bytecodePath": "contracts-preprocessed/artifacts/EvmInterpreter.yul.zbin", - "sourceCodePath": "contracts-preprocessed/EvmInterpreter.yul", + "contractName": "EvmEmulator", + "bytecodePath": "contracts-preprocessed/artifacts/EvmEmulator.yul.zbin", + "sourceCodePath": "contracts-preprocessed/EvmEmulator.yul", "bytecodeHash": "0x01000cdf5bb7dd8a97faf231a5e1e20f2fe308d6f200c3295c6e3629547cc4a4", "sourceCodeHash": "0xe1133c2af9e4fc38e845f7fcc23f3cbab37b857013f55b6e7e9bdea28f331c40" }, diff --git a/system-contracts/contracts/EvmInterpreter.yul b/system-contracts/contracts/EvmEmulator.yul similarity index 99% rename from system-contracts/contracts/EvmInterpreter.yul rename to system-contracts/contracts/EvmEmulator.yul index 1833f2c25..c9548e1a1 100644 --- a/system-contracts/contracts/EvmInterpreter.yul +++ b/system-contracts/contracts/EvmEmulator.yul @@ -1,4 +1,4 @@ -object "EVMInterpreter" { +object "EvmEmulator" { code { /// @dev This function is used to get the initCode. /// @dev It assumes that the initCode has been passed via the calldata and so we use the pointer @@ -2912,7 +2912,7 @@ object "EVMInterpreter" { setDeployedCode(gasToReturn, offset, len) } - object "EVMInterpreter_deployed" { + object "EvmEmulator_deployed" { code { function ACCOUNT_CODE_STORAGE_SYSTEM_CONTRACT() -> addr { addr := 0x0000000000000000000000000000000000008002 diff --git a/system-contracts/evm-interpreter/EvmInterpreter.template.yul b/system-contracts/evm-emulator/EvmEmulator.template.yul similarity index 94% rename from system-contracts/evm-interpreter/EvmInterpreter.template.yul rename to system-contracts/evm-emulator/EvmEmulator.template.yul index 0aed3e039..88842853e 100644 --- a/system-contracts/evm-interpreter/EvmInterpreter.template.yul +++ b/system-contracts/evm-emulator/EvmEmulator.template.yul @@ -1,4 +1,4 @@ -object "EVMInterpreter" { +object "EvmEmulator" { code { /// @dev This function is used to get the initCode. /// @dev It assumes that the initCode has been passed via the calldata and so we use the pointer @@ -80,7 +80,7 @@ object "EVMInterpreter" { returnGas := chargeGas(gasToReturn, gasForCode) } - + function simulate( isCallerEVM, @@ -91,7 +91,7 @@ object "EVMInterpreter" { returnOffset := MEM_OFFSET_INNER() returnLen := 0 - + retGasLeft := evmGasLeft } @@ -120,9 +120,9 @@ object "EVMInterpreter" { setDeployedCode(gasToReturn, offset, len) } - object "EVMInterpreter_deployed" { + object "EvmEmulator_deployed" { code { - + function $llvm_NoInline_llvm$_simulate( isCallerEVM, @@ -133,7 +133,7 @@ object "EVMInterpreter" { returnOffset := MEM_OFFSET_INNER() returnLen := 0 - + if eq(isCallerEVM, 1) { // Includes gas diff --git a/system-contracts/evm-interpreter/EvmInterpreterFunctions.template.yul b/system-contracts/evm-emulator/EvmEmulatorFunctions.template.yul similarity index 100% rename from system-contracts/evm-interpreter/EvmInterpreterFunctions.template.yul rename to system-contracts/evm-emulator/EvmEmulatorFunctions.template.yul diff --git a/system-contracts/evm-interpreter/EvmInterpreterLoop.template.yul b/system-contracts/evm-emulator/EvmEmulatorLoop.template.yul similarity index 100% rename from system-contracts/evm-interpreter/EvmInterpreterLoop.template.yul rename to system-contracts/evm-emulator/EvmEmulatorLoop.template.yul diff --git a/system-contracts/package.json b/system-contracts/package.json index 1a04c8632..e4b97d4ee 100644 --- a/system-contracts/package.json +++ b/system-contracts/package.json @@ -63,7 +63,7 @@ "compile-zasm": "ts-node scripts/compile-zasm.ts", "deploy-preimages": "ts-node scripts/deploy-preimages.ts", "preprocess:bootloader": "rm -rf ./bootloader/build && yarn ts-node scripts/preprocess-bootloader.ts", - "preprocess:interpreter": "rm -f ./contracts/EvmInterpreter.yul && yarn ts-node scripts/preprocess-interpreter.ts", + "preprocess:emulator": "rm -f ./contracts/EvmEmulator.yul && yarn ts-node scripts/preprocess-emulator.ts", "preprocess:system-contracts": "rm -rf ./contracts-preprocessed && ts-node scripts/preprocess-system-contracts.ts", "verify-on-explorer": "hardhat run scripts/verify-on-explorer.ts", "test": "yarn build:test-system-contracts && hardhat test --network zkSyncTestNode", diff --git a/system-contracts/scripts/deploy-preimages.ts b/system-contracts/scripts/deploy-preimages.ts index afff747cb..b13917a0e 100644 --- a/system-contracts/scripts/deploy-preimages.ts +++ b/system-contracts/scripts/deploy-preimages.ts @@ -23,7 +23,7 @@ const MAX_COMBINED_LENGTH = 125000; const DEFAULT_ACCOUNT_CONTRACT_NAME = "DefaultAccount"; const BOOTLOADER_CONTRACT_NAME = "Bootloader"; -const EVM_SIMULATOR_CONTRACT_NAME = "EvmInterpreter"; +const EVM_EMULATOR_CONTRACT_NAME = "EvmEmulator"; const CONSOLE_COLOR_RESET = "\x1b[0m"; const CONSOLE_COLOR_RED = "\x1b[31m"; @@ -158,51 +158,51 @@ class ZkSyncDeployer { return await zkSync.getL2BootloaderBytecodeHash(); } - // Returns the current default evm simulator bytecode on zkSync - async currentEvmSimulatorBytecode(): Promise { + // Returns the current evm emulator bytecode on zkSync + async currentEvmEmulatorBytecode(): Promise { const zkSync = await this.deployer.zkWallet.getMainContract(); - return await zkSync.getL2EvmSimulatorBytecodeHash(); + return await zkSync.getL2EvmEmulatorBytecodeHash(); } - // If needed, appends the evm simulator bytecode to the upgrade - async checkShouldUpgradeEvmSimulator(evmSimulatorBytecode: string) { - const bytecodeHash = ethers.utils.hexlify(hashBytecode(evmSimulatorBytecode)); - const currentEvmSimulatorBytecode = ethers.utils.hexlify(await this.currentEvmSimulatorBytecode()); + // If needed, appends the evm emulator bytecode to the upgrade + async checkShouldUpgradeEvmEmulator(evmEmulatorBytecode: string) { + const bytecodeHash = ethers.utils.hexlify(hashBytecode(evmEmulatorBytecode)); + const currentEvmEmulatorBytecode = ethers.utils.hexlify(await this.currentEvmEmulatorBytecode()); // If the bytecode is not the same as the one deployed on zkSync, we need to add it to the deployment - if (bytecodeHash.toLowerCase() !== currentEvmSimulatorBytecode) { + if (bytecodeHash.toLowerCase() !== currentEvmEmulatorBytecode) { this.defaultAccountToUpgrade = { - name: EVM_SIMULATOR_CONTRACT_NAME, + name: EVM_EMULATOR_CONTRACT_NAME, bytecodeHashes: [bytecodeHash], }; } } - // Publishes the bytecode of the evm simulator and appends it to the deployed bytecodes if needed. - async processEvmSimulator() { - const defaultEvmSimulator = (await this.deployer.loadArtifact(EVM_SIMULATOR_CONTRACT_NAME)).bytecode; + // Publishes the bytecode of the evm emulator and appends it to the deployed bytecodes if needed. + async processEvmEmulator() { + const defaultEvmEmulator = (await this.deployer.loadArtifact(EVM_EMULATOR_CONTRACT_NAME)).bytecode; - await this.publishEvmSimulator(defaultEvmSimulator); - await this.checkShouldUpgradeEvmSimulator(defaultEvmSimulator); + await this.publishEvmEmulator(defaultEvmEmulator); + await this.checkShouldUpgradeEvmEmulator(defaultEvmEmulator); } - async publishEvmSimulator(defaultEvmSimulatorBytecode: string) { - const [defaultEvmSimulatorBytecodes] = await filterPublishedFactoryDeps( - EVM_SIMULATOR_CONTRACT_NAME, - [defaultEvmSimulatorBytecode], + async publishEvmEmulator(defaultEvmEmulatorBytecode: string) { + const [defaultEvmEmulatorBytecodes] = await filterPublishedFactoryDeps( + EVM_EMULATOR_CONTRACT_NAME, + [defaultEvmEmulatorBytecode], this.deployer ); - if (defaultEvmSimulatorBytecodes.length == 0) { - console.log("Default evm simulator is already published, skipping"); + if (defaultEvmEmulatorBytecodes.length == 0) { + console.log("Default evm emulator is already published, skipping"); return; } - // Publish evm simulator bytecode + // Publish evm emulator bytecode await this.publishFactoryDeps([ { - name: EVM_SIMULATOR_CONTRACT_NAME, - bytecodes: defaultEvmSimulatorBytecodes, + name: EVM_EMULATOR_CONTRACT_NAME, + bytecodes: defaultEvmEmulatorBytecodes, }, ]); } @@ -352,7 +352,7 @@ async function main() { .option("--l2Rpc ") .option("--bootloader") .option("--default-aa") - .option("--evm-simulator") + .option("--evm-emulator") .option("--system-contracts") .option("--file ") .action(async (cmd) => { @@ -391,8 +391,8 @@ async function main() { await zkSyncDeployer.processDefaultAA(); } - if (cmd.evmSimulator) { - await zkSyncDeployer.processEvmSimulator(); + if (cmd.evmEmulator) { + await zkSyncDeployer.processEvmEmulator(); } if (cmd.systemContracts) { diff --git a/system-contracts/scripts/preprocess-emulator.ts b/system-contracts/scripts/preprocess-emulator.ts new file mode 100644 index 000000000..5f49df926 --- /dev/null +++ b/system-contracts/scripts/preprocess-emulator.ts @@ -0,0 +1,22 @@ +import { writeFileSync, readFileSync } from "fs"; + +/* eslint-disable @typescript-eslint/no-var-requires */ +const preprocess = require("preprocess"); +/* eslint-enable@typescript-eslint/no-var-requires */ + +const OUTPUT_DIR = "contracts"; +const INPUT_DIR = "evm-emulator"; + +async function main() { + process.chdir(`${INPUT_DIR}`); + const emulatorSource = readFileSync("EvmEmulator.template.yul").toString(); + + console.log("Preprocessing Emulator"); + const emulator = preprocess.preprocess(emulatorSource); + + writeFileSync(`../${OUTPUT_DIR}/EvmEmulator.yul`, emulator); + + console.log("Emulator preprocessing done!"); +} + +main(); diff --git a/system-contracts/scripts/preprocess-interpreter.ts b/system-contracts/scripts/preprocess-interpreter.ts deleted file mode 100644 index 2b031ab9c..000000000 --- a/system-contracts/scripts/preprocess-interpreter.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { writeFileSync, readFileSync } from "fs"; - -/* eslint-disable @typescript-eslint/no-var-requires */ -const preprocess = require("preprocess"); -/* eslint-enable@typescript-eslint/no-var-requires */ - -const OUTPUT_DIR = "contracts"; -const INPUT_DIR = "evm-interpreter"; - -async function main() { - process.chdir(`${INPUT_DIR}`); - const interpreterSource = readFileSync("EvmInterpreter.template.yul").toString(); - - console.log("Preprocessing Interpreter"); - const interpreter = preprocess.preprocess(interpreterSource); - - writeFileSync(`../${OUTPUT_DIR}/EvmInterpreter.yul`, interpreter); - - console.log("Interpreter preprocessing done!"); -} - -main();