diff --git a/README.md b/README.md index 0730e526..2e9ac5cb 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ In a few seconds, you should see the RelayedMessage on chain 902: ```sh # example -INFO [08-30|14:30:14.698] L2ToL2CrossChainMessenger#RelayedMessage sourceChainID=901 destinationChainID=902 nonce=0 sender=0x4200000000000000000000000000000000000028 target=0x4200000000000000000000000000000000000028 +INFO [08-30|14:30:14.698] SuperchainTokenBridge#RelayERC20 token=0x420beeF000000000000000000000000000000001 from=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 to=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 amount=1000 source=901 ``` **5. Check the balance on chain 902** diff --git a/contracts/script/DeployL2PeripheryContracts.s.sol b/contracts/script/DeployL2PeripheryContracts.s.sol index 19cb768f..cc506364 100644 --- a/contracts/script/DeployL2PeripheryContracts.s.sol +++ b/contracts/script/DeployL2PeripheryContracts.s.sol @@ -3,6 +3,7 @@ pragma solidity ^0.8.25; import {Script, console} from "forge-std/Script.sol"; import {L2NativeSuperchainERC20} from "../src/L2NativeSuperchainERC20.sol"; +import {SuperchainETHWrapper} from "../src/SuperchainETHWrapper.sol"; contract DeployL2PeripheryContracts is Script { /// @notice Used for tracking the next address to deploy a periphery contract at. @@ -31,6 +32,7 @@ contract DeployL2PeripheryContracts is Script { function run() public broadcast { deployL2NativeSuperchainERC20(); + deploySuperchainETHWrapper(); } function deployL2NativeSuperchainERC20() public { @@ -39,6 +41,12 @@ contract DeployL2PeripheryContracts is Script { console.log("Deployed L2NativeSuperchainERC20 at address: ", deploymentAddress); } + function deploySuperchainETHWrapper() public { + address _superchainETHWrapperContract = address(new SuperchainETHWrapper{salt: _salt()}()); + address deploymentAddress = deployAtNextDeploymentAddress(_superchainETHWrapperContract.code); + console.log("Deployed SuperchainETHWrapper at address: ", deploymentAddress); + } + function deployAtNextDeploymentAddress(bytes memory newRuntimeBytecode) internal returns (address _deploymentAddr) diff --git a/contracts/src/SuperchainETHWrapper.sol b/contracts/src/SuperchainETHWrapper.sol new file mode 100644 index 00000000..dd64726d --- /dev/null +++ b/contracts/src/SuperchainETHWrapper.sol @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.15; + +import {Unauthorized} from "@contracts-bedrock/libraries/errors/CommonErrors.sol"; +import {Predeploys} from "@contracts-bedrock/libraries/Predeploys.sol"; +import {SafeCall} from "@contracts-bedrock//libraries/SafeCall.sol"; +import {IL2ToL2CrossDomainMessenger} from "@contracts-bedrock/L2/interfaces/IL2ToL2CrossDomainMessenger.sol"; +import {ISuperchainTokenBridge} from "@contracts-bedrock/L2/interfaces/ISuperchainTokenBridge.sol"; +import {ISuperchainWETH} from "@contracts-bedrock/L2/interfaces/ISuperchainWETH.sol"; + +/** + * @notice This contract has not been audited. It may contain bugs or security vulnerabilities. + * We are not liable for any issues arising from its use. It is strongly advised that this + * contract not be used with actual funds and should only be used for testing on + * testnets or in a controlled development environment. + */ + +/** + * @notice Thrown when the relay of SuperchainWETH has not succeeded. + * @dev This error is triggered if the SuperchainWETH relay through the L2ToL2CrossDomainMessenger + * has not completed successfully successful. + */ +error RelaySuperchainWETHNotSuccessful(); + +/** + * @title SuperchainETHWrapper + * @notice This contract facilitates sending ETH across chains within the Superchain by wrapping + * ETH into SuperchainWETH, relaying the wrapped asset to another chain, and then + * unwrapping it back to ETH on the destination chain. + * @dev The contract integrates with the SuperchainWETH contract for wrapping and unwrapping ETH, + * and uses the L2ToL2CrossDomainMessenger for relaying the wrapped ETH between chains. + */ +contract SuperchainETHWrapper { + /** + * @dev Emitted when ETH is received by the contract. + * @param from The address that sent ETH. + * @param value The amount of ETH received. + */ + event LogReceived(address from, uint256 value); + + // Fallback function to receive ETH + receive() external payable { + emit LogReceived(msg.sender, msg.value); + } + + /** + * @notice Unwraps SuperchainWETH into native ETH and sends it to a specified destination address + * then calls an arbitrary function at the destination.. + * @param _relayERC20MsgHash The hash of the relayed ERC20 message. + * @param _dst The destination address on the receiving chain. + * @param _wad The amount of SuperchainWETH to unwrap to ETH. + * @param _calldata The calldata to be passed in the call to the destination address. + */ + function unwrapAndCall(bytes32 _relayERC20MsgHash, address _dst, uint256 _wad, bytes memory _calldata) external { + IL2ToL2CrossDomainMessenger messenger = IL2ToL2CrossDomainMessenger(Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER); + if (msg.sender != address(messenger)) revert Unauthorized(); + if (messenger.crossDomainMessageSender() != address(this)) revert Unauthorized(); + + if (messenger.successfulMessages(_relayERC20MsgHash) == false) { + revert RelaySuperchainWETHNotSuccessful(); + } + + ISuperchainWETH(Predeploys.SUPERCHAIN_WETH).withdraw(_wad); + SafeCall.call(_dst, _wad, _calldata); + } + + /** + * @notice Wraps ETH into SuperchainWETH and sends it to another chain. + * @dev This function wraps the sent ETH into SuperchainWETH, computes the relay message hash, + * and relays the message to the destination chain. + * @param _dst The destination address on the receiving chain. + * @param _chainId The ID of the destination chain. + * @param _calldata The calldata for the function to be called on the destination chain after unwrapping. + */ + function sendETH(address _dst, uint256 _chainId, bytes memory _calldata) public payable { + ISuperchainWETH(Predeploys.SUPERCHAIN_WETH).deposit{value: msg.value}(); + bytes32 messageHash = ISuperchainTokenBridge(Predeploys.SUPERCHAIN_TOKEN_BRIDGE).sendERC20( + Predeploys.SUPERCHAIN_WETH, address(this), msg.value, _chainId + ); + IL2ToL2CrossDomainMessenger(Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER).sendMessage({ + _destination: _chainId, + _target: address(this), + _message: abi.encodeCall(this.unwrapAndCall, (messageHash, _dst, msg.value, _calldata)) + }); + } +} diff --git a/contracts/test/SuperchainETHWrapper.t.sol b/contracts/test/SuperchainETHWrapper.t.sol new file mode 100644 index 00000000..cf126d0d --- /dev/null +++ b/contracts/test/SuperchainETHWrapper.t.sol @@ -0,0 +1,226 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.15; + +import {Test} from "forge-std/Test.sol"; + +import {Unauthorized} from "@contracts-bedrock/libraries/errors/CommonErrors.sol"; +import {Predeploys} from "@contracts-bedrock/libraries/Predeploys.sol"; +import {IL2ToL2CrossDomainMessenger} from "@contracts-bedrock/L2/interfaces/IL2ToL2CrossDomainMessenger.sol"; +import {ISuperchainTokenBridge} from "@contracts-bedrock/L2/interfaces/ISuperchainTokenBridge.sol"; +import {ISuperchainWETH} from "@contracts-bedrock/L2/interfaces/ISuperchainWETH.sol"; +import {IWETH} from "@contracts-bedrock/universal/interfaces/IWETH.sol"; +import {SuperchainWETH} from "@contracts-bedrock/L2/SuperchainWETH.sol"; + +import {SuperchainETHWrapper, RelaySuperchainWETHNotSuccessful} from "../src/SuperchainETHWrapper.sol"; + +/// @title SuperchainETHWrapper Happy Path Tests +/// @notice This contract contains the tests for successful paths in SuperchainETHWrapper. +contract SuperchainETHWrapper_HappyPath_Test is Test { + SuperchainETHWrapper public superchainETHWrapper; + + /// @notice Helper function to setup a mock and expect a call to it. + function _mockAndExpect(address _receiver, bytes memory _calldata, bytes memory _returned) internal { + vm.mockCall(_receiver, _calldata, _returned); + vm.expectCall(_receiver, _calldata); + } + + /// @notice Helper function to setup a mock and expect a call to it. + function _mockAndExpect(address _receiver, uint256 _msgValue, bytes memory _calldata, bytes memory _returned) + internal + { + vm.mockCall(_receiver, _msgValue, _calldata, _returned); + vm.expectCall(_receiver, _msgValue, _calldata); + } + + /// @notice Sets up the test suite. + function setUp() public { + superchainETHWrapper = new SuperchainETHWrapper(); + SuperchainWETH superchainWETH = new SuperchainWETH(); + vm.etch(Predeploys.SUPERCHAIN_WETH, address(superchainWETH).code); + } + + /// @notice Tests the `sendETH` function deposits the sender's tokens, calls + /// SuperchainWETH.sendERC20, and sends an encoded call to + /// SuperchainETHWrapper.unwrapAndCallAndCall through L2ToL2CrossDomainMessenger. + function testFuzz_sendETH_succeeds( + address _sender, + address _to, + uint256 _amount, + uint256 _chainId, + bytes32 messageHash, + bytes memory _calldata + ) public { + vm.assume(_chainId != block.chainid); + _amount = bound(_amount, 0, type(uint248).max - 1); + vm.deal(_sender, _amount); + _mockAndExpect( + Predeploys.SUPERCHAIN_WETH, _amount, abi.encodeWithSelector(IWETH.deposit.selector), abi.encode("") + ); + _mockAndExpect( + Predeploys.SUPERCHAIN_TOKEN_BRIDGE, + abi.encodeCall( + ISuperchainTokenBridge.sendERC20, + (Predeploys.SUPERCHAIN_WETH, address(superchainETHWrapper), _amount, _chainId) + ), + abi.encode(messageHash) + ); + bytes memory _message = + abi.encodeCall(superchainETHWrapper.unwrapAndCall, (messageHash, _to, _amount, _calldata)); + _mockAndExpect( + Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER, + abi.encodeWithSelector( + IL2ToL2CrossDomainMessenger.sendMessage.selector, _chainId, address(superchainETHWrapper), _message + ), + abi.encode("") + ); + + vm.prank(_sender); + superchainETHWrapper.sendETH{value: _amount}(_to, _chainId, _calldata); + } + + /** + * @notice Tests the successful execution of the `unwrapAndCall` function. + * @dev This test mocks the `crossDomainMessageSender` and `successfulMessages` function calls + * to simulate the proper cross-domain message behavior. + * @param _to Address receiving the unwrapped ETH. + * @param _amount Amount of ETH to be unwrapped and sent. + * @param _relayERC20MsgHash Hash of the relayed message. + */ + function testFuzz_unwrapAndCall_succeeds( + address _to, + uint256 _amount, + bytes32 _relayERC20MsgHash, + bytes memory _calldata + ) public { + _amount = bound(_amount, 0, type(uint248).max - 1); + // Ensure that the target contract is not a Forge contract. + assumeNotForgeAddress(_to); + // Ensure that the target call is payable if value is sent + assumePayable(_to); + uint256 prevBalance = _to.balance; + + _mockAndExpect( + Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER, + abi.encodeWithSelector(IL2ToL2CrossDomainMessenger.crossDomainMessageSender.selector), + abi.encode(address(superchainETHWrapper)) + ); + _mockAndExpect( + Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER, + abi.encodeCall(IL2ToL2CrossDomainMessenger.successfulMessages, (_relayERC20MsgHash)), + abi.encode(true) + ); + _mockAndExpect( + Predeploys.SUPERCHAIN_WETH, + abi.encodeCall(ISuperchainWETH(Predeploys.SUPERCHAIN_WETH).withdraw, (_amount)), + abi.encode("") + ); + // Simulates the withdrawal being sent to the SuperchainETHWrapper contract. + vm.deal(address(superchainETHWrapper), _amount); + + vm.expectCall(_to, _amount, _calldata); + vm.prank(Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER); + superchainETHWrapper.unwrapAndCall(_relayERC20MsgHash, _to, _amount, _calldata); + assertEq(_to.balance - prevBalance, _amount); + } +} + +/// @title SuperchainETHWrapper Revert Tests +/// @notice This contract contains tests to check that certain conditions result in expected +/// reverts. +contract SuperchainETHWrapperRevertTests is Test { + SuperchainETHWrapper public superchainETHWrapper; + + /// @notice Helper function to setup a mock and expect a call to it. + function _mockAndExpect(address _receiver, bytes memory _calldata, bytes memory _returned) internal { + vm.mockCall(_receiver, _calldata, _returned); + vm.expectCall(_receiver, _calldata); + } + + /// @notice Sets up the test suite. + function setUp() public { + superchainETHWrapper = new SuperchainETHWrapper(); + } + + /** + * @notice Tests that the `unwrap` function reverts when the message is unrelayed. + * @dev Mocks the cross-domain message sender and sets `successfulMessages` to return `false`, + * triggering a revert when trying to call `unwrap`. + * @param _to Address receiving the unwrapped ETH. + * @param _amount Amount of ETH to be unwrapped. + * @param _relayERC20MsgHash Hash of the relayed message. + */ + function testFuzz_unwrap_fromUnrelayedMsgHash_reverts( + address _to, + uint256 _amount, + bytes32 _relayERC20MsgHash, + bytes memory _calldata + ) public { + _mockAndExpect( + Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER, + abi.encodeWithSelector(IL2ToL2CrossDomainMessenger.crossDomainMessageSender.selector), + abi.encode(address(superchainETHWrapper)) + ); + _mockAndExpect( + Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER, + abi.encodeCall(IL2ToL2CrossDomainMessenger.successfulMessages, (_relayERC20MsgHash)), + abi.encode(false) + ); + + vm.prank(Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER); + vm.expectRevert(RelaySuperchainWETHNotSuccessful.selector); + superchainETHWrapper.unwrapAndCall(_relayERC20MsgHash, _to, _amount, _calldata); + } + + /** + * @notice Tests that the `unwrap` function reverts when the sender is not the expected messenger. + * @dev Mocks an invalid sender (not the messenger) to ensure the function reverts with the + * `Unauthorized` error. + * @param _sender Address that tries to call `unwrap` but is not the messenger. + * @param _to Address receiving the unwrapped ETH. + * @param _amount Amount of ETH to be unwrapped. + * @param _relayERC20MsgHash Hash of the relayed message. + */ + function testFuzz_unwrap_nonMessengerSender_reverts( + address _sender, + address _to, + uint256 _amount, + bytes32 _relayERC20MsgHash, + bytes memory _calldata + ) public { + vm.assume(_sender != Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER); + + vm.prank(_sender); + vm.expectRevert(Unauthorized.selector); + superchainETHWrapper.unwrapAndCall(_relayERC20MsgHash, _to, _amount, _calldata); + } + + /** + * @notice Tests that the `unwrap` function reverts when the cross-domain message sender is + * not the SuperchainETHWrapper contract. + * @dev Mocks a wrong cross-domain message sender and ensures the function reverts with the + * `Unauthorized` error. + * @param _sender Address that tries to call `unwrap` but is not the correct message sender. + * @param _to Address receiving the unwrapped ETH. + * @param _amount Amount of ETH to be unwrapped. + * @param _relayERC20MsgHash Hash of the relayed message. + */ + function testFuzz_unwrap_wrongCrossDomainMessageSender_reverts( + address _sender, + address _to, + uint256 _amount, + bytes32 _relayERC20MsgHash, + bytes memory _calldata + ) public { + vm.assume(_sender != address(superchainETHWrapper)); + + _mockAndExpect( + Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER, + abi.encodeWithSelector(IL2ToL2CrossDomainMessenger.crossDomainMessageSender.selector), + abi.encode(_sender) + ); + + vm.prank(Predeploys.L2_TO_L2_CROSS_DOMAIN_MESSENGER); + vm.expectRevert(Unauthorized.selector); + superchainETHWrapper.unwrapAndCall(_relayERC20MsgHash, _to, _amount, _calldata); + } +} diff --git a/docs/src/examples/crosschain-eth-transfer.md b/docs/src/examples/crosschain-eth-transfer.md new file mode 100644 index 00000000..20294139 --- /dev/null +++ b/docs/src/examples/crosschain-eth-transfer.md @@ -0,0 +1,108 @@ +# Crosschain ETH Transfer + +Crosschain ETH transfers in the Superchain are facilitated through the SuperchainWETH contract. For more information on this checkout the spec for SuperchainWETH: https://specs.optimism.io/interop/superchain-weth.html. + +## Send native ETH from chain 901 to 902 via SuperchainWETH + +This outlines how to send native ETH from chain 901 to 902. To simplify these steps supersim will be run with the `--interop.autorelay` flag. The `--interop.autorelay` flag automatically triggers the relay message transaction once the initial send transaction is completed on the source chain, improving the developer experience by removing the need to manually send the relay message. + +### 1. Start `supersim` with the autorelayer enabled + +```sh +supersim --interop.autorelay +``` + +### 2. Wrap the native ETH to SuperchainWETH on chain 901 + +Wrap 10 ETH to `SuperchainWETH`. The `SuperchainWETH` contract is a predeploy at address `0x4200000000000000000000000000000000000024` + +```sh +cast send 0x4200000000000000000000000000000000000024 "deposit()" --value 10ether --rpc-url http://127.0.0.1:9545 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 +``` + +### 3. Check balance of SuperchainWETH on chain 901 + +Verify that the balance of the SuperchainWETH on chain 901 has increased by `10000000000000000000`: + +```sh +cast balance --erc20 0x4200000000000000000000000000000000000024 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --rpc-url http://127.0.0.1:9545 +``` + +### 4. Initiate the send transaction on chain 901 through the SuperchainTokenBridge + +```sh +cast send 0x4200000000000000000000000000000000000028 "sendERC20(address _token, address _to, uint256 _amount, uint256 _chainId)" 0x4200000000000000000000000000000000000024 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 10000000000000000000 902 --rpc-url http://127.0.0.1:9545 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 +``` + +**5. Wait for the relayed message to appear on chain 902** + +In a few seconds, you should see the RelayedMessage on chain 902: + +```sh +# example +INFO [08-30|14:30:14.698] SuperchainWETH#CrosschainMint to=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 amount=10,000,000,000,000,000,000 +``` + +**6. Check the balance of SuperchainWETH on chain 902** + +Verify that the balance of SuperchainWETH on chain 902 has increased by 10000000000000000000: + +```sh +cast balance --erc20 0x4200000000000000000000000000000000000024 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --rpc-url http://127.0.0.1:9546 +``` + +**7. Unwrap the SuperchainWETH to native ETH on chain 902** + +```sh +cast send 0x4200000000000000000000000000000000000024 "withdraw(uint256)" 10000000000000000000 --rpc-url http://127.0.0.1:9546 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 +``` + +**8. Check the balance of ETH on chain 902** +Verify that the balance of ETH on chain 902 has increased: +```sh +cast balance 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --rpc-url http://127.0.0.1:9546 +``` + +## (Experimental) auto-wrapping and unwrapping of native ETH and sending from chain 901 to 902 using L2 to L2 message passing + +### Note: this example uses a contract `SuperchainETHWrapper` written for prototyping and testing purposes. This contract has not been audited and it may contain bugs or security vulnerabilities. We are not liable for any issues arising from its use. It is strongly advised that this contract not be used with actual funds and should only be used for testing on testnets or in a controlled development environment. This contract is deployed at a special address `0x420beeF000000000000000000000000000000002` only on the vanilla version of supersim and will not be found at this address in fork mode or in any other environments outside of supersim. + +In a typical L2 to L2 ETH cross-chain transfer, four transactions are required: + +1. Wrap Native ETH to SuperchainWETH on source chain +2. Send SuperchainWETH to recipient using SuperchainTokenBridge#SendERC20 +3. Relay message transaction on the destination chain to receive SuperchainWETH on destination +4. Unwrap SuperchainWETH to ETH on destination chain + +To simplify this process, you can use the `SuperchainETHWrapper` and the `--interop.autorelay` flag to get this down to just one step. The `SuperchainETHWrapper#SendETH` function handles wrapping the native ETH to SuperchainWETH and initiating the message to relay and unwrap the SuperchainWETH on the destination. The `--interop.autorelay` flag automatically triggers the relay message transaction once the initial send transaction is completed on the source chain, improving the developer experience by removing the need to manually send the relay message. + +### 1. Start `supersim` with the autorelayer enabled + +```sh +supersim --interop.autorelay +``` + +### 2. Initiate the send transaction on chain 901 + +Send ETH from Chain 901 to account `0xCE35738E4bC96bB0a194F71B3d184809F3727f56` on Chain 902 using the following command: + +```sh +cast send 0x420beeF000000000000000000000000000000002 "sendETH(address,uint256,bytes)" 0xCE35738E4bC96bB0a194F71B3d184809F3727f56 902 0x --value 10ether --rpc-url http://127.0.0.1:9545 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 +``` + +### 3. Wait for the relayed message to appear on chain 902 + +In a few seconds, you should see the RelayedMessage on chain 902: + +```sh +# example +INFO [08-30|14:30:14.698] SuperchainWETH#CrosschainMint to=0x420bEEF000000000000000000000000000000002 amount=10,000,000,000,000,000,000 +``` + +### 4. Check the balance on chain 902 + +Verify that the balance of ETH for account 0xCE35738E4bC96bB0a194F71B3d184809F3727f56 on chain 902 has increased: + +```sh +cast balance 0xCE35738E4bC96bB0a194F71B3d184809F3727f56 --rpc-url http://127.0.0.1:9546 +``` \ No newline at end of file diff --git a/docs/src/getting-started/first-steps.md b/docs/src/getting-started/first-steps.md index eb13e142..0079200b 100644 --- a/docs/src/getting-started/first-steps.md +++ b/docs/src/getting-started/first-steps.md @@ -59,7 +59,7 @@ cast send 0x420beeF000000000000000000000000000000001 "mint(address _to, uint256 Send the tokens from Chain 901 to Chain 902 using the following command: ```sh -cast send 0x420beeF000000000000000000000000000000001 "sendERC20(address _to, uint256 _amount, uint256 _chainId)" 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 1000 902 --rpc-url http://127.0.0.1:9545 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 +cast send 0x4200000000000000000000000000000000000028 "sendERC20(address _token, address _to, uint256 _amount, uint256 _chainId)" 0x420beeF000000000000000000000000000000001 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 1000 902 --rpc-url http://127.0.0.1:9545 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 ``` ### 4. Wait for the relayed message to appear on chain 902 @@ -68,7 +68,7 @@ In a few seconds, you should see the RelayedMessage on chain 902: ```sh # example -INFO [08-30|14:30:14.698] L2ToL2CrossChainMessenger#RelayedMessage sourceChainID=901 destinationChainID=902 nonce=0 sender=0x420beeF000000000000000000000000000000001 target=0x420beeF000000000000000000000000000000001 +INFO [08-30|14:30:14.698] SuperchainTokenBridge#RelayERC20 token=0x420beeF000000000000000000000000000000001 from=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 to=0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 amount=1000 source=901 ``` ### 5. Check the balance on chain 902 diff --git a/genesis/generated/900-l1-genesis.json b/genesis/generated/900-l1-genesis.json index f904b179..114b4a24 100644 --- a/genesis/generated/900-l1-genesis.json +++ b/genesis/generated/900-l1-genesis.json @@ -22,7 +22,7 @@ "depositContractAddress": "0x0000000000000000000000000000000000000000" }, "nonce": "0x0", - "timestamp": "0x67196bbe", + "timestamp": "0x6719811b", "extraData": "0x", "gasLimit": "0x1c9c380", "difficulty": "0x0", @@ -299,7 +299,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000035": "0x0000000000000000000000811d626a3444c5c10fa01607ee11efbeaf19b0ff00", "0x0000000000000000000000000000000000000000000000000000000000000037": "0x000000000000000000000000fb295aa436f23be2bd17678adf1232bdec02fed1", "0x0000000000000000000000000000000000000000000000000000000000000038": "0x00000000000000000000000094e2e1fcbfd1099b450b2d5ac1f1701327361163", - "0x000000000000000000000000000000000000000000000000000000000000003b": "0x00000000000000000000000000000000000000000000000067196bbe00000001", + "0x000000000000000000000000000000000000000000000000000000000000003b": "0x0000000000000000000000000000000000000000000000006719811b00000001", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000fa16d7079aab573acdf911dd58e4457a20547548", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000d98e0b378583bbcc8183184ce053aecbd15f22e5" }, @@ -315,7 +315,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000035": "0x0000000000000000000000811d626a3444c5c10fa01607ee11efbeaf19b0ff00", "0x0000000000000000000000000000000000000000000000000000000000000037": "0x000000000000000000000000fd19a33f8d757b8ea93bb2b40b1cde946c1e1f4d", "0x0000000000000000000000000000000000000000000000000000000000000038": "0x000000000000000000000000124efba5858a36f53726e107481e71d9060d84e0", - "0x000000000000000000000000000000000000000000000000000000000000003b": "0x00000000000000000000000000000000000000000000000067196bbe00000001", + "0x000000000000000000000000000000000000000000000000000000000000003b": "0x0000000000000000000000000000000000000000000000006719811b00000001", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000fa16d7079aab573acdf911dd58e4457a20547548", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x0000000000000000000000000c2405b5f131d7fe2e1f49e41e8a20d8e4179e7e" }, @@ -521,7 +521,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000035": "0x0000000000000000000000811d626a3444c5c10fa01607ee11efbeaf19b0ff00", "0x0000000000000000000000000000000000000000000000000000000000000037": "0x00000000000000000000000025782c27ef09d9173f8f274bead411bb9ac5417c", "0x0000000000000000000000000000000000000000000000000000000000000038": "0x000000000000000000000000ed76b1d812dad3a322fdc3d766f251d51a78c3a9", - "0x000000000000000000000000000000000000000000000000000000000000003b": "0x00000000000000000000000000000000000000000000000067196bbe00000001", + "0x000000000000000000000000000000000000000000000000000000000000003b": "0x0000000000000000000000000000000000000000000000006719811b00000001", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000fa16d7079aab573acdf911dd58e4457a20547548", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x00000000000000000000000048ff3b8ac58f74a9060dadfd60093d71a2e0b2ea" }, @@ -830,7 +830,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000035": "0x0000000000000000000000811d626a3444c5c10fa01607ee11efbeaf19b0ff00", "0x0000000000000000000000000000000000000000000000000000000000000037": "0x00000000000000000000000083e3463f6d53730367af74ad398779760b6404dd", "0x0000000000000000000000000000000000000000000000000000000000000038": "0x0000000000000000000000000a4bf4bfdbd1155df635021f4558eef0754e3706", - "0x000000000000000000000000000000000000000000000000000000000000003b": "0x00000000000000000000000000000000000000000000000067196bbe00000001", + "0x000000000000000000000000000000000000000000000000000000000000003b": "0x0000000000000000000000000000000000000000000000006719811b00000001", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000fa16d7079aab573acdf911dd58e4457a20547548", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000041ce2550a7925b7307fb1253962a3a6d89e7135" }, @@ -937,7 +937,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000035": "0x0000000000000000000000811d626a3444c5c10fa01607ee11efbeaf19b0ff00", "0x0000000000000000000000000000000000000000000000000000000000000037": "0x000000000000000000000000489d9f7f107dfca422f31f7b9d90d27442c76d64", "0x0000000000000000000000000000000000000000000000000000000000000038": "0x000000000000000000000000ed5f8f44f210716c76111f7973acbddb39784d73", - "0x000000000000000000000000000000000000000000000000000000000000003b": "0x00000000000000000000000000000000000000000000000067196bbe00000001", + "0x000000000000000000000000000000000000000000000000000000000000003b": "0x0000000000000000000000000000000000000000000000006719811b00000001", "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000fa16d7079aab573acdf911dd58e4457a20547548", "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000702ff7bf17315db7a068039006515a1c9a40c1c0" }, @@ -1266,7 +1266,7 @@ "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000001": "0x000000000000000000000000000000000000000000000000000000003b9aca00", "0x0000000000000000000000000000000000000000000000000000000000000032": "0x000000000000000000000000000000000000000000000000000000000000dead", - "0x000000000000000000000000000000000000000000000000000000000000003b": "0x00000000000000000000000000000000000000000000000067196bbe00000000" + "0x000000000000000000000000000000000000000000000000000000000000003b": "0x0000000000000000000000000000000000000000000000006719811b00000000" }, "balance": "0x0", "nonce": "0x1" diff --git a/genesis/generated/901-l2-genesis.json b/genesis/generated/901-l2-genesis.json index bd333ada..d4cbc5ea 100644 --- a/genesis/generated/901-l2-genesis.json +++ b/genesis/generated/901-l2-genesis.json @@ -35,7 +35,7 @@ } }, "nonce": "0x0", - "timestamp": "0x67196bbe", + "timestamp": "0x6719811b", "extraData": "0x00000000fa00000006", "gasLimit": "0x3938700", "difficulty": "0x0", @@ -15251,6 +15251,10 @@ "code": "0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c806340c10f191161009e57806395d89b411161006e57806395d89b411461023c5780639dc29fac1461025c578063a9059cbb1461026f578063d505accf14610282578063dd62ed3e14610295575f80fd5b806340c10f19146101b757806354fd4d50146101ca57806370a08231146101f25780637ecebe0014610217575f80fd5b806323b872dd116100d957806323b872dd1461017a5780632b8c49e31461018d578063313ce567146101a05780633644e515146101af575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806318bf507714610165575b5f80fd5b6101126102bd565b60405161011f91906108d0565b60405180910390f35b61013b610136366004610920565b6102f4565b604051901515815260200161011f565b6805345cdf77eb68f44c545b60405190815260200161011f565b610178610173366004610920565b610343565b005b61013b610188366004610948565b6103ba565b61017861019b366004610920565b61045f565b6040516012815260200161011f565b6101576104ca565b6101786101c5366004610920565b610546565b60408051808201909152600c81526b0c4b8c0b8c0b58995d184b8d60a21b6020820152610112565b610157610200366004610981565b6387a211a2600c9081525f91909152602090205490565b610157610225366004610981565b6338377508600c9081525f91909152602090205490565b6040805180820190915260048152634d4f434b60e01b6020820152610112565b61017861026a366004610920565b6105b2565b61013b61027d366004610920565b61061e565b6101786102903660046109a1565b610682565b6101576102a3366004610a0e565b602052637f5e9f20600c9081525f91909152603490205490565b60408051808201909152601781527f4c324e61746976655375706572636861696e4552433230000000000000000000602082015290565b5f82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b0114610369576040516282b42960e81b815260040160405180910390fd5b6103738282610806565b816001600160a01b03167f7ca16db12dad0e1c536f8062fd9e2e4fbb3d1a503b59df12a0cfa9f96abf1c59826040516103ae91815260200190565b60405180910390a25050565b5f8360601b33602052637f5e9f208117600c526034600c2080548019156103f657808511156103f0576313be252b5f526004601cfd5b84810382555b50506387a211a28117600c526020600c2080548085111561041e5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f80516020610a40833981519152602080a3505060019392505050565b336028602160991b0114610485576040516282b42960e81b815260040160405180910390fd5b61048f828261086f565b816001600160a01b03167f017c33ab728c93e2be949ec7e4a35b76d607957c5fac4253f5d623b4a3b13036826040516103ae91815260200190565b5f806104d46102bd565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6001600160a01b03821661056d5760405163d92e233d60e01b815260040160405180910390fd5b6105778282610806565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516103ae91815260200190565b6001600160a01b0382166105d95760405163d92e233d60e01b815260040160405180910390fd5b6105e3828261086f565b816001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516103ae91815260200190565b5f6387a211a2600c52335f526020600c208054808411156106465763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f80516020610a40833981519152602080a350600192915050565b5f61068b6102bd565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6428610156106ca57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d51146107b25763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b6805345cdf77eb68f44c54818101818110156108295763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f80516020610a40833981519152602080a35050565b6387a211a2600c52815f526020600c208054808311156108965763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f80516020610a40833981519152602083a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461091b575f80fd5b919050565b5f8060408385031215610931575f80fd5b61093a83610905565b946020939093013593505050565b5f805f6060848603121561095a575f80fd5b61096384610905565b925061097160208501610905565b9150604084013590509250925092565b5f60208284031215610991575f80fd5b61099a82610905565b9392505050565b5f805f805f805f60e0888a0312156109b7575f80fd5b6109c088610905565b96506109ce60208901610905565b95506040880135945060608801359350608088013560ff811681146109f1575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610a1f575f80fd5b610a2883610905565b9150610a3660208401610905565b9050925092905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e27d15f153a33c726af6e7c67afe08e9c27082b676fb37f860a4147c56280e5564736f6c63430008190033", "balance": "0x0" }, + "420beef000000000000000000000000000000002": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0" + }, "455eba79c8c448d60a5acc272911614b352b1f67": { "balance": "0x84595161401484a000000" }, @@ -15504,6 +15508,11 @@ "df3e18d64bc6a983f673ab319ccae4f1a57c7097": { "balance": "0x21e19e0c9bab2400000" }, + "e54514ffa7a7309e7bb26e4ff70f7653408b85bb": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0", + "nonce": "0x1" + }, "eb66d0e1c92bb4bc0b66986a6d197c460616c8e1": { "balance": "0x84595161401484a000000" }, diff --git a/genesis/generated/902-l2-genesis.json b/genesis/generated/902-l2-genesis.json index 75279656..4eef96ec 100644 --- a/genesis/generated/902-l2-genesis.json +++ b/genesis/generated/902-l2-genesis.json @@ -35,7 +35,7 @@ } }, "nonce": "0x0", - "timestamp": "0x67196bbe", + "timestamp": "0x6719811b", "extraData": "0x00000000fa00000006", "gasLimit": "0x3938700", "difficulty": "0x0", @@ -15263,6 +15263,10 @@ "code": "0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c806340c10f191161009e57806395d89b411161006e57806395d89b411461023c5780639dc29fac1461025c578063a9059cbb1461026f578063d505accf14610282578063dd62ed3e14610295575f80fd5b806340c10f19146101b757806354fd4d50146101ca57806370a08231146101f25780637ecebe0014610217575f80fd5b806323b872dd116100d957806323b872dd1461017a5780632b8c49e31461018d578063313ce567146101a05780633644e515146101af575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806318bf507714610165575b5f80fd5b6101126102bd565b60405161011f91906108d0565b60405180910390f35b61013b610136366004610920565b6102f4565b604051901515815260200161011f565b6805345cdf77eb68f44c545b60405190815260200161011f565b610178610173366004610920565b610343565b005b61013b610188366004610948565b6103ba565b61017861019b366004610920565b61045f565b6040516012815260200161011f565b6101576104ca565b6101786101c5366004610920565b610546565b60408051808201909152600c81526b0c4b8c0b8c0b58995d184b8d60a21b6020820152610112565b610157610200366004610981565b6387a211a2600c9081525f91909152602090205490565b610157610225366004610981565b6338377508600c9081525f91909152602090205490565b6040805180820190915260048152634d4f434b60e01b6020820152610112565b61017861026a366004610920565b6105b2565b61013b61027d366004610920565b61061e565b6101786102903660046109a1565b610682565b6101576102a3366004610a0e565b602052637f5e9f20600c9081525f91909152603490205490565b60408051808201909152601781527f4c324e61746976655375706572636861696e4552433230000000000000000000602082015290565b5f82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b0114610369576040516282b42960e81b815260040160405180910390fd5b6103738282610806565b816001600160a01b03167f7ca16db12dad0e1c536f8062fd9e2e4fbb3d1a503b59df12a0cfa9f96abf1c59826040516103ae91815260200190565b60405180910390a25050565b5f8360601b33602052637f5e9f208117600c526034600c2080548019156103f657808511156103f0576313be252b5f526004601cfd5b84810382555b50506387a211a28117600c526020600c2080548085111561041e5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f80516020610a40833981519152602080a3505060019392505050565b336028602160991b0114610485576040516282b42960e81b815260040160405180910390fd5b61048f828261086f565b816001600160a01b03167f017c33ab728c93e2be949ec7e4a35b76d607957c5fac4253f5d623b4a3b13036826040516103ae91815260200190565b5f806104d46102bd565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6001600160a01b03821661056d5760405163d92e233d60e01b815260040160405180910390fd5b6105778282610806565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516103ae91815260200190565b6001600160a01b0382166105d95760405163d92e233d60e01b815260040160405180910390fd5b6105e3828261086f565b816001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516103ae91815260200190565b5f6387a211a2600c52335f526020600c208054808411156106465763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f80516020610a40833981519152602080a350600192915050565b5f61068b6102bd565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6428610156106ca57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d51146107b25763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b6805345cdf77eb68f44c54818101818110156108295763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f80516020610a40833981519152602080a35050565b6387a211a2600c52815f526020600c208054808311156108965763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f80516020610a40833981519152602083a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461091b575f80fd5b919050565b5f8060408385031215610931575f80fd5b61093a83610905565b946020939093013593505050565b5f805f6060848603121561095a575f80fd5b61096384610905565b925061097160208501610905565b9150604084013590509250925092565b5f60208284031215610991575f80fd5b61099a82610905565b9392505050565b5f805f805f805f60e0888a0312156109b7575f80fd5b6109c088610905565b96506109ce60208901610905565b95506040880135945060608801359350608088013560ff811681146109f1575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610a1f575f80fd5b610a2883610905565b9150610a3660208401610905565b9050925092905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e27d15f153a33c726af6e7c67afe08e9c27082b676fb37f860a4147c56280e5564736f6c63430008190033", "balance": "0x0" }, + "420beef000000000000000000000000000000002": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0" + }, "4cf4bd900571a562febe9dc113c686f5d87337c0": { "balance": "0x84595161401484a000000" }, @@ -15504,6 +15508,11 @@ "df3e18d64bc6a983f673ab319ccae4f1a57c7097": { "balance": "0x21e19e0c9bab2400000" }, + "e54514ffa7a7309e7bb26e4ff70f7653408b85bb": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0", + "nonce": "0x1" + }, "ea2d3d728e8d7793a4daf5e275e2c0362618c539": { "balance": "0x84595161401484a000000" }, diff --git a/genesis/generated/903-l2-genesis.json b/genesis/generated/903-l2-genesis.json index f57a51b3..7cab7ec6 100644 --- a/genesis/generated/903-l2-genesis.json +++ b/genesis/generated/903-l2-genesis.json @@ -35,7 +35,7 @@ } }, "nonce": "0x0", - "timestamp": "0x67196bbe", + "timestamp": "0x6719811b", "extraData": "0x00000000fa00000006", "gasLimit": "0x3938700", "difficulty": "0x0", @@ -15248,6 +15248,10 @@ "code": "0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c806340c10f191161009e57806395d89b411161006e57806395d89b411461023c5780639dc29fac1461025c578063a9059cbb1461026f578063d505accf14610282578063dd62ed3e14610295575f80fd5b806340c10f19146101b757806354fd4d50146101ca57806370a08231146101f25780637ecebe0014610217575f80fd5b806323b872dd116100d957806323b872dd1461017a5780632b8c49e31461018d578063313ce567146101a05780633644e515146101af575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806318bf507714610165575b5f80fd5b6101126102bd565b60405161011f91906108d0565b60405180910390f35b61013b610136366004610920565b6102f4565b604051901515815260200161011f565b6805345cdf77eb68f44c545b60405190815260200161011f565b610178610173366004610920565b610343565b005b61013b610188366004610948565b6103ba565b61017861019b366004610920565b61045f565b6040516012815260200161011f565b6101576104ca565b6101786101c5366004610920565b610546565b60408051808201909152600c81526b0c4b8c0b8c0b58995d184b8d60a21b6020820152610112565b610157610200366004610981565b6387a211a2600c9081525f91909152602090205490565b610157610225366004610981565b6338377508600c9081525f91909152602090205490565b6040805180820190915260048152634d4f434b60e01b6020820152610112565b61017861026a366004610920565b6105b2565b61013b61027d366004610920565b61061e565b6101786102903660046109a1565b610682565b6101576102a3366004610a0e565b602052637f5e9f20600c9081525f91909152603490205490565b60408051808201909152601781527f4c324e61746976655375706572636861696e4552433230000000000000000000602082015290565b5f82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b0114610369576040516282b42960e81b815260040160405180910390fd5b6103738282610806565b816001600160a01b03167f7ca16db12dad0e1c536f8062fd9e2e4fbb3d1a503b59df12a0cfa9f96abf1c59826040516103ae91815260200190565b60405180910390a25050565b5f8360601b33602052637f5e9f208117600c526034600c2080548019156103f657808511156103f0576313be252b5f526004601cfd5b84810382555b50506387a211a28117600c526020600c2080548085111561041e5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f80516020610a40833981519152602080a3505060019392505050565b336028602160991b0114610485576040516282b42960e81b815260040160405180910390fd5b61048f828261086f565b816001600160a01b03167f017c33ab728c93e2be949ec7e4a35b76d607957c5fac4253f5d623b4a3b13036826040516103ae91815260200190565b5f806104d46102bd565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6001600160a01b03821661056d5760405163d92e233d60e01b815260040160405180910390fd5b6105778282610806565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516103ae91815260200190565b6001600160a01b0382166105d95760405163d92e233d60e01b815260040160405180910390fd5b6105e3828261086f565b816001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516103ae91815260200190565b5f6387a211a2600c52335f526020600c208054808411156106465763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f80516020610a40833981519152602080a350600192915050565b5f61068b6102bd565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6428610156106ca57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d51146107b25763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b6805345cdf77eb68f44c54818101818110156108295763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f80516020610a40833981519152602080a35050565b6387a211a2600c52815f526020600c208054808311156108965763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f80516020610a40833981519152602083a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461091b575f80fd5b919050565b5f8060408385031215610931575f80fd5b61093a83610905565b946020939093013593505050565b5f805f6060848603121561095a575f80fd5b61096384610905565b925061097160208501610905565b9150604084013590509250925092565b5f60208284031215610991575f80fd5b61099a82610905565b9392505050565b5f805f805f805f60e0888a0312156109b7575f80fd5b6109c088610905565b96506109ce60208901610905565b95506040880135945060608801359350608088013560ff811681146109f1575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610a1f575f80fd5b610a2883610905565b9150610a3660208401610905565b9050925092905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e27d15f153a33c726af6e7c67afe08e9c27082b676fb37f860a4147c56280e5564736f6c63430008190033", "balance": "0x0" }, + "420beef000000000000000000000000000000002": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0" + }, "474fea2d53f975cd0f2028446d40e284ba783ec7": { "balance": "0x84595161401484a000000" }, @@ -15504,6 +15508,11 @@ "df3e18d64bc6a983f673ab319ccae4f1a57c7097": { "balance": "0x21e19e0c9bab2400000" }, + "e54514ffa7a7309e7bb26e4ff70f7653408b85bb": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0", + "nonce": "0x1" + }, "e7239c0d35c1011921ced9bc34aa0f1c255695d1": { "balance": "0x84595161401484a000000" }, diff --git a/genesis/generated/904-l2-genesis.json b/genesis/generated/904-l2-genesis.json index c76decb6..98abf456 100644 --- a/genesis/generated/904-l2-genesis.json +++ b/genesis/generated/904-l2-genesis.json @@ -35,7 +35,7 @@ } }, "nonce": "0x0", - "timestamp": "0x67196bbe", + "timestamp": "0x6719811b", "extraData": "0x00000000fa00000006", "gasLimit": "0x3938700", "difficulty": "0x0", @@ -15251,6 +15251,10 @@ "code": "0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c806340c10f191161009e57806395d89b411161006e57806395d89b411461023c5780639dc29fac1461025c578063a9059cbb1461026f578063d505accf14610282578063dd62ed3e14610295575f80fd5b806340c10f19146101b757806354fd4d50146101ca57806370a08231146101f25780637ecebe0014610217575f80fd5b806323b872dd116100d957806323b872dd1461017a5780632b8c49e31461018d578063313ce567146101a05780633644e515146101af575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806318bf507714610165575b5f80fd5b6101126102bd565b60405161011f91906108d0565b60405180910390f35b61013b610136366004610920565b6102f4565b604051901515815260200161011f565b6805345cdf77eb68f44c545b60405190815260200161011f565b610178610173366004610920565b610343565b005b61013b610188366004610948565b6103ba565b61017861019b366004610920565b61045f565b6040516012815260200161011f565b6101576104ca565b6101786101c5366004610920565b610546565b60408051808201909152600c81526b0c4b8c0b8c0b58995d184b8d60a21b6020820152610112565b610157610200366004610981565b6387a211a2600c9081525f91909152602090205490565b610157610225366004610981565b6338377508600c9081525f91909152602090205490565b6040805180820190915260048152634d4f434b60e01b6020820152610112565b61017861026a366004610920565b6105b2565b61013b61027d366004610920565b61061e565b6101786102903660046109a1565b610682565b6101576102a3366004610a0e565b602052637f5e9f20600c9081525f91909152603490205490565b60408051808201909152601781527f4c324e61746976655375706572636861696e4552433230000000000000000000602082015290565b5f82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b0114610369576040516282b42960e81b815260040160405180910390fd5b6103738282610806565b816001600160a01b03167f7ca16db12dad0e1c536f8062fd9e2e4fbb3d1a503b59df12a0cfa9f96abf1c59826040516103ae91815260200190565b60405180910390a25050565b5f8360601b33602052637f5e9f208117600c526034600c2080548019156103f657808511156103f0576313be252b5f526004601cfd5b84810382555b50506387a211a28117600c526020600c2080548085111561041e5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f80516020610a40833981519152602080a3505060019392505050565b336028602160991b0114610485576040516282b42960e81b815260040160405180910390fd5b61048f828261086f565b816001600160a01b03167f017c33ab728c93e2be949ec7e4a35b76d607957c5fac4253f5d623b4a3b13036826040516103ae91815260200190565b5f806104d46102bd565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6001600160a01b03821661056d5760405163d92e233d60e01b815260040160405180910390fd5b6105778282610806565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516103ae91815260200190565b6001600160a01b0382166105d95760405163d92e233d60e01b815260040160405180910390fd5b6105e3828261086f565b816001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516103ae91815260200190565b5f6387a211a2600c52335f526020600c208054808411156106465763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f80516020610a40833981519152602080a350600192915050565b5f61068b6102bd565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6428610156106ca57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d51146107b25763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b6805345cdf77eb68f44c54818101818110156108295763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f80516020610a40833981519152602080a35050565b6387a211a2600c52815f526020600c208054808311156108965763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f80516020610a40833981519152602083a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461091b575f80fd5b919050565b5f8060408385031215610931575f80fd5b61093a83610905565b946020939093013593505050565b5f805f6060848603121561095a575f80fd5b61096384610905565b925061097160208501610905565b9150604084013590509250925092565b5f60208284031215610991575f80fd5b61099a82610905565b9392505050565b5f805f805f805f60e0888a0312156109b7575f80fd5b6109c088610905565b96506109ce60208901610905565b95506040880135945060608801359350608088013560ff811681146109f1575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610a1f575f80fd5b610a2883610905565b9150610a3660208401610905565b9050925092905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e27d15f153a33c726af6e7c67afe08e9c27082b676fb37f860a4147c56280e5564736f6c63430008190033", "balance": "0x0" }, + "420beef000000000000000000000000000000002": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0" + }, "4d745e9ad2506ceb8b68764b8a3eb5c8a9fe9889": { "balance": "0x84595161401484a000000" }, @@ -15507,6 +15511,11 @@ "df3e18d64bc6a983f673ab319ccae4f1a57c7097": { "balance": "0x21e19e0c9bab2400000" }, + "e54514ffa7a7309e7bb26e4ff70f7653408b85bb": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0", + "nonce": "0x1" + }, "ea9645e9f3d96cf8bab42a4dea3a886aa153b956": { "balance": "0x84595161401484a000000" }, diff --git a/genesis/generated/905-l2-genesis.json b/genesis/generated/905-l2-genesis.json index 4523bed2..bd683459 100644 --- a/genesis/generated/905-l2-genesis.json +++ b/genesis/generated/905-l2-genesis.json @@ -35,7 +35,7 @@ } }, "nonce": "0x0", - "timestamp": "0x67196bbe", + "timestamp": "0x6719811b", "extraData": "0x00000000fa00000006", "gasLimit": "0x3938700", "difficulty": "0x0", @@ -15251,6 +15251,10 @@ "code": "0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c806340c10f191161009e57806395d89b411161006e57806395d89b411461023c5780639dc29fac1461025c578063a9059cbb1461026f578063d505accf14610282578063dd62ed3e14610295575f80fd5b806340c10f19146101b757806354fd4d50146101ca57806370a08231146101f25780637ecebe0014610217575f80fd5b806323b872dd116100d957806323b872dd1461017a5780632b8c49e31461018d578063313ce567146101a05780633644e515146101af575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806318bf507714610165575b5f80fd5b6101126102bd565b60405161011f91906108d0565b60405180910390f35b61013b610136366004610920565b6102f4565b604051901515815260200161011f565b6805345cdf77eb68f44c545b60405190815260200161011f565b610178610173366004610920565b610343565b005b61013b610188366004610948565b6103ba565b61017861019b366004610920565b61045f565b6040516012815260200161011f565b6101576104ca565b6101786101c5366004610920565b610546565b60408051808201909152600c81526b0c4b8c0b8c0b58995d184b8d60a21b6020820152610112565b610157610200366004610981565b6387a211a2600c9081525f91909152602090205490565b610157610225366004610981565b6338377508600c9081525f91909152602090205490565b6040805180820190915260048152634d4f434b60e01b6020820152610112565b61017861026a366004610920565b6105b2565b61013b61027d366004610920565b61061e565b6101786102903660046109a1565b610682565b6101576102a3366004610a0e565b602052637f5e9f20600c9081525f91909152603490205490565b60408051808201909152601781527f4c324e61746976655375706572636861696e4552433230000000000000000000602082015290565b5f82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b0114610369576040516282b42960e81b815260040160405180910390fd5b6103738282610806565b816001600160a01b03167f7ca16db12dad0e1c536f8062fd9e2e4fbb3d1a503b59df12a0cfa9f96abf1c59826040516103ae91815260200190565b60405180910390a25050565b5f8360601b33602052637f5e9f208117600c526034600c2080548019156103f657808511156103f0576313be252b5f526004601cfd5b84810382555b50506387a211a28117600c526020600c2080548085111561041e5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f80516020610a40833981519152602080a3505060019392505050565b336028602160991b0114610485576040516282b42960e81b815260040160405180910390fd5b61048f828261086f565b816001600160a01b03167f017c33ab728c93e2be949ec7e4a35b76d607957c5fac4253f5d623b4a3b13036826040516103ae91815260200190565b5f806104d46102bd565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6001600160a01b03821661056d5760405163d92e233d60e01b815260040160405180910390fd5b6105778282610806565b816001600160a01b03167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885826040516103ae91815260200190565b6001600160a01b0382166105d95760405163d92e233d60e01b815260040160405180910390fd5b6105e3828261086f565b816001600160a01b03167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5826040516103ae91815260200190565b5f6387a211a2600c52335f526020600c208054808411156106465763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f80516020610a40833981519152602080a350600192915050565b5f61068b6102bd565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6428610156106ca57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d51146107b25763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b6805345cdf77eb68f44c54818101818110156108295763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f80516020610a40833981519152602080a35050565b6387a211a2600c52815f526020600c208054808311156108965763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f80516020610a40833981519152602083a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461091b575f80fd5b919050565b5f8060408385031215610931575f80fd5b61093a83610905565b946020939093013593505050565b5f805f6060848603121561095a575f80fd5b61096384610905565b925061097160208501610905565b9150604084013590509250925092565b5f60208284031215610991575f80fd5b61099a82610905565b9392505050565b5f805f805f805f60e0888a0312156109b7575f80fd5b6109c088610905565b96506109ce60208901610905565b95506040880135945060608801359350608088013560ff811681146109f1575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610a1f575f80fd5b610a2883610905565b9150610a3660208401610905565b9050925092905056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e27d15f153a33c726af6e7c67afe08e9c27082b676fb37f860a4147c56280e5564736f6c63430008190033", "balance": "0x0" }, + "420beef000000000000000000000000000000002": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0" + }, "4764b50355837fd3bbdd3977f1da4033b7dd4dcf": { "balance": "0x84595161401484a000000" }, @@ -15501,6 +15505,11 @@ "df3e18d64bc6a983f673ab319ccae4f1a57c7097": { "balance": "0x21e19e0c9bab2400000" }, + "e54514ffa7a7309e7bb26e4ff70f7653408b85bb": { + "code": "0x60806040526004361061002b575f3560e01c80631b0e888d1461006e578063df3bdd8c14610083575f80fd5b3661006a57604080513381523460208201527f60e4c1ac84c9e2c4c0aa82b86b3b1ddf0b1b73fbbeb74c8bc8f8f06041ccfdf6910160405180910390a1005b5f80fd5b61008161007c3660046104cf565b6100a2565b005b34801561008e575f80fd5b5061008161009d366004610524565b61024b565b6024602160991b016001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156100e2575f80fd5b505af11580156100f4573d5f803e3d5ffd5b5050604051631834867b60e31b81526024602160991b016004820152306024820152346044820152606481018690525f93506028602160991b01925063c1a433d891506084016020604051808303815f875af1158015610156573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017a9190610583565b90506023602160991b016001600160a01b0316637056f41f8430306001600160a01b031663df3bdd8c868a348a6040516024016101ba94939291906105c8565b60408051808303601f1901815291815260208201805160e094851b6001600160e01b03909116179052519186901b6001600160e01b031916825261020494939250906004016105fe565b6020604051808303815f875af1158015610220573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102449190610583565b5050505050565b6023602160991b01338114610272576040516282b42960e81b815260040160405180910390fd5b306001600160a01b0316816001600160a01b03166338ffde186040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102dc9190610630565b6001600160a01b031614610302576040516282b42960e81b815260040160405180910390fd5b60405163b1b1b20960e01b8152600481018690526001600160a01b0382169063b1b1b20990602401602060405180830381865afa158015610345573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103699190610652565b15155f0361038a5760405163024ea77560e31b815260040160405180910390fd5b604051632e1a7d4d60e01b8152600481018490526024602160991b0190632e1a7d4d906024015f604051808303815f87803b1580156103c7575f80fd5b505af11580156103d9573d5f803e3d5ffd5b505050506103e88484846103f0565b505050505050565b5f6103fd845a8585610405565b949350505050565b5f805f835160208501868989f195945050505050565b6001600160a01b038116811461042f575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610455575f80fd5b813567ffffffffffffffff8082111561047057610470610432565b604051601f8301601f19908116603f0116810190828211818310171561049857610498610432565b816040528381528660208588010111156104b0575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f805f606084860312156104e1575f80fd5b83356104ec8161041b565b925060208401359150604084013567ffffffffffffffff81111561050e575f80fd5b61051a86828701610446565b9150509250925092565b5f805f8060808587031215610537575f80fd5b8435935060208501356105498161041b565b925060408501359150606085013567ffffffffffffffff81111561056b575f80fd5b61057787828801610446565b91505092959194509250565b5f60208284031215610593575f80fd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b84815260018060a01b0384166020820152826040820152608060608201525f6105f4608083018461059a565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190525f906106279083018461059a565b95945050505050565b5f60208284031215610640575f80fd5b815161064b8161041b565b9392505050565b5f60208284031215610662575f80fd5b8151801515811461064b575f80fdfea26469706673582212208a2e40a14a86f44a2e09d0eaf5b61d5957afbe640fee2bcbb34284afa70263e764736f6c63430008190033", + "balance": "0x0", + "nonce": "0x1" + }, "e699f85426ee20d560df2319cb1aa1d9257f6ef5": { "balance": "0x84595161401484a000000" }, diff --git a/readme_test.go b/readme_test.go index 34a0cf64..53c7eabf 100644 --- a/readme_test.go +++ b/readme_test.go @@ -88,3 +88,34 @@ func TestL2ToL2Transfer(t *testing.T) { }) assert.NoError(t, waitErr) } + +func TestSuperchainETHTransfer(t *testing.T) { + _ = createTestSuite(t, &config.CLIConfig{ + L1Port: 8545, + L2StartingPort: 9545, + InteropAutoRelay: true, + }) + + // Check initial balance on chain 902 + initialBalanceCmd := `cast balance 0xCE35738E4bC96bB0a194F71B3d184809F3727f56 --rpc-url http://127.0.0.1:9546` + initialBalance, err := runCmd(initialBalanceCmd) + assert.NoError(t, err) + assert.Equal(t, "0", initialBalance, "Initial balance check failed") + + // Initiate the send transaction on chain 901 + sendCmd := `cast send 0x420beeF000000000000000000000000000000002 "sendETH(address,uint256,bytes)" 0xCE35738E4bC96bB0a194F71B3d184809F3727f56 902 0x --value 10ether --rpc-url http://127.0.0.1:9545 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80` + _, err = runCmd(sendCmd) + assert.NoError(t, err) + + // Check the final balance on chain 902 + waitErr := testutils.WaitForWithTimeout(context.Background(), 500*time.Millisecond, 10*time.Second, func() (bool, error) { + finalBalanceCmd := `cast balance 0xCE35738E4bC96bB0a194F71B3d184809F3727f56 --rpc-url http://127.0.0.1:9546` + finalBalance, err := runCmd(finalBalanceCmd) + if err != nil { + return false, err + } + + return finalBalance == "10000000000000000000", nil + }) + assert.NoError(t, waitErr) +}