From 13f49e39ee9d6bf55150f2e827a33ade13e8bc83 Mon Sep 17 00:00:00 2001 From: hazim Date: Fri, 1 Aug 2025 12:20:20 +1000 Subject: [PATCH 01/42] Findings 7: Cache array length in for loops (#22) --- snapshots/Keystore32NodeUCMT.json | 4 ++-- src/core/Keystore.sol | 3 ++- src/verifier/UserOpMultiSigVerifier.sol | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/snapshots/Keystore32NodeUCMT.json b/snapshots/Keystore32NodeUCMT.json index 5e131a7..0f26ec4 100644 --- a/snapshots/Keystore32NodeUCMT.json +++ b/snapshots/Keystore32NodeUCMT.json @@ -2,6 +2,6 @@ "1. registerNode": "77515", "2. validate (with proof)": "12407", "3. validate (without proof)": "5284", - "4. handleUpdates (with proof)": "64273", - "5. handleUpdates (without proof)": "55318" + "4. handleUpdates (with proof)": "64278", + "5. handleUpdates (without proof)": "55323" } \ No newline at end of file diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index 704aa1c..3cd9875 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -15,7 +15,8 @@ contract Keystore is IKeystore { mapping(bytes32 => mapping(bytes32 => mapping(address => bytes))) internal _nodeCache; function handleUpdates(UpdateAction[] calldata actions) external { - for (uint256 i = 0; i < actions.length; i++) { + uint256 length = actions.length; + for (uint256 i = 0; i < length; i++) { UpdateAction calldata action = actions[i]; (uint192 nonceKey, uint64 nonceSeq) = _unpackNonceKey(action.nonce); uint64 currSeq = _validateAndGetNonce(action.refHash, action.account, nonceKey, nonceSeq); diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index 7d3bce2..f409a4a 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -44,7 +44,8 @@ contract UserOpMultiSigVerifier is IVerifier { uint8 valid = 0; uint8 invalid = 0; bool[] memory seen = new bool[](owners.length); - for (uint256 i = 0; i < signatures.length; i++) { + uint256 length = signatures.length; + for (uint256 i = 0; i < length; i++) { SignerData memory sd = signatures[i]; // Note: we need to ensure gas usage is consistent during simulation with dummy signers. From a8f698b7b7e2ee11f9dab5ce0c2eb36013383cae Mon Sep 17 00:00:00 2001 From: hazim Date: Fri, 1 Aug 2025 12:28:18 +1000 Subject: [PATCH 02/42] Findings 16: use verifyCalldata in registerNode (#24) --- snapshots/Keystore32NodeUCMT.json | 2 +- src/core/Keystore.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/snapshots/Keystore32NodeUCMT.json b/snapshots/Keystore32NodeUCMT.json index 0f26ec4..f8f8738 100644 --- a/snapshots/Keystore32NodeUCMT.json +++ b/snapshots/Keystore32NodeUCMT.json @@ -1,5 +1,5 @@ { - "1. registerNode": "77515", + "1. registerNode": "77284", "2. validate (with proof)": "12407", "3. validate (without proof)": "5284", "4. handleUpdates (with proof)": "64278", diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index 3cd9875..31a9c8c 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -53,7 +53,7 @@ contract Keystore is IKeystore { bytes32 rootHash = _getCurrentRootHash(refHash, msg.sender); bytes32 nodeHash = keccak256(node); - require(MerkleProofLib.verify(proof, rootHash, nodeHash), InvalidProof()); + require(MerkleProofLib.verifyCalldata(proof, rootHash, nodeHash), InvalidProof()); _nodeCache[rootHash][nodeHash][msg.sender] = node; } From 871f2187c16e77c64c3e547f42799fd6660dca5e Mon Sep 17 00:00:00 2001 From: hazim Date: Fri, 1 Aug 2025 17:21:58 +1000 Subject: [PATCH 03/42] Findings 1: Consistent custom errors everywhere (#25) --- src/account/KeystoreAccountFactory.sol | 4 +++- src/lib/OnlyKeystore.sol | 17 +++++++++++++++++ src/verifier/UserOpECDSAVerifier.sol | 14 +++----------- src/verifier/UserOpMultiSigVerifier.sol | 13 +++---------- src/verifier/UserOpWebAuthnCosignVerifier.sol | 13 +++---------- src/verifier/UserOpWebAuthnVerifier.sol | 14 +++----------- test/account/KeystoreAccountFactory.t.sol | 2 +- test/verifier/UserOpECDSAVerifier.t.sol | 3 ++- test/verifier/UserOpMultiSigVerifier.t.sol | 3 ++- .../verifier/UserOpWebAuthnCosignVerifier.t.sol | 3 ++- test/verifier/UserOpWebAuthnVerifier.t.sol | 3 ++- 11 files changed, 41 insertions(+), 48 deletions(-) create mode 100644 src/lib/OnlyKeystore.sol diff --git a/src/account/KeystoreAccountFactory.sol b/src/account/KeystoreAccountFactory.sol index 59f7576..4acf33d 100644 --- a/src/account/KeystoreAccountFactory.sol +++ b/src/account/KeystoreAccountFactory.sol @@ -10,6 +10,8 @@ import {IKeystore} from "../interface/IKeystore.sol"; import {KeystoreAccount} from "./KeystoreAccount.sol"; contract KeystoreAccountFactory { + error NotFromSenderCreator(); + KeystoreAccount public immutable accountImplementation; IEntryPoint public immutable entryPoint; ISenderCreator public immutable senderCreator; @@ -21,7 +23,7 @@ contract KeystoreAccountFactory { } function createAccount(bytes32 refHash, uint256 salt) public returns (KeystoreAccount ret) { - require(msg.sender == address(senderCreator), "only callable from SenderCreator"); + require(msg.sender == address(senderCreator), NotFromSenderCreator()); address addr = getAddress(refHash, salt); uint256 codeSize = addr.code.length; if (codeSize > 0) { diff --git a/src/lib/OnlyKeystore.sol b/src/lib/OnlyKeystore.sol new file mode 100644 index 0000000..b18c50a --- /dev/null +++ b/src/lib/OnlyKeystore.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +abstract contract OnlyKeystore { + error NotFromKeystore(); + + address public immutable keystore; + + constructor(address aKeystore) { + keystore = aKeystore; + } + + modifier onlyKeystore() { + require(msg.sender == keystore, NotFromKeystore()); + _; + } +} diff --git a/src/verifier/UserOpECDSAVerifier.sol b/src/verifier/UserOpECDSAVerifier.sol index 1a1bd83..d97bc3d 100644 --- a/src/verifier/UserOpECDSAVerifier.sol +++ b/src/verifier/UserOpECDSAVerifier.sol @@ -6,18 +6,10 @@ import {PackedUserOperation} from "account-abstraction/interfaces/PackedUserOper import {ECDSA} from "solady/utils/ECDSA.sol"; import {IVerifier} from "../interface/IVerifier.sol"; +import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; -contract UserOpECDSAVerifier is IVerifier { - address public immutable keystore; - - modifier onlyKeystore() { - require(msg.sender == keystore, "verifier: not from Keystore"); - _; - } - - constructor(address aKeystore) { - keystore = aKeystore; - } +contract UserOpECDSAVerifier is IVerifier, OnlyKeystore { + constructor(address aKeystore) OnlyKeystore(aKeystore) {} function validateData(bytes32 message, bytes calldata data, bytes calldata config) external diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index f409a4a..5bd4524 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -6,24 +6,17 @@ import {PackedUserOperation} from "account-abstraction/interfaces/PackedUserOper import {ECDSA} from "solady/utils/ECDSA.sol"; import {IVerifier} from "../interface/IVerifier.sol"; +import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; -contract UserOpMultiSigVerifier is IVerifier { +contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { bytes1 public constant SIGNATURES_ONLY_TAG = 0xff; - address public immutable keystore; struct SignerData { uint8 index; bytes signature; } - modifier onlyKeystore() { - require(msg.sender == keystore, "verifier: not from Keystore"); - _; - } - - constructor(address aKeystore) { - keystore = aKeystore; - } + constructor(address aKeystore) OnlyKeystore(aKeystore) {} function validateData(bytes32 message, bytes calldata data, bytes calldata config) external diff --git a/src/verifier/UserOpWebAuthnCosignVerifier.sol b/src/verifier/UserOpWebAuthnCosignVerifier.sol index 7b897ae..e08581c 100644 --- a/src/verifier/UserOpWebAuthnCosignVerifier.sol +++ b/src/verifier/UserOpWebAuthnCosignVerifier.sol @@ -8,19 +8,12 @@ import {LibBytes} from "solady/utils/LibBytes.sol"; import {WebAuthn} from "solady/utils/WebAuthn.sol"; import {IVerifier} from "../interface/IVerifier.sol"; +import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; -contract UserOpWebAuthnCosignVerifier is IVerifier { +contract UserOpWebAuthnCosignVerifier is IVerifier, OnlyKeystore { bytes1 public constant SIGNATURES_ONLY_TAG = 0xff; - address public immutable keystore; - modifier onlyKeystore() { - require(msg.sender == keystore, "verifier: not from Keystore"); - _; - } - - constructor(address aKeystore) { - keystore = aKeystore; - } + constructor(address aKeystore) OnlyKeystore(aKeystore) {} function validateData(bytes32 message, bytes calldata data, bytes calldata config) external diff --git a/src/verifier/UserOpWebAuthnVerifier.sol b/src/verifier/UserOpWebAuthnVerifier.sol index 41a0244..2639f7d 100644 --- a/src/verifier/UserOpWebAuthnVerifier.sol +++ b/src/verifier/UserOpWebAuthnVerifier.sol @@ -6,18 +6,10 @@ import {PackedUserOperation} from "account-abstraction/interfaces/PackedUserOper import {WebAuthn} from "solady/utils/WebAuthn.sol"; import {IVerifier} from "../interface/IVerifier.sol"; +import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; -contract UserOpWebAuthnVerifier is IVerifier { - address public immutable keystore; - - modifier onlyKeystore() { - require(msg.sender == keystore, "verifier: not from Keystore"); - _; - } - - constructor(address aKeystore) { - keystore = aKeystore; - } +contract UserOpWebAuthnVerifier is IVerifier, OnlyKeystore { + constructor(address aKeystore) OnlyKeystore(aKeystore) {} function validateData(bytes32 message, bytes calldata data, bytes calldata config) external diff --git a/test/account/KeystoreAccountFactory.t.sol b/test/account/KeystoreAccountFactory.t.sol index b6e5df5..a5e4315 100644 --- a/test/account/KeystoreAccountFactory.t.sol +++ b/test/account/KeystoreAccountFactory.t.sol @@ -58,7 +58,7 @@ contract KeystoreAccountFactoryTest is Test { vm.assume(caller != address(entryPoint.senderCreator())); vm.prank(caller); - vm.expectRevert("only callable from SenderCreator"); + vm.expectRevert(KeystoreAccountFactory.NotFromSenderCreator.selector); factory.createAccount(refHash, salt); } } diff --git a/test/verifier/UserOpECDSAVerifier.t.sol b/test/verifier/UserOpECDSAVerifier.t.sol index 6f3fe44..d9710b9 100644 --- a/test/verifier/UserOpECDSAVerifier.t.sol +++ b/test/verifier/UserOpECDSAVerifier.t.sol @@ -6,6 +6,7 @@ import {PackedUserOperation} from "account-abstraction/interfaces/PackedUserOper import {Test} from "forge-std/Test.sol"; import {ECDSA} from "solady/utils/ECDSA.sol"; +import {OnlyKeystore} from "../../src/lib/OnlyKeystore.sol"; import {UserOpECDSAVerifier} from "../../src/verifier/UserOpECDSAVerifier.sol"; contract UserOpECDSAVerifierTest is Test { @@ -50,7 +51,7 @@ contract UserOpECDSAVerifierTest is Test { function testFuzz_validateDataInvalidCaller(address keystore) public { vm.assume(keystore != address(this)); vm.prank(keystore); - vm.expectRevert("verifier: not from Keystore"); + vm.expectRevert(OnlyKeystore.NotFromKeystore.selector); verifier.validateData(0, "", ""); } diff --git a/test/verifier/UserOpMultiSigVerifier.t.sol b/test/verifier/UserOpMultiSigVerifier.t.sol index f70dd83..3e7ae45 100644 --- a/test/verifier/UserOpMultiSigVerifier.t.sol +++ b/test/verifier/UserOpMultiSigVerifier.t.sol @@ -7,6 +7,7 @@ import {Test} from "forge-std/Test.sol"; import {ECDSA} from "solady/utils/ECDSA.sol"; import {LibString} from "solady/utils/LibString.sol"; +import {OnlyKeystore} from "../../src/lib/OnlyKeystore.sol"; import {UserOpMultiSigVerifier} from "../../src/verifier/UserOpMultiSigVerifier.sol"; contract UserOpMultiSigVerifierTest is Test { @@ -64,7 +65,7 @@ contract UserOpMultiSigVerifierTest is Test { function testFuzz_validateDataInvalidCaller(address keystore) public { vm.assume(keystore != address(this)); vm.prank(keystore); - vm.expectRevert("verifier: not from Keystore"); + vm.expectRevert(OnlyKeystore.NotFromKeystore.selector); verifier.validateData(0, "", ""); } diff --git a/test/verifier/UserOpWebAuthnCosignVerifier.t.sol b/test/verifier/UserOpWebAuthnCosignVerifier.t.sol index c2e57fb..1db638d 100644 --- a/test/verifier/UserOpWebAuthnCosignVerifier.t.sol +++ b/test/verifier/UserOpWebAuthnCosignVerifier.t.sol @@ -11,6 +11,7 @@ import {LibString} from "solady/utils/LibString.sol"; import {P256} from "solady/utils/P256.sol"; import {WebAuthn} from "solady/utils/WebAuthn.sol"; +import {OnlyKeystore} from "../../src/lib/OnlyKeystore.sol"; import {UserOpWebAuthnCosignVerifier} from "../../src/verifier/UserOpWebAuthnCosignVerifier.sol"; contract UserOpWebAuthnCosignVerifierTest is Test { @@ -97,7 +98,7 @@ contract UserOpWebAuthnCosignVerifierTest is Test { function testFuzz_validateDataInvalidCaller(address keystore) public { vm.assume(keystore != address(this)); vm.prank(keystore); - vm.expectRevert("verifier: not from Keystore"); + vm.expectRevert(OnlyKeystore.NotFromKeystore.selector); verifier.validateData(0, "", ""); } diff --git a/test/verifier/UserOpWebAuthnVerifier.t.sol b/test/verifier/UserOpWebAuthnVerifier.t.sol index 5e1a9aa..6d2152d 100644 --- a/test/verifier/UserOpWebAuthnVerifier.t.sol +++ b/test/verifier/UserOpWebAuthnVerifier.t.sol @@ -11,6 +11,7 @@ import {LibString} from "solady/utils/LibString.sol"; import {P256} from "solady/utils/P256.sol"; import {WebAuthn} from "solady/utils/WebAuthn.sol"; +import {OnlyKeystore} from "../../src/lib/OnlyKeystore.sol"; import {UserOpWebAuthnVerifier} from "../../src/verifier/UserOpWebAuthnVerifier.sol"; contract UserOpWebAuthnVerifierTest is Test { @@ -70,7 +71,7 @@ contract UserOpWebAuthnVerifierTest is Test { function testFuzz_validateDataInvalidCaller(address keystore) public { vm.assume(keystore != address(this)); vm.prank(keystore); - vm.expectRevert("verifier: not from Keystore"); + vm.expectRevert(OnlyKeystore.NotFromKeystore.selector); verifier.validateData(0, "", ""); } From 50169ad938ac635d02cb540bff6212eadabeb734 Mon Sep 17 00:00:00 2001 From: hazim Date: Fri, 1 Aug 2025 17:30:08 +1000 Subject: [PATCH 04/42] Findings 2: Use max uint32 for permanent entryPoint stake (#26) --- src/account/KeystoreAccountFactory.sol | 4 ++-- test/account/KeystoreAccountFactory.t.sol | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/account/KeystoreAccountFactory.sol b/src/account/KeystoreAccountFactory.sol index 4acf33d..1931605 100644 --- a/src/account/KeystoreAccountFactory.sol +++ b/src/account/KeystoreAccountFactory.sol @@ -50,7 +50,7 @@ contract KeystoreAccountFactory { ); } - function addPermanentEntryPointStake(uint32 unstakeDelaySec) external payable { - entryPoint.addStake{value: msg.value}(unstakeDelaySec); + function addPermanentEntryPointStake() external payable { + entryPoint.addStake{value: msg.value}(type(uint32).max); } } diff --git a/test/account/KeystoreAccountFactory.t.sol b/test/account/KeystoreAccountFactory.t.sol index a5e4315..7153249 100644 --- a/test/account/KeystoreAccountFactory.t.sol +++ b/test/account/KeystoreAccountFactory.t.sol @@ -20,16 +20,16 @@ contract KeystoreAccountFactoryTest is Test { factory = new KeystoreAccountFactory(entryPoint, keystore); } - function testFuzz_addPermanentEntryPointStake(uint32 unstakeDelaySec, uint112 value) public { - vm.assume(unstakeDelaySec > 0 && value > 0); + function testFuzz_addPermanentEntryPointStake(uint112 value) public { + vm.assume(value > 0); vm.deal(address(this), value); - factory.addPermanentEntryPointStake{value: value}(unstakeDelaySec); + factory.addPermanentEntryPointStake{value: value}(); IStakeManager.DepositInfo memory stake = entryPoint.getDepositInfo(address(factory)); assertEq(stake.deposit, 0); assertEq(stake.staked, true); assertEq(stake.stake, value); - assertEq(stake.unstakeDelaySec, unstakeDelaySec); + assertEq(stake.unstakeDelaySec, type(uint32).max); assertEq(stake.withdrawTime, 0); } From 65d89196ba419699e2adf809fdb650b167223682 Mon Sep 17 00:00:00 2001 From: hazim Date: Fri, 1 Aug 2025 17:48:15 +1000 Subject: [PATCH 05/42] Findings 3: rename _refHash to refHash (#27) --- src/account/KeystoreAccount.sol | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/account/KeystoreAccount.sol b/src/account/KeystoreAccount.sol index 2b21900..7b53d1d 100644 --- a/src/account/KeystoreAccount.sol +++ b/src/account/KeystoreAccount.sol @@ -13,7 +13,7 @@ import {ERC1271} from "../lib/ERC1271.sol"; import {KeystoreUserOperation} from "../lib/KeystoreUserOperation.sol"; contract KeystoreAccount is BaseAccount, ERC1271, Initializable { - bytes32 public _refHash; + bytes32 public refHash; IEntryPoint private immutable _entryPoint; IKeystore private immutable _keystore; @@ -39,8 +39,8 @@ contract KeystoreAccount is BaseAccount, ERC1271, Initializable { } function initialize(bytes32 aRefHash) public virtual initializer { - _refHash = aRefHash; - emit KeystoreAccountInitialized(_entryPoint, _keystore, _refHash); + refHash = aRefHash; + emit KeystoreAccountInitialized(_entryPoint, _keystore, refHash); } function _validateSignature(PackedUserOperation calldata userOp, bytes32 userOpHash) @@ -49,9 +49,9 @@ contract KeystoreAccount is BaseAccount, ERC1271, Initializable { override returns (uint256 validationData) { - ValidateAction memory action = KeystoreUserOperation.prepareValidateAction(userOp, userOpHash, _refHash); + ValidateAction memory action = KeystoreUserOperation.prepareValidateAction(userOp, userOpHash, refHash); if (action.proof.length != 0) { - IKeystore(_keystore).registerNode(_refHash, abi.decode(action.proof, (bytes32[])), action.node); + IKeystore(_keystore).registerNode(refHash, abi.decode(action.proof, (bytes32[])), action.node); action.proof = ""; action.node = abi.encode(keccak256(action.node)); } @@ -68,7 +68,7 @@ contract KeystoreAccount is BaseAccount, ERC1271, Initializable { { (bytes memory proof, bytes memory node, bytes memory data) = abi.decode(signature, (bytes, bytes, bytes)); ValidateAction memory action = - ValidateAction({refHash: _refHash, message: hash, proof: proof, node: node, data: data}); + ValidateAction({refHash: refHash, message: hash, proof: proof, node: node, data: data}); if (IKeystore(_keystore).validate(action) == SIG_VALIDATION_FAILED) { return ERC1271_INVALID_VALUE; } From 41424bc8975198a8f78c8e9ad0c4098197d22224 Mon Sep 17 00:00:00 2001 From: hazim Date: Sun, 3 Aug 2025 12:19:15 +1000 Subject: [PATCH 06/42] Findings 5: document cache mechanism in spec.md (#28) --- doc/spec.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/doc/spec.md b/doc/spec.md index 3600a22..055cbe4 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -100,15 +100,25 @@ struct ValidateAction { interface Keystore { error InvalidNonce(); error InvalidProof(); + error UnregisteredProof(); error InvalidNode(); error InvalidVerifier(); event RootHashUpdated( - bytes32 indexed refHash, bytes32 nextHash, uint256 nonce, bytes32[] proof, bytes node, bytes data, bool success + bytes32 indexed refHash, bytes32 nextHash, uint256 nonce, bytes proof, bytes node, bytes data, bool success ); function handleUpdates(UpdateAction[] calldata actions) external; function validate(ValidateAction calldata action) external view returns (uint256 validationData); + + function registerNode(bytes32 refHash, bytes32[] calldata proof, bytes calldata node) external; + function getRegisteredNode(bytes32 refHash, address account, bytes calldata node) + external + view + returns (bytes memory); + + function getRootHash(bytes32 refHash, address account) external view returns (bytes32 rootHash); + function getNonce(bytes32 refHash, address account, uint192 key) external view returns (uint256 nonce); } ``` @@ -180,6 +190,17 @@ sequenceDiagram During the account's validation phase, it makes a call to the `validate` function on the `Keystore`. The `Keystore` MUST verify the UCMT proof. If ok, then the `Keystore` calls `validateData` on the `Verifier` encoded in the `node`. This will check if the given signature for the message is valid and returns the corresponding validationData value. +#### Optional node caching mechanism + +In the common case where a node is used for many transactions, it is a waste of gas to submit the same proof and node every time. Instead the `Keystore` has an optional method to cache a node with `registerNode`. This method will validate the UCMT proof and cache the `node` for a given `refHash` and `msg.sender`. + +During a validation flow, the `Keystore` will use the following logic to decide wether or not to use the cache: + +- **No cache**: If `action.proof` is NOT empty, then assume `action.node` is the actual `node` and run Merkle tree validation. +- **With cache**: If `action.proof` is empty, then assume `action.node` is the hashed `keccak256` node. This is used to fetch the actual `node` from the cache and skip Merkle tree validation. + +Caching a node is optional since not all nodes can be assumed to be reused. Some use cases, such as an N/M guardian set for recovery, might be intended to only be used once. In such a case, the gas cost of caching is not required. + ### Stateless `Verifier` The `Verifier` is a contract that enables any arbitrary signature scheme with no requirement for persistent onchain storage. Instead the `Verifier` can trust that the config passed by the `Keystore` has been cryptographically verified by the UCMT proof. From f2dac329bcc374a2868823393bc58aa6fbca2c85 Mon Sep 17 00:00:00 2001 From: hazim Date: Sun, 3 Aug 2025 12:32:04 +1000 Subject: [PATCH 07/42] Findings 6: clarify conversion of node hash bytes conversion (#29) --- src/account/KeystoreAccount.sol | 2 +- src/core/Keystore.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/account/KeystoreAccount.sol b/src/account/KeystoreAccount.sol index 7b53d1d..4793b70 100644 --- a/src/account/KeystoreAccount.sol +++ b/src/account/KeystoreAccount.sol @@ -53,7 +53,7 @@ contract KeystoreAccount is BaseAccount, ERC1271, Initializable { if (action.proof.length != 0) { IKeystore(_keystore).registerNode(refHash, abi.decode(action.proof, (bytes32[])), action.node); action.proof = ""; - action.node = abi.encode(keccak256(action.node)); + action.node = bytes.concat(keccak256(action.node)); // convert from bytes32 to bytes } return IKeystore(_keystore).validate(action); diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index 31a9c8c..80c5e8a 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -117,7 +117,7 @@ contract Keystore is IKeystore { returns (bytes32 nodeHash, bytes memory node) { if (aProof.length == 0) { - nodeHash = bytes32(aNode); + nodeHash = bytes32(aNode); // convert from bytes to bytes32 node = _nodeCache[_getCurrentRootHash(refHash, account)][nodeHash][account]; require(node.length >= 20, UnregisteredProof()); } else { From 2a1a3aabceec34eae15cdd5c3a8ffa0f4aab8ee6 Mon Sep 17 00:00:00 2001 From: hazim Date: Sun, 3 Aug 2025 13:09:05 +1000 Subject: [PATCH 08/42] Findings 10: document contract dependencies for P256 verifiers (#30) --- src/verifier/UserOpWebAuthnCosignVerifier.sol | 6 ++++++ src/verifier/UserOpWebAuthnVerifier.sol | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/verifier/UserOpWebAuthnCosignVerifier.sol b/src/verifier/UserOpWebAuthnCosignVerifier.sol index e08581c..6f57c33 100644 --- a/src/verifier/UserOpWebAuthnCosignVerifier.sol +++ b/src/verifier/UserOpWebAuthnCosignVerifier.sol @@ -10,6 +10,12 @@ import {WebAuthn} from "solady/utils/WebAuthn.sol"; import {IVerifier} from "../interface/IVerifier.sol"; import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; +/** + * @dev This contract depends on the Solady P256.sol library which itself has a + * dependency on a VERIFIER and CANARY contract to properly handle the case where + * the RIP-7212 precompile might or might not be present. + * See https://github.com/Vectorized/solady/blob/v0.1.19/src/utils/P256.sol for details. + */ contract UserOpWebAuthnCosignVerifier is IVerifier, OnlyKeystore { bytes1 public constant SIGNATURES_ONLY_TAG = 0xff; diff --git a/src/verifier/UserOpWebAuthnVerifier.sol b/src/verifier/UserOpWebAuthnVerifier.sol index 2639f7d..8dcd766 100644 --- a/src/verifier/UserOpWebAuthnVerifier.sol +++ b/src/verifier/UserOpWebAuthnVerifier.sol @@ -8,6 +8,12 @@ import {WebAuthn} from "solady/utils/WebAuthn.sol"; import {IVerifier} from "../interface/IVerifier.sol"; import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; +/** + * @dev This contract depends on the Solady P256.sol library which itself has a + * dependency on a VERIFIER and CANARY contract to properly handle the case where + * the RIP-7212 precompile might or might not be present. + * See https://github.com/Vectorized/solady/blob/v0.1.19/src/utils/P256.sol for details. + */ contract UserOpWebAuthnVerifier is IVerifier, OnlyKeystore { constructor(address aKeystore) OnlyKeystore(aKeystore) {} From 70fa4d3ff49fd31e17afd68df4dc12e4973f9824 Mon Sep 17 00:00:00 2001 From: hazim Date: Sun, 3 Aug 2025 17:29:51 +1000 Subject: [PATCH 09/42] Findings 15: use native slicing in registerNode (#31) --- snapshots/Keystore32NodeUCMT.json | 2 +- src/core/Keystore.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/snapshots/Keystore32NodeUCMT.json b/snapshots/Keystore32NodeUCMT.json index f8f8738..67cf647 100644 --- a/snapshots/Keystore32NodeUCMT.json +++ b/snapshots/Keystore32NodeUCMT.json @@ -1,5 +1,5 @@ { - "1. registerNode": "77284", + "1. registerNode": "76946", "2. validate (with proof)": "12407", "3. validate (without proof)": "5284", "4. handleUpdates (with proof)": "64278", diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index 80c5e8a..35ff02a 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -49,7 +49,7 @@ contract Keystore is IKeystore { function registerNode(bytes32 refHash, bytes32[] calldata proof, bytes calldata node) external { require(node.length >= 20, InvalidNode()); - require(address(bytes20(LibBytes.slice(node, 0, 20))) != address(0), InvalidVerifier()); + require(address(bytes20(node[0:20])) != address(0), InvalidVerifier()); bytes32 rootHash = _getCurrentRootHash(refHash, msg.sender); bytes32 nodeHash = keccak256(node); From eb82bdea634ea1f2ce5fcb6bebb55c22c446a4a2 Mon Sep 17 00:00:00 2001 From: hazim Date: Sun, 3 Aug 2025 17:41:48 +1000 Subject: [PATCH 10/42] Findings 17: add comment to address intentional missing short-circuit (#32) --- src/verifier/UserOpWebAuthnCosignVerifier.sol | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/verifier/UserOpWebAuthnCosignVerifier.sol b/src/verifier/UserOpWebAuthnCosignVerifier.sol index 6f57c33..b27a84f 100644 --- a/src/verifier/UserOpWebAuthnCosignVerifier.sol +++ b/src/verifier/UserOpWebAuthnCosignVerifier.sol @@ -39,9 +39,11 @@ contract UserOpWebAuthnCosignVerifier is IVerifier, OnlyKeystore { (address cosigner, bytes32 x, bytes32 y) = abi.decode(config, (address, bytes32, bytes32)); WebAuthn.WebAuthnAuth memory auth = WebAuthn.tryDecodeAuth(webauthnData); + + // Note: always run verification for both signatures in order to calculate accurate gas + // estimates during simulation with dummy signers. bool cosignValid = cosigner == ECDSA.recover(message, ecdsaSignature); bool webauthnValid = WebAuthn.verify(abi.encode(message), true, auth, x, y); - return (cosignValid && webauthnValid) ? SIG_VALIDATION_SUCCESS : SIG_VALIDATION_FAILED; } } From 36bb876ad61b9154f973dd76c9ebc34745368a58 Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 4 Aug 2025 09:47:44 +1000 Subject: [PATCH 11/42] Findings 20: change input to nodeHash in getRegisteredNode() (#33) --- snapshots/Keystore32NodeUCMT.json | 2 +- src/core/Keystore.sol | 4 ++-- src/interface/IKeystore.sol | 2 +- test/core/Keystore.t.sol | 37 ++++++++++++++++++------------- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/snapshots/Keystore32NodeUCMT.json b/snapshots/Keystore32NodeUCMT.json index 67cf647..85af944 100644 --- a/snapshots/Keystore32NodeUCMT.json +++ b/snapshots/Keystore32NodeUCMT.json @@ -1,5 +1,5 @@ { - "1. registerNode": "76946", + "1. registerNode": "76859", "2. validate (with proof)": "12407", "3. validate (without proof)": "5284", "4. handleUpdates (with proof)": "64278", diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index 35ff02a..ecc309d 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -58,12 +58,12 @@ contract Keystore is IKeystore { _nodeCache[rootHash][nodeHash][msg.sender] = node; } - function getRegisteredNode(bytes32 refHash, address account, bytes calldata node) + function getRegisteredNode(bytes32 refHash, address account, bytes32 nodeHash) external view returns (bytes memory) { - return _nodeCache[_getCurrentRootHash(refHash, account)][keccak256(node)][account]; + return _nodeCache[_getCurrentRootHash(refHash, account)][nodeHash][account]; } function getRootHash(bytes32 refHash, address account) external view returns (bytes32 rootHash) { diff --git a/src/interface/IKeystore.sol b/src/interface/IKeystore.sol index 55bbd2c..c542c3f 100644 --- a/src/interface/IKeystore.sol +++ b/src/interface/IKeystore.sol @@ -18,7 +18,7 @@ interface IKeystore { function validate(ValidateAction calldata action) external view returns (uint256 validationData); function registerNode(bytes32 refHash, bytes32[] calldata proof, bytes calldata node) external; - function getRegisteredNode(bytes32 refHash, address account, bytes calldata node) + function getRegisteredNode(bytes32 refHash, address account, bytes32 nodeHash) external view returns (bytes memory); diff --git a/test/core/Keystore.t.sol b/test/core/Keystore.t.sol index 75244c0..7387fb3 100644 --- a/test/core/Keystore.t.sol +++ b/test/core/Keystore.t.sol @@ -48,9 +48,10 @@ contract KeystoreTest is Test { vm.assume(node.length >= 20 && bytes20(node) != 0); (bytes32 refHash, bytes memory proof) = _generateUCMT(nodes, index, node); - assertEq(keystore.getRegisteredNode(refHash, address(this), node).length, 0); + bytes32 nodeHash = keccak256(node); + assertEq(keystore.getRegisteredNode(refHash, address(this), nodeHash).length, 0); _registerNode(refHash, proof, node); - assertGe(keystore.getRegisteredNode(refHash, address(this), node).length, 20); + assertGe(keystore.getRegisteredNode(refHash, address(this), nodeHash).length, 20); } function testFuzz_registerNodeWithMultipleRootHashUpdates( @@ -71,26 +72,27 @@ contract KeystoreTest is Test { assertEq(init.node, next.node); // Registers a proof when rootHash == refHash - assertEq(keystore.getRegisteredNode(init.root, address(this), init.node).length, 0); + bytes32 initNodeHash = keccak256(init.node); + assertEq(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 0); _registerNode(init.root, init.proof, init.node); - assertGe(keystore.getRegisteredNode(init.root, address(this), init.node).length, 20); + assertGe(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 20); // Update rootHash to nextHash - keystore.handleUpdates(_getUpdateActions(init.root, next.root, 0, "", abi.encode(keccak256(init.node)), data)); - assertEq(keystore.getRegisteredNode(init.root, address(this), init.node).length, 0); + keystore.handleUpdates(_getUpdateActions(init.root, next.root, 0, "", bytes.concat(initNodeHash), data)); + assertEq(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 0); // Registers a proof when rootHash == nextHash _registerNode(init.root, next.proof, next.node); - assertGe(keystore.getRegisteredNode(init.root, address(this), init.node).length, 20); + assertGe(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 20); // Update rootHash to finalHash // Note: if finalHash is zero, then we are essentially going back to the // refHash where the node is already cached. This is expected. - keystore.handleUpdates(_getUpdateActions(init.root, finalHash, 1, "", abi.encode(keccak256(next.node)), data)); + keystore.handleUpdates(_getUpdateActions(init.root, finalHash, 1, "", bytes.concat(keccak256(next.node)), data)); if (finalHash == 0) { - assertGe(keystore.getRegisteredNode(init.root, address(this), init.node).length, 20); + assertGe(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 20); } else { - assertEq(keystore.getRegisteredNode(init.root, address(this), init.node).length, 0); + assertEq(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 0); } } @@ -100,20 +102,22 @@ contract KeystoreTest is Test { vm.assume(node.length < 20); (bytes32 root, bytes memory proof) = _generateUCMT(nodes, index, node); - assertEq(keystore.getRegisteredNode(root, address(this), node).length, 0); + bytes32 nodeHash = keccak256(node); + assertEq(keystore.getRegisteredNode(root, address(this), nodeHash).length, 0); vm.expectRevert(IKeystore.InvalidNode.selector); _registerNode(root, proof, node); - assertEq(keystore.getRegisteredNode(root, address(this), node).length, 0); + assertEq(keystore.getRegisteredNode(root, address(this), nodeHash).length, 0); } function testFuzz_registerNodeWithInvalidVerifier(bytes32[] calldata nodes, uint256 index) public { bytes memory node = abi.encode(address(0)); (bytes32 root, bytes memory proof) = _generateUCMT(nodes, index, node); - assertEq(keystore.getRegisteredNode(root, address(this), node).length, 0); + bytes32 nodeHash = keccak256(node); + assertEq(keystore.getRegisteredNode(root, address(this), nodeHash).length, 0); vm.expectRevert(IKeystore.InvalidVerifier.selector); _registerNode(root, proof, node); - assertEq(keystore.getRegisteredNode(root, address(this), node).length, 0); + assertEq(keystore.getRegisteredNode(root, address(this), nodeHash).length, 0); } function testFuzz_registerNodeWithInvalidProof( @@ -125,10 +129,11 @@ contract KeystoreTest is Test { vm.assume(node.length >= 20 && bytes20(node) != 0); (bytes32 root,) = _generateUCMT(nodes, index, node); - assertEq(keystore.getRegisteredNode(root, address(this), node).length, 0); + bytes32 nodeHash = keccak256(node); + assertEq(keystore.getRegisteredNode(root, address(this), nodeHash).length, 0); vm.expectRevert(IKeystore.InvalidProof.selector); _registerNode(root, abi.encode(badProof), node); - assertEq(keystore.getRegisteredNode(root, address(this), node).length, 0); + assertEq(keystore.getRegisteredNode(root, address(this), nodeHash).length, 0); } function testFuzz_validate( From f1aee891b258e932a54b3e81b6fc8f0b36aeba3b Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 4 Aug 2025 10:01:30 +1000 Subject: [PATCH 12/42] Findings 21: define a constant for node verifier length (#34) --- src/core/Keystore.sol | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index ecc309d..2560b44 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -10,6 +10,8 @@ import {IVerifier} from "../interface/IVerifier.sol"; import {UpdateAction, ValidateAction} from "../lib/Actions.sol"; contract Keystore is IKeystore { + uint256 constant NODE_VERIFIER_LENGTH = 20; + mapping(bytes32 => mapping(address => bytes32)) internal _rootHash; mapping(bytes32 => mapping(uint192 => mapping(address => uint64))) internal _nonceSequence; mapping(bytes32 => mapping(bytes32 => mapping(address => bytes))) internal _nodeCache; @@ -48,8 +50,8 @@ contract Keystore is IKeystore { } function registerNode(bytes32 refHash, bytes32[] calldata proof, bytes calldata node) external { - require(node.length >= 20, InvalidNode()); - require(address(bytes20(node[0:20])) != address(0), InvalidVerifier()); + require(node.length >= NODE_VERIFIER_LENGTH, InvalidNode()); + require(address(bytes20(node[0:NODE_VERIFIER_LENGTH])) != address(0), InvalidVerifier()); bytes32 rootHash = _getCurrentRootHash(refHash, msg.sender); bytes32 nodeHash = keccak256(node); @@ -102,10 +104,10 @@ contract Keystore is IKeystore { } function _unpackNode(bytes memory node) internal pure returns (address verifier, bytes memory config) { - if (node.length < 20) revert InvalidNode(); - else if (node.length > 20) config = LibBytes.slice(node, 20, node.length); + if (node.length < NODE_VERIFIER_LENGTH) revert InvalidNode(); + else if (node.length > NODE_VERIFIER_LENGTH) config = LibBytes.slice(node, NODE_VERIFIER_LENGTH, node.length); - verifier = address(bytes20(LibBytes.slice(node, 0, 20))); + verifier = address(bytes20(LibBytes.slice(node, 0, NODE_VERIFIER_LENGTH))); if (verifier == address(0)) { revert InvalidVerifier(); } @@ -119,7 +121,7 @@ contract Keystore is IKeystore { if (aProof.length == 0) { nodeHash = bytes32(aNode); // convert from bytes to bytes32 node = _nodeCache[_getCurrentRootHash(refHash, account)][nodeHash][account]; - require(node.length >= 20, UnregisteredProof()); + require(node.length >= NODE_VERIFIER_LENGTH, UnregisteredProof()); } else { nodeHash = keccak256(aNode); node = aNode; From 4bfb5cc288c79c162c4d88993e700589f3b30583 Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 4 Aug 2025 10:29:31 +1000 Subject: [PATCH 13/42] Findings 23: remove unnecessary conditional in _unpackNode() (#35) --- snapshots/Keystore32NodeUCMT.json | 8 ++++---- src/core/Keystore.sol | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/snapshots/Keystore32NodeUCMT.json b/snapshots/Keystore32NodeUCMT.json index 85af944..9083133 100644 --- a/snapshots/Keystore32NodeUCMT.json +++ b/snapshots/Keystore32NodeUCMT.json @@ -1,7 +1,7 @@ { "1. registerNode": "76859", - "2. validate (with proof)": "12407", - "3. validate (without proof)": "5284", - "4. handleUpdates (with proof)": "64278", - "5. handleUpdates (without proof)": "55323" + "2. validate (with proof)": "12384", + "3. validate (without proof)": "5261", + "4. handleUpdates (with proof)": "64255", + "5. handleUpdates (without proof)": "55300" } \ No newline at end of file diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index 2560b44..d6fea68 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -105,9 +105,9 @@ contract Keystore is IKeystore { function _unpackNode(bytes memory node) internal pure returns (address verifier, bytes memory config) { if (node.length < NODE_VERIFIER_LENGTH) revert InvalidNode(); - else if (node.length > NODE_VERIFIER_LENGTH) config = LibBytes.slice(node, NODE_VERIFIER_LENGTH, node.length); verifier = address(bytes20(LibBytes.slice(node, 0, NODE_VERIFIER_LENGTH))); + config = LibBytes.slice(node, NODE_VERIFIER_LENGTH, node.length); if (verifier == address(0)) { revert InvalidVerifier(); } From abba4d99acb4bbf52462f4a4111fcc7d71e1329e Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 4 Aug 2025 10:37:03 +1000 Subject: [PATCH 14/42] Findings 24: rename _validateNode to _fetchOrValidateNode (#36) --- src/core/Keystore.sol | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index d6fea68..8a8ecbd 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -24,7 +24,7 @@ contract Keystore is IKeystore { uint64 currSeq = _validateAndGetNonce(action.refHash, action.account, nonceKey, nonceSeq); (bytes32 nodeHash, bytes memory node) = - _validateNode(action.refHash, action.account, action.proof, action.node); + _fetchOrValidateNode(action.refHash, action.account, action.proof, action.node); (address verifier, bytes memory config) = _unpackNode(node); bytes32 message = keccak256(abi.encode(action.refHash, action.nextHash, action.account, action.nonce, nodeHash)); @@ -43,7 +43,7 @@ contract Keystore is IKeystore { } function validate(ValidateAction calldata action) external view returns (uint256 validationData) { - (, bytes memory node) = _validateNode(action.refHash, msg.sender, action.proof, action.node); + (, bytes memory node) = _fetchOrValidateNode(action.refHash, msg.sender, action.proof, action.node); (address verifier, bytes memory config) = _unpackNode(node); return IVerifier(verifier).validateData(action.message, action.data, config); @@ -113,7 +113,7 @@ contract Keystore is IKeystore { } } - function _validateNode(bytes32 refHash, address account, bytes calldata aProof, bytes calldata aNode) + function _fetchOrValidateNode(bytes32 refHash, address account, bytes calldata aProof, bytes calldata aNode) internal view returns (bytes32 nodeHash, bytes memory node) From 34deb8088bcacad0603120ce3143d698e5222a28 Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 4 Aug 2025 10:45:00 +1000 Subject: [PATCH 15/42] Findings 25: use named params for nested mappings (#37) --- src/core/Keystore.sol | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index 8a8ecbd..af7b877 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -12,9 +12,9 @@ import {UpdateAction, ValidateAction} from "../lib/Actions.sol"; contract Keystore is IKeystore { uint256 constant NODE_VERIFIER_LENGTH = 20; - mapping(bytes32 => mapping(address => bytes32)) internal _rootHash; - mapping(bytes32 => mapping(uint192 => mapping(address => uint64))) internal _nonceSequence; - mapping(bytes32 => mapping(bytes32 => mapping(address => bytes))) internal _nodeCache; + mapping(bytes32 refHash => mapping(address account => bytes32 rootHash)) internal _rootHash; + mapping(bytes32 refHash => mapping(uint192 key => mapping(address account => uint64 seq))) internal _nonceSequence; + mapping(bytes32 rootHash => mapping(bytes32 nodeHash => mapping(address account => bytes node))) internal _nodeCache; function handleUpdates(UpdateAction[] calldata actions) external { uint256 length = actions.length; From 338e90498ed82c7f928cdddff764210926bac0f3 Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 4 Aug 2025 11:06:17 +1000 Subject: [PATCH 16/42] Findings 27: inherit TokenCallbackHandler to store ERC721 and ERC1155 tokens (#38) --- src/account/KeystoreAccount.sol | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/account/KeystoreAccount.sol b/src/account/KeystoreAccount.sol index 4793b70..f791077 100644 --- a/src/account/KeystoreAccount.sol +++ b/src/account/KeystoreAccount.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.28; +import {TokenCallbackHandler} from "account-abstraction/accounts/callback/TokenCallbackHandler.sol"; import {BaseAccount} from "account-abstraction/core/BaseAccount.sol"; import {SIG_VALIDATION_FAILED} from "account-abstraction/core/Helpers.sol"; import {IEntryPoint} from "account-abstraction/interfaces/IEntryPoint.sol"; @@ -12,7 +13,7 @@ import {ValidateAction} from "../lib/Actions.sol"; import {ERC1271} from "../lib/ERC1271.sol"; import {KeystoreUserOperation} from "../lib/KeystoreUserOperation.sol"; -contract KeystoreAccount is BaseAccount, ERC1271, Initializable { +contract KeystoreAccount is BaseAccount, TokenCallbackHandler, ERC1271, Initializable { bytes32 public refHash; IEntryPoint private immutable _entryPoint; From 0772a05e0f3facd880e3f3ec5f9eb79e64290c5a Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 4 Aug 2025 11:38:06 +1000 Subject: [PATCH 17/42] Findings 32: update spec Actions and root hash storage sections (#39) --- doc/spec.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/spec.md b/doc/spec.md index 055cbe4..65b7fd1 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -84,7 +84,7 @@ struct UpdateAction { bytes32 nextHash; uint256 nonce; address account; - bytes32[] proof; + bytes proof; bytes node; bytes data; } @@ -92,7 +92,7 @@ struct UpdateAction { struct ValidateAction { bytes32 refHash; bytes32 message; - bytes32[] proof; + bytes proof; bytes node; bytes data; } @@ -124,15 +124,15 @@ interface Keystore { #### Storage of root hashes -All root hashes in the `Keystore` contract MUST be stored in a mapping of the initial root hash to the current root hash. +All root hashes in the `Keystore` contract MUST be stored in a mapping of the initial root hash (i.e. the `refHash`) to the current root hash. ```solidity -mapping(bytes32 => mapping(address => bytes32)) public rootHash; +mapping(bytes32 refHash => mapping(address account => bytes32 rootHash)) internal _rootHash; ``` This is essential in order to provide an account with a permanent reference to the latest configuration. Without a permanent reference, it would be impossible for a dependent account to generate counterfactual addresses that are decoupled from configuration updates. -In the initial edge case where `currentHash` is equal to zero, then the `Keystore` MUST assume the `refHash` as the value. +In the initial edge case where `rootHash` is equal to zero, then the `Keystore` MUST assume the `refHash` as the current root hash. External systems are able to query for the current root hash using the `getRootHash` method which takes this logic into consideration. #### Handling root hash updates From 229b43609fbbfbe9cb83e3aa7fef77bcd262cef0 Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 4 Aug 2025 11:49:29 +1000 Subject: [PATCH 18/42] Findings 33: document address collision edge case with same refHash (#40) --- src/account/KeystoreAccountFactory.sol | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/account/KeystoreAccountFactory.sol b/src/account/KeystoreAccountFactory.sol index 1931605..e70bc72 100644 --- a/src/account/KeystoreAccountFactory.sol +++ b/src/account/KeystoreAccountFactory.sol @@ -22,6 +22,11 @@ contract KeystoreAccountFactory { senderCreator = _entryPoint.senderCreator(); } + /** + * @dev refHash may not be unique for every account if the same initial + * UserConfiguration Merkle Tree is used. In this case a unique salt value + * must be used to avoid address collision. + */ function createAccount(bytes32 refHash, uint256 salt) public returns (KeystoreAccount ret) { require(msg.sender == address(senderCreator), NotFromSenderCreator()); address addr = getAddress(refHash, salt); From 29d0e88e2f3b9abe24e5e4a1afa27c692a78a01e Mon Sep 17 00:00:00 2001 From: hazim Date: Tue, 5 Aug 2025 10:02:35 +1000 Subject: [PATCH 19/42] Findings 35: document expected verifier data and config inputs (#41) --- src/verifier/UserOpECDSAVerifier.sol | 11 +++++++++++ src/verifier/UserOpMultiSigVerifier.sol | 15 +++++++++++++++ src/verifier/UserOpWebAuthnCosignVerifier.sol | 18 ++++++++++++++++++ src/verifier/UserOpWebAuthnVerifier.sol | 14 ++++++++++++++ 4 files changed, 58 insertions(+) diff --git a/src/verifier/UserOpECDSAVerifier.sol b/src/verifier/UserOpECDSAVerifier.sol index d97bc3d..94412b3 100644 --- a/src/verifier/UserOpECDSAVerifier.sol +++ b/src/verifier/UserOpECDSAVerifier.sol @@ -11,6 +11,17 @@ import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; contract UserOpECDSAVerifier is IVerifier, OnlyKeystore { constructor(address aKeystore) OnlyKeystore(aKeystore) {} + /** + * @notice Called by the Keystore for nodes with ECDSA verification. + * @param message The hashed message that was signed. + * @param data The raw signature or a PackedUserOperation containing the signature. + * If the length is more than 65 bytes, it will be decoded as a PackedUserOperation + * with the userop.signature field containing the packed (r,s,v) signature values. + * @param config The node configuration, expected to contain the 20 bytes ECDSA + * signer address. + * @return validationData Returns SIG_VALIDATION_SUCCESS (0) if ok, otherwise + * SIG_VALIDATION_FAILED (1). + */ function validateData(bytes32 message, bytes calldata data, bytes calldata config) external view diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index 5bd4524..fe60e3a 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -18,6 +18,21 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { constructor(address aKeystore) OnlyKeystore(aKeystore) {} + /** + * @notice Called by the Keystore for nodes with multisig ECDSA verification. + * @param message The hashed message that must be signed by the owners. + * @param data The calldata containing the signatures. If the first byte is + * SIGNATURES_ONLY_TAG (0xff), it is followed by an abi-encoded array of SignerData + * structs. Otherwise, it is a PackedUserOperation whose signature field contains + * the abi-encoded array of SignerData. + * @param config The node configuration, expected to be abi.encoded as + * (uint8 threshold, address[] owners). + * The threshold is the minimum number of owner signatures required to pass + * validation. + * The owners array is all the valid signers on the multisig. + * @return validationData Returns SIG_VALIDATION_SUCCESS (0) if ok, otherwise + * SIG_VALIDATION_FAILED (1). + */ function validateData(bytes32 message, bytes calldata data, bytes calldata config) external view diff --git a/src/verifier/UserOpWebAuthnCosignVerifier.sol b/src/verifier/UserOpWebAuthnCosignVerifier.sol index b27a84f..9f4c5bb 100644 --- a/src/verifier/UserOpWebAuthnCosignVerifier.sol +++ b/src/verifier/UserOpWebAuthnCosignVerifier.sol @@ -21,6 +21,24 @@ contract UserOpWebAuthnCosignVerifier is IVerifier, OnlyKeystore { constructor(address aKeystore) OnlyKeystore(aKeystore) {} + /** + * @notice Called by the Keystore for nodes with dual WebAuthn and ECDSA + * verification. + * @param message The hashed message that must be signed by both the ECDSA + * cosigner and the WebAuthn authenticator. + * @param data The calldata containing the ECDSA signature and the WebAuthn + * data. If the first byte is SIGNATURES_ONLY_TAG (0xff), it is followed by + * an abi-encoded (bytes ecdsaSignature, bytes WebAuthnAuth). Otherwise, it + * is a PackedUserOperation whose signature field contains the abi-encoded + * (bytes ecdsaSignature, bytes WebAuthnAuth). + * See https://github.com/Vectorized/solady/blob/v0.1.19/src/utils/WebAuthn.sol + * for details on how WebAuthnAuth is encoded. + * @param config The node configuration, expected to be abi.encoded as + * (address cosigner, bytes32 x, bytes32 y), where cosigner is the ECDSA address + * and (x, y) are the WebAuthn public key coordinates. + * @return validationData Returns SIG_VALIDATION_SUCCESS (0) if ok, otherwise + * SIG_VALIDATION_FAILED (1). + */ function validateData(bytes32 message, bytes calldata data, bytes calldata config) external view diff --git a/src/verifier/UserOpWebAuthnVerifier.sol b/src/verifier/UserOpWebAuthnVerifier.sol index 8dcd766..a39a1d6 100644 --- a/src/verifier/UserOpWebAuthnVerifier.sol +++ b/src/verifier/UserOpWebAuthnVerifier.sol @@ -17,6 +17,20 @@ import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; contract UserOpWebAuthnVerifier is IVerifier, OnlyKeystore { constructor(address aKeystore) OnlyKeystore(aKeystore) {} + /** + * @notice Called by the Keystore for nodes with WebAuthn verification. + * @param message The hashed message that must be signed by the WebAuthn + * authenticator. + * @param data The calldata containing the WebAuthn authentication data. If + * the data is not a valid WebAuthnAuth struct, it is assumed to be a PackedUserOperation + * whose signature field contains the WebAuthnAuth encoded bytes. + * See https://github.com/Vectorized/solady/blob/v0.1.19/src/utils/WebAuthn.sol + * for details on how WebAuthnAuth is encoded. + * @param config The node configuration, expected to be abi.encoded as + * (bytes32 x, bytes32 y), where x and y are the WebAuthn public key coordinates. + * @return validationData Returns SIG_VALIDATION_SUCCESS (0) if ok, otherwise + * SIG_VALIDATION_FAILED (1). + */ function validateData(bytes32 message, bytes calldata data, bytes calldata config) external view From 3db5c9be1ffa5c58fcf1786e8a06d14588187cc9 Mon Sep 17 00:00:00 2001 From: hazim Date: Tue, 5 Aug 2025 12:23:14 +1000 Subject: [PATCH 20/42] Findings 14: enforce minimum multi-sig threshold of 1 (#42) --- src/verifier/UserOpMultiSigVerifier.sol | 4 ++++ test/verifier/UserOpMultiSigVerifier.t.sol | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index fe60e3a..0264977 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -9,6 +9,8 @@ import {IVerifier} from "../interface/IVerifier.sol"; import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { + error ZeroThresholdNotAllowed(); + bytes1 public constant SIGNATURES_ONLY_TAG = 0xff; struct SignerData { @@ -41,6 +43,8 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { returns (uint256 validationData) { (uint8 threshold, address[] memory owners) = abi.decode(config, (uint8, address[])); + require(threshold > 0, ZeroThresholdNotAllowed()); + SignerData[] memory signatures; if (bytes1(data[0]) == SIGNATURES_ONLY_TAG) { (signatures) = abi.decode(data[1:], (SignerData[])); diff --git a/test/verifier/UserOpMultiSigVerifier.t.sol b/test/verifier/UserOpMultiSigVerifier.t.sol index 3e7ae45..0c1aa4c 100644 --- a/test/verifier/UserOpMultiSigVerifier.t.sol +++ b/test/verifier/UserOpMultiSigVerifier.t.sol @@ -62,6 +62,26 @@ contract UserOpMultiSigVerifierTest is Test { assertEq(validationData, SIG_VALIDATION_FAILED); } + function testFuzz_validateDataZeroThreshold(bool withUserOp, uint8 offset, uint8 size) public { + uint8 threshold = 0; + Signer[] memory signers = _createSigners(size); + + bytes32 message = keccak256("Signed by signer"); + bytes memory data = _createData(message, threshold, offset, signers); + if (withUserOp) { + PackedUserOperation memory userOp; + userOp.signature = data; + data = abi.encode(userOp); + } else { + data = abi.encodePacked(verifier.SIGNATURES_ONLY_TAG(), data); + } + + bytes memory config = _createConfig(threshold, signers); + + vm.expectRevert(UserOpMultiSigVerifier.ZeroThresholdNotAllowed.selector); + verifier.validateData(message, data, config); + } + function testFuzz_validateDataInvalidCaller(address keystore) public { vm.assume(keystore != address(this)); vm.prank(keystore); From c146ac9908bf83571433b374bbf37d012f001b23 Mon Sep 17 00:00:00 2001 From: hazim Date: Tue, 5 Aug 2025 12:59:10 +1000 Subject: [PATCH 21/42] Findings 28: add dev note on expected invalid sig revert (#43) --- src/verifier/UserOpECDSAVerifier.sol | 3 +++ src/verifier/UserOpMultiSigVerifier.sol | 3 +++ src/verifier/UserOpWebAuthnCosignVerifier.sol | 3 +++ 3 files changed, 9 insertions(+) diff --git a/src/verifier/UserOpECDSAVerifier.sol b/src/verifier/UserOpECDSAVerifier.sol index 94412b3..e2a364c 100644 --- a/src/verifier/UserOpECDSAVerifier.sol +++ b/src/verifier/UserOpECDSAVerifier.sol @@ -13,6 +13,9 @@ contract UserOpECDSAVerifier is IVerifier, OnlyKeystore { /** * @notice Called by the Keystore for nodes with ECDSA verification. + * @dev This function will revert if the ECDSA signature is invalid. During + * simulation, it is therefor important to ensure the dummy signature used is + * structurally valid. * @param message The hashed message that was signed. * @param data The raw signature or a PackedUserOperation containing the signature. * If the length is more than 65 bytes, it will be decoded as a PackedUserOperation diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index 0264977..73ebd80 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -22,6 +22,9 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { /** * @notice Called by the Keystore for nodes with multisig ECDSA verification. + * @dev This function will revert if any of the ECDSA signatures are invalid. + * During simulation, it is therefor important to ensure all dummy signatures + * used are structurally valid. * @param message The hashed message that must be signed by the owners. * @param data The calldata containing the signatures. If the first byte is * SIGNATURES_ONLY_TAG (0xff), it is followed by an abi-encoded array of SignerData diff --git a/src/verifier/UserOpWebAuthnCosignVerifier.sol b/src/verifier/UserOpWebAuthnCosignVerifier.sol index 9f4c5bb..7795164 100644 --- a/src/verifier/UserOpWebAuthnCosignVerifier.sol +++ b/src/verifier/UserOpWebAuthnCosignVerifier.sol @@ -24,6 +24,9 @@ contract UserOpWebAuthnCosignVerifier is IVerifier, OnlyKeystore { /** * @notice Called by the Keystore for nodes with dual WebAuthn and ECDSA * verification. + * @dev This function will revert if the ECDSA cosigner signature is invalid. + * During simulation, it is therefor important to ensure the cosigner dummy + * signature used is structurally valid. * @param message The hashed message that must be signed by both the ECDSA * cosigner and the WebAuthn authenticator. * @param data The calldata containing the ECDSA signature and the WebAuthn From 9d9071a226baf498cc7f270cfbb8c81ae6a7d0c2 Mon Sep 17 00:00:00 2001 From: hazim-j Date: Tue, 5 Aug 2025 13:51:39 +1000 Subject: [PATCH 22/42] fix: typo in dev comment --- src/verifier/UserOpECDSAVerifier.sol | 4 ++-- src/verifier/UserOpMultiSigVerifier.sol | 2 +- src/verifier/UserOpWebAuthnCosignVerifier.sol | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/verifier/UserOpECDSAVerifier.sol b/src/verifier/UserOpECDSAVerifier.sol index e2a364c..fb11a1a 100644 --- a/src/verifier/UserOpECDSAVerifier.sol +++ b/src/verifier/UserOpECDSAVerifier.sol @@ -14,8 +14,8 @@ contract UserOpECDSAVerifier is IVerifier, OnlyKeystore { /** * @notice Called by the Keystore for nodes with ECDSA verification. * @dev This function will revert if the ECDSA signature is invalid. During - * simulation, it is therefor important to ensure the dummy signature used is - * structurally valid. + * simulation, it is therefore important to ensure the dummy signature used + * is structurally valid. * @param message The hashed message that was signed. * @param data The raw signature or a PackedUserOperation containing the signature. * If the length is more than 65 bytes, it will be decoded as a PackedUserOperation diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index 73ebd80..35e9ccb 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -23,7 +23,7 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { /** * @notice Called by the Keystore for nodes with multisig ECDSA verification. * @dev This function will revert if any of the ECDSA signatures are invalid. - * During simulation, it is therefor important to ensure all dummy signatures + * During simulation, it is therefore important to ensure all dummy signatures * used are structurally valid. * @param message The hashed message that must be signed by the owners. * @param data The calldata containing the signatures. If the first byte is diff --git a/src/verifier/UserOpWebAuthnCosignVerifier.sol b/src/verifier/UserOpWebAuthnCosignVerifier.sol index 7795164..eb77482 100644 --- a/src/verifier/UserOpWebAuthnCosignVerifier.sol +++ b/src/verifier/UserOpWebAuthnCosignVerifier.sol @@ -25,7 +25,7 @@ contract UserOpWebAuthnCosignVerifier is IVerifier, OnlyKeystore { * @notice Called by the Keystore for nodes with dual WebAuthn and ECDSA * verification. * @dev This function will revert if the ECDSA cosigner signature is invalid. - * During simulation, it is therefor important to ensure the cosigner dummy + * During simulation, it is therefore important to ensure the cosigner dummy * signature used is structurally valid. * @param message The hashed message that must be signed by both the ECDSA * cosigner and the WebAuthn authenticator. From 83a7a8cf7c28aa33386bff710ef29ff8505bf346 Mon Sep 17 00:00:00 2001 From: hazim Date: Tue, 5 Aug 2025 17:51:54 +1000 Subject: [PATCH 23/42] Findings 29: revert if more than max uint8 owners (#44) --- src/verifier/UserOpMultiSigVerifier.sol | 2 + test/verifier/UserOpMultiSigVerifier.t.sol | 44 ++++++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index 35e9ccb..dbad8ae 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -10,6 +10,7 @@ import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { error ZeroThresholdNotAllowed(); + error MaxOwnersLimitExceeded(); bytes1 public constant SIGNATURES_ONLY_TAG = 0xff; @@ -47,6 +48,7 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { { (uint8 threshold, address[] memory owners) = abi.decode(config, (uint8, address[])); require(threshold > 0, ZeroThresholdNotAllowed()); + require(owners.length <= type(uint8).max, MaxOwnersLimitExceeded()); SignerData[] memory signatures; if (bytes1(data[0]) == SIGNATURES_ONLY_TAG) { diff --git a/test/verifier/UserOpMultiSigVerifier.t.sol b/test/verifier/UserOpMultiSigVerifier.t.sol index 0c1aa4c..107d745 100644 --- a/test/verifier/UserOpMultiSigVerifier.t.sol +++ b/test/verifier/UserOpMultiSigVerifier.t.sol @@ -82,6 +82,26 @@ contract UserOpMultiSigVerifierTest is Test { verifier.validateData(message, data, config); } + function testFuzz_validateDataMaxOwners(bool withUserOp, uint8 threshold, uint8 offset, uint8 excess) public { + uint16 size = _getSizeAndAssumeMaxOwnerLimitExceeded(threshold, offset, excess); + Signer[] memory signers = _createSigners(size); + + bytes32 message = keccak256("Signed by signer"); + bytes memory data = _createData(message, threshold, offset, signers); + if (withUserOp) { + PackedUserOperation memory userOp; + userOp.signature = data; + data = abi.encode(userOp); + } else { + data = abi.encodePacked(verifier.SIGNATURES_ONLY_TAG(), data); + } + + bytes memory config = _createConfig(threshold, signers); + + vm.expectRevert(UserOpMultiSigVerifier.MaxOwnersLimitExceeded.selector); + verifier.validateData(message, data, config); + } + function testFuzz_validateDataInvalidCaller(address keystore) public { vm.assume(keystore != address(this)); vm.prank(keystore); @@ -103,9 +123,19 @@ contract UserOpMultiSigVerifierTest is Test { vm.assume(uint16(threshold) + uint16(offset) <= size); } - function _createSigners(uint8 size) internal returns (Signer[] memory) { + function _getSizeAndAssumeMaxOwnerLimitExceeded(uint8 threshold, uint8 offset, uint8 excess) + internal + pure + returns (uint16 size) + { + size = uint16(type(uint8).max) + excess; + vm.assume(threshold > 0 && excess > 0); + vm.assume(uint16(threshold) + uint16(offset) <= size); + } + + function _createSigners(uint16 size) internal returns (Signer[] memory) { Signer[] memory signers = new Signer[](size); - for (uint8 i = 0; i < size; i++) { + for (uint16 i = 0; i < size; i++) { (address addr, uint256 pk) = makeAddrAndKey(LibString.toString(i)); signers[i] = Signer({addr: addr, pk: pk}); } @@ -128,8 +158,14 @@ contract UserOpMultiSigVerifierTest is Test { { UserOpMultiSigVerifier.SignerData[] memory sd = new UserOpMultiSigVerifier.SignerData[](threshold); for (uint8 i = 0; i < threshold; i++) { - (uint8 v, bytes32 r, bytes32 s) = vm.sign(signers[i + offset].pk, message); - sd[i] = UserOpMultiSigVerifier.SignerData({index: i + offset, signature: abi.encodePacked(r, s, v)}); + uint16 index = uint16(i) + offset; + (uint8 v, bytes32 r, bytes32 s) = vm.sign(signers[index].pk, message); + sd[i] = UserOpMultiSigVerifier.SignerData({ + // Note: index will overflow back to 0 after max uint8. + // This is ok since a MaxOwnersLimitExceeded() error is expected. + index: uint8(index), + signature: abi.encodePacked(r, s, v) + }); } return abi.encode(sd); From a93369a99d5198f33f08a0c403ddbcd73997abe6 Mon Sep 17 00:00:00 2001 From: hazim Date: Wed, 6 Aug 2025 07:51:43 +1000 Subject: [PATCH 24/42] Findings 30: revert if more than max uint8 signatures (#45) --- src/verifier/UserOpMultiSigVerifier.sol | 4 +- test/verifier/UserOpMultiSigVerifier.t.sol | 65 ++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index dbad8ae..0844b25 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -11,6 +11,7 @@ import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { error ZeroThresholdNotAllowed(); error MaxOwnersLimitExceeded(); + error MaxSignaturesExceeded(); bytes1 public constant SIGNATURES_ONLY_TAG = 0xff; @@ -57,11 +58,12 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { PackedUserOperation memory userOp = abi.decode(data, (PackedUserOperation)); signatures = abi.decode(userOp.signature, (SignerData[])); } + uint256 length = signatures.length; + require(length <= type(uint8).max, MaxSignaturesExceeded()); uint8 valid = 0; uint8 invalid = 0; bool[] memory seen = new bool[](owners.length); - uint256 length = signatures.length; for (uint256 i = 0; i < length; i++) { SignerData memory sd = signatures[i]; diff --git a/test/verifier/UserOpMultiSigVerifier.t.sol b/test/verifier/UserOpMultiSigVerifier.t.sol index 107d745..cc7eed3 100644 --- a/test/verifier/UserOpMultiSigVerifier.t.sol +++ b/test/verifier/UserOpMultiSigVerifier.t.sol @@ -102,6 +102,71 @@ contract UserOpMultiSigVerifierTest is Test { verifier.validateData(message, data, config); } + function testFuzz_validateDataDuplicateSignatures(bool withUserOp, uint8 threshold, uint8 dup) public { + // Note: set threshold > 1 to show we can't recycle the same signature + // multiple times. + vm.assume(threshold > 1); + vm.assume(dup >= 1); + + Signer[] memory signers = _createSigners(1); + bytes32 message = keccak256("Signed by signer"); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(signers[0].pk, message); + bytes memory signature = abi.encodePacked(r, s, v); + + UserOpMultiSigVerifier.SignerData[] memory sd = new UserOpMultiSigVerifier.SignerData[](dup); + for (uint8 i = 0; i < dup; i++) { + sd[i] = UserOpMultiSigVerifier.SignerData({index: 0, signature: signature}); + } + + bytes memory data = abi.encode(sd); + if (withUserOp) { + PackedUserOperation memory userOp; + userOp.signature = data; + data = abi.encode(userOp); + } else { + data = abi.encodePacked(verifier.SIGNATURES_ONLY_TAG(), data); + } + + bytes memory config = _createConfig(threshold, signers); + + uint256 validationData = verifier.validateData(message, data, config); + assertEq(validationData, SIG_VALIDATION_FAILED); + } + + function testFuzz_validateDataMaxSignatures(bool withUserOp, uint8 excess) public { + vm.assume(excess > 0); + + Signer[] memory signers = _createSigners(1); + bytes32 message = keccak256("Signed by signer"); + (uint8 v, bytes32 r, bytes32 s) = vm.sign(signers[0].pk, message); + bytes memory signature = abi.encodePacked(r, s, v); + + uint16 count = uint16(type(uint8).max) + excess; + UserOpMultiSigVerifier.SignerData[] memory sd = new UserOpMultiSigVerifier.SignerData[](count); + for (uint16 i = 0; i < count; i++) { + sd[i] = UserOpMultiSigVerifier.SignerData({ + // Note: index will overflow back to 0 after max uint8. + // This is ok since a MaxSignaturesExceeded() error is expected. + index: 0, + signature: signature + }); + } + + bytes memory data = abi.encode(sd); + if (withUserOp) { + PackedUserOperation memory userOp; + userOp.signature = data; + data = abi.encode(userOp); + } else { + data = abi.encodePacked(verifier.SIGNATURES_ONLY_TAG(), data); + } + + bytes memory config = _createConfig(1, signers); + + vm.expectRevert(UserOpMultiSigVerifier.MaxSignaturesExceeded.selector); + verifier.validateData(message, data, config); + } + function testFuzz_validateDataInvalidCaller(address keystore) public { vm.assume(keystore != address(this)); vm.prank(keystore); From be19fb5488bbdba6c8a60e06927104774aaed277 Mon Sep 17 00:00:00 2001 From: hazim Date: Thu, 7 Aug 2025 10:50:12 +1000 Subject: [PATCH 25/42] Findings 19: enforce unique owner set (#46) --- src/verifier/UserOpMultiSigVerifier.sol | 22 ++++- test/verifier/UserOpMultiSigVerifier.t.sol | 93 ++++++++++++++++++++++ 2 files changed, 114 insertions(+), 1 deletion(-) diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index 0844b25..dca960b 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -12,6 +12,7 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { error ZeroThresholdNotAllowed(); error MaxOwnersLimitExceeded(); error MaxSignaturesExceeded(); + error OwnersUnsortedOrHasDuplicates(); bytes1 public constant SIGNATURES_ONLY_TAG = 0xff; @@ -36,7 +37,8 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { * (uint8 threshold, address[] owners). * The threshold is the minimum number of owner signatures required to pass * validation. - * The owners array is all the valid signers on the multisig. + * The owners array is all the valid signers on the multisig. It MUST be sorted + * in ascending order for efficient duplicate detection. * @return validationData Returns SIG_VALIDATION_SUCCESS (0) if ok, otherwise * SIG_VALIDATION_FAILED (1). */ @@ -50,6 +52,7 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { (uint8 threshold, address[] memory owners) = abi.decode(config, (uint8, address[])); require(threshold > 0, ZeroThresholdNotAllowed()); require(owners.length <= type(uint8).max, MaxOwnersLimitExceeded()); + _requireSortedAndUnique(owners); SignerData[] memory signatures; if (bytes1(data[0]) == SIGNATURES_ONLY_TAG) { @@ -74,4 +77,21 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { return valid >= threshold ? SIG_VALIDATION_SUCCESS : SIG_VALIDATION_FAILED; } + + // ================================================================ + // Helper functions + // ================================================================ + + /** + * @dev Checks that a sorted owners array is strictly unique (no duplicates). + * In practice, the upper bound for this function is limited by the maximum + * number of owners. This is enforced elsewhere to be max uint8 (i.e. 255). + */ + function _requireSortedAndUnique(address[] memory owners) internal pure { + uint256 length = owners.length; + if (length == 0) return; + for (uint256 i = 1; i < length; i++) { + require(owners[i] > owners[i - 1], OwnersUnsortedOrHasDuplicates()); + } + } } diff --git a/test/verifier/UserOpMultiSigVerifier.t.sol b/test/verifier/UserOpMultiSigVerifier.t.sol index cc7eed3..4af29a4 100644 --- a/test/verifier/UserOpMultiSigVerifier.t.sol +++ b/test/verifier/UserOpMultiSigVerifier.t.sol @@ -102,6 +102,55 @@ contract UserOpMultiSigVerifierTest is Test { verifier.validateData(message, data, config); } + function testFuzz_validateDataIncorrectlySortedOwners(bool withUserOp, uint8 threshold, uint8 offset, uint8 size) + public + { + vm.assume(size > 1); + _assume(threshold, offset, size); + Signer[] memory signers = _createSignersReverse(size); + + bytes32 message = keccak256("Signed by signer"); + bytes memory data = _createData(message, threshold, offset, signers); + if (withUserOp) { + PackedUserOperation memory userOp; + userOp.signature = data; + data = abi.encode(userOp); + } else { + data = abi.encodePacked(verifier.SIGNATURES_ONLY_TAG(), data); + } + + bytes memory config = _createConfig(threshold, signers); + + vm.expectRevert(UserOpMultiSigVerifier.OwnersUnsortedOrHasDuplicates.selector); + verifier.validateData(message, data, config); + } + + function testFuzz_validateDataDuplicateOwners(bool withUserOp, uint8 threshold, uint8 offset, uint8 size) public { + vm.assume(threshold > 1); + _assume(threshold, offset, size); + + (address addr, uint256 pk) = makeAddrAndKey("duplicate"); + Signer[] memory signers = new Signer[](size); + for (uint8 i = 0; i < size; i++) { + signers[i] = Signer({addr: addr, pk: pk}); + } + + bytes32 message = keccak256("Signed by signer"); + bytes memory data = _createData(message, threshold, offset, signers); + if (withUserOp) { + PackedUserOperation memory userOp; + userOp.signature = data; + data = abi.encode(userOp); + } else { + data = abi.encodePacked(verifier.SIGNATURES_ONLY_TAG(), data); + } + + bytes memory config = _createConfig(threshold, signers); + + vm.expectRevert(UserOpMultiSigVerifier.OwnersUnsortedOrHasDuplicates.selector); + verifier.validateData(message, data, config); + } + function testFuzz_validateDataDuplicateSignatures(bool withUserOp, uint8 threshold, uint8 dup) public { // Note: set threshold > 1 to show we can't recycle the same signature // multiple times. @@ -204,6 +253,17 @@ contract UserOpMultiSigVerifierTest is Test { (address addr, uint256 pk) = makeAddrAndKey(LibString.toString(i)); signers[i] = Signer({addr: addr, pk: pk}); } + _quickSortSigners(signers, true); + return signers; + } + + function _createSignersReverse(uint16 size) internal returns (Signer[] memory) { + Signer[] memory signers = new Signer[](size); + for (uint16 i = 0; i < size; i++) { + (address addr, uint256 pk) = makeAddrAndKey(LibString.toString(i)); + signers[i] = Signer({addr: addr, pk: pk}); + } + _quickSortSigners(signers, false); return signers; } @@ -235,4 +295,37 @@ contract UserOpMultiSigVerifierTest is Test { return abi.encode(sd); } + + function _quickSortSigners(Signer[] memory arr, bool asc) internal pure { + if (arr.length > 1) { + _quickSortSigners(arr, asc, 0, int256(arr.length) - 1); + } + } + + function _quickSortSigners(Signer[] memory arr, bool asc, int256 left, int256 right) private pure { + if (left >= right) return; + + Signer memory pivot = arr[uint256(left + (right - left) / 2)]; + int256 i = left; + int256 j = right; + + while (i <= j) { + if (asc) { + while (arr[uint256(i)].addr < pivot.addr) i++; + while (arr[uint256(j)].addr > pivot.addr) j--; + } else { + while (arr[uint256(i)].addr > pivot.addr) i++; + while (arr[uint256(j)].addr < pivot.addr) j--; + } + + if (i <= j) { + (arr[uint256(i)], arr[uint256(j)]) = (arr[uint256(j)], arr[uint256(i)]); + i++; + j--; + } + } + + if (left < j) _quickSortSigners(arr, asc, left, j); + if (i < right) _quickSortSigners(arr, asc, i, right); + } } From 6d6fa0396ec7ee9052e35bbd05e4eb30443b77c0 Mon Sep 17 00:00:00 2001 From: hazim Date: Thu, 7 Aug 2025 14:58:54 +1000 Subject: [PATCH 26/42] Findings 19: enforce number of owners to be >= threshold (#47) --- src/verifier/UserOpMultiSigVerifier.sol | 14 +++--- test/verifier/UserOpMultiSigVerifier.t.sol | 51 ++++++++++++++++------ 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/src/verifier/UserOpMultiSigVerifier.sol b/src/verifier/UserOpMultiSigVerifier.sol index dca960b..abc5080 100644 --- a/src/verifier/UserOpMultiSigVerifier.sol +++ b/src/verifier/UserOpMultiSigVerifier.sol @@ -10,9 +10,9 @@ import {OnlyKeystore} from "../lib/OnlyKeystore.sol"; contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { error ZeroThresholdNotAllowed(); - error MaxOwnersLimitExceeded(); - error MaxSignaturesExceeded(); + error InvalidNumberOfOwners(); error OwnersUnsortedOrHasDuplicates(); + error MaxSignaturesExceeded(); bytes1 public constant SIGNATURES_ONLY_TAG = 0xff; @@ -36,9 +36,10 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { * @param config The node configuration, expected to be abi.encoded as * (uint8 threshold, address[] owners). * The threshold is the minimum number of owner signatures required to pass - * validation. - * The owners array is all the valid signers on the multisig. It MUST be sorted - * in ascending order for efficient duplicate detection. + * validation. It MUST be greater than 0. + * The owners array is all the valid signers on the multisig. It MUST be greater + * than or equal to the threshold AND be sorted in ascending order for efficient + * duplicate detection. * @return validationData Returns SIG_VALIDATION_SUCCESS (0) if ok, otherwise * SIG_VALIDATION_FAILED (1). */ @@ -51,7 +52,7 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { { (uint8 threshold, address[] memory owners) = abi.decode(config, (uint8, address[])); require(threshold > 0, ZeroThresholdNotAllowed()); - require(owners.length <= type(uint8).max, MaxOwnersLimitExceeded()); + require(owners.length >= threshold && owners.length <= type(uint8).max, InvalidNumberOfOwners()); _requireSortedAndUnique(owners); SignerData[] memory signatures; @@ -89,7 +90,6 @@ contract UserOpMultiSigVerifier is IVerifier, OnlyKeystore { */ function _requireSortedAndUnique(address[] memory owners) internal pure { uint256 length = owners.length; - if (length == 0) return; for (uint256 i = 1; i < length; i++) { require(owners[i] > owners[i - 1], OwnersUnsortedOrHasDuplicates()); } diff --git a/test/verifier/UserOpMultiSigVerifier.t.sol b/test/verifier/UserOpMultiSigVerifier.t.sol index 4af29a4..d3f0fb7 100644 --- a/test/verifier/UserOpMultiSigVerifier.t.sol +++ b/test/verifier/UserOpMultiSigVerifier.t.sol @@ -82,6 +82,26 @@ contract UserOpMultiSigVerifierTest is Test { verifier.validateData(message, data, config); } + function testFuzz_validateDataMinOwners(bool withUserOp, uint8 threshold, uint8 size) public { + vm.assume(threshold > 0 && size < threshold); + Signer[] memory signers = _createSigners(size); + + bytes32 message = keccak256("Signed by signer"); + bytes memory data = _createData(message, size, 0, signers); + if (withUserOp) { + PackedUserOperation memory userOp; + userOp.signature = data; + data = abi.encode(userOp); + } else { + data = abi.encodePacked(verifier.SIGNATURES_ONLY_TAG(), data); + } + + bytes memory config = _createConfig(threshold, signers); + + vm.expectRevert(UserOpMultiSigVerifier.InvalidNumberOfOwners.selector); + verifier.validateData(message, data, config); + } + function testFuzz_validateDataMaxOwners(bool withUserOp, uint8 threshold, uint8 offset, uint8 excess) public { uint16 size = _getSizeAndAssumeMaxOwnerLimitExceeded(threshold, offset, excess); Signer[] memory signers = _createSigners(size); @@ -98,7 +118,7 @@ contract UserOpMultiSigVerifierTest is Test { bytes memory config = _createConfig(threshold, signers); - vm.expectRevert(UserOpMultiSigVerifier.MaxOwnersLimitExceeded.selector); + vm.expectRevert(UserOpMultiSigVerifier.InvalidNumberOfOwners.selector); verifier.validateData(message, data, config); } @@ -151,23 +171,26 @@ contract UserOpMultiSigVerifierTest is Test { verifier.validateData(message, data, config); } - function testFuzz_validateDataDuplicateSignatures(bool withUserOp, uint8 threshold, uint8 dup) public { + function testFuzz_validateDataDuplicateSignatures( + bool withUserOp, + uint8 threshold, + uint8 offset, + uint8 size, + uint8 dup + ) public { // Note: set threshold > 1 to show we can't recycle the same signature // multiple times. - vm.assume(threshold > 1); - vm.assume(dup >= 1); + vm.assume(threshold > 1 && dup > 1 && dup <= threshold); + _assume(threshold, offset, size); + Signer[] memory signers = _createSigners(size); - Signer[] memory signers = _createSigners(1); bytes32 message = keccak256("Signed by signer"); - (uint8 v, bytes32 r, bytes32 s) = vm.sign(signers[0].pk, message); - bytes memory signature = abi.encodePacked(r, s, v); - - UserOpMultiSigVerifier.SignerData[] memory sd = new UserOpMultiSigVerifier.SignerData[](dup); - for (uint8 i = 0; i < dup; i++) { - sd[i] = UserOpMultiSigVerifier.SignerData({index: 0, signature: signature}); + bytes memory data = _createData(message, threshold, offset, signers); + UserOpMultiSigVerifier.SignerData[] memory sd = abi.decode(data, (UserOpMultiSigVerifier.SignerData[])); + for (uint8 i; i < dup; i++) { + sd[i] = sd[0]; } - - bytes memory data = abi.encode(sd); + data = abi.encode(sd); if (withUserOp) { PackedUserOperation memory userOp; userOp.signature = data; @@ -287,7 +310,7 @@ contract UserOpMultiSigVerifierTest is Test { (uint8 v, bytes32 r, bytes32 s) = vm.sign(signers[index].pk, message); sd[i] = UserOpMultiSigVerifier.SignerData({ // Note: index will overflow back to 0 after max uint8. - // This is ok since a MaxOwnersLimitExceeded() error is expected. + // This is ok since an InvalidNumberOfOwners() error is expected. index: uint8(index), signature: abi.encodePacked(r, s, v) }); From e97a2790ceaed7a59897c24795ec57eb54b29574 Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 11 Aug 2025 18:30:55 +1000 Subject: [PATCH 27/42] Findings 37: defensive rehashing scheme with ERC-7739 (#48) --- src/account/KeystoreAccount.sol | 51 ++++++++++------ src/lib/ERC1271.sol | 10 ---- test/account/KeystoreAccount.t.sol | 60 +++++++++++++++++++ test/mock/ERC7739PersonalSignVerifierMock.sol | 34 +++++++++++ .../mock/ERC7739TypedDataSignVerifierMock.sol | 51 ++++++++++++++++ 5 files changed, 179 insertions(+), 27 deletions(-) delete mode 100644 src/lib/ERC1271.sol create mode 100644 test/mock/ERC7739PersonalSignVerifierMock.sol create mode 100644 test/mock/ERC7739TypedDataSignVerifierMock.sol diff --git a/src/account/KeystoreAccount.sol b/src/account/KeystoreAccount.sol index f791077..d1e0138 100644 --- a/src/account/KeystoreAccount.sol +++ b/src/account/KeystoreAccount.sol @@ -6,14 +6,16 @@ import {BaseAccount} from "account-abstraction/core/BaseAccount.sol"; import {SIG_VALIDATION_FAILED} from "account-abstraction/core/Helpers.sol"; import {IEntryPoint} from "account-abstraction/interfaces/IEntryPoint.sol"; import {PackedUserOperation} from "account-abstraction/interfaces/PackedUserOperation.sol"; +import {ERC1271} from "solady/accounts/ERC1271.sol"; import {Initializable} from "solady/utils/Initializable.sol"; import {IKeystore} from "../interface/IKeystore.sol"; import {ValidateAction} from "../lib/Actions.sol"; -import {ERC1271} from "../lib/ERC1271.sol"; import {KeystoreUserOperation} from "../lib/KeystoreUserOperation.sol"; contract KeystoreAccount is BaseAccount, TokenCallbackHandler, ERC1271, Initializable { + error ERC1271SignerUnused(); + bytes32 public refHash; IEntryPoint private immutable _entryPoint; @@ -60,22 +62,6 @@ contract KeystoreAccount is BaseAccount, TokenCallbackHandler, ERC1271, Initiali return IKeystore(_keystore).validate(action); } - function isValidSignature(bytes32 hash, bytes memory signature) - public - view - virtual - override - returns (bytes4 magicValue) - { - (bytes memory proof, bytes memory node, bytes memory data) = abi.decode(signature, (bytes, bytes, bytes)); - ValidateAction memory action = - ValidateAction({refHash: refHash, message: hash, proof: proof, node: node, data: data}); - if (IKeystore(_keystore).validate(action) == SIG_VALIDATION_FAILED) { - return ERC1271_INVALID_VALUE; - } - return ERC1271_VALID_VALUE; - } - function getDeposit() public view returns (uint256) { return entryPoint().balanceOf(address(this)); } @@ -88,4 +74,35 @@ contract KeystoreAccount is BaseAccount, TokenCallbackHandler, ERC1271, Initiali _requireForExecute(); entryPoint().withdrawTo(withdrawAddress, amount); } + + // ================================================================ + // Internal functions + // ================================================================ + + function _domainNameAndVersion() internal pure override returns (string memory name, string memory version) { + name = "KeystoreAccount"; + version = "1"; + } + + function _erc1271IsValidSignatureNowCalldata(bytes32 hash, bytes calldata signature) + internal + view + override + returns (bool) + { + (bytes memory proof, bytes memory node, bytes memory data) = abi.decode(signature, (bytes, bytes, bytes)); + ValidateAction memory action = + ValidateAction({refHash: refHash, message: hash, proof: proof, node: node, data: data}); + return IKeystore(_keystore).validate(action) != SIG_VALIDATION_FAILED; + } + + /** + * @dev This override is required by the ERC1271 inheritance but will NEVER + * be called. Signature validation is always handled by the Keystore contract + * via the _erc1271IsValidSignatureNowCalldata override and never through a + * signer address check as seen in the abstract implementation. + */ + function _erc1271Signer() internal pure override returns (address) { + revert ERC1271SignerUnused(); + } } diff --git a/src/lib/ERC1271.sol b/src/lib/ERC1271.sol deleted file mode 100644 index 1eb86ff..0000000 --- a/src/lib/ERC1271.sol +++ /dev/null @@ -1,10 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.28; - -abstract contract ERC1271 { - // bytes4(keccak256("isValidSignature(bytes32,bytes)") - bytes4 internal constant ERC1271_VALID_VALUE = 0x1626ba7e; - bytes4 internal constant ERC1271_INVALID_VALUE = 0xffffffff; - - function isValidSignature(bytes32 hash, bytes memory signature) public view virtual returns (bytes4 magicValue); -} diff --git a/test/account/KeystoreAccount.t.sol b/test/account/KeystoreAccount.t.sol index 6447c01..3c00651 100644 --- a/test/account/KeystoreAccount.t.sol +++ b/test/account/KeystoreAccount.t.sol @@ -4,14 +4,18 @@ pragma solidity ^0.8.28; import {SIG_VALIDATION_FAILED} from "account-abstraction/core/Helpers.sol"; import {EntryPoint} from "account-abstraction/core/EntryPoint.sol"; import {IAccount} from "account-abstraction/interfaces/IAccount.sol"; +import {IEntryPoint} from "account-abstraction/interfaces/IEntryPoint.sol"; import {IStakeManager} from "account-abstraction/interfaces/IStakeManager.sol"; import {PackedUserOperation} from "account-abstraction/interfaces/PackedUserOperation.sol"; import {Test} from "forge-std/Test.sol"; +import {ERC7739PersonalSignVerifierMock} from "../mock/ERC7739PersonalSignVerifierMock.sol"; +import {ERC7739TypedDataSignVerifierMock} from "../mock/ERC7739TypedDataSignVerifierMock.sol"; import {VerifierMock} from "../mock/VerifierMock.sol"; import {KeystoreAccount} from "../../src/account/KeystoreAccount.sol"; import {KeystoreAccountFactory} from "../../src/account/KeystoreAccountFactory.sol"; import {Keystore} from "../../src/core/Keystore.sol"; +import {IKeystore} from "../../src/interface/IKeystore.sol"; contract KeystoreAccountFactoryTest is Test { EntryPoint public entryPoint; @@ -40,6 +44,20 @@ contract KeystoreAccountFactoryTest is Test { assertEq(address(account.keystore()), address(keystore)); } + function testFuzz_ERC7739SupportDetection(bytes32 refHash) public { + KeystoreAccount account = _createAccount(refHash); + assertEq( + account.isValidSignature(0x7739773977397739773977397739773977397739773977397739773977397739, ""), + bytes4(0x77390001) + ); + } + + function test_erc1271SignerReverts() public { + KeystoreAccountHarness acc = new KeystoreAccountHarness(entryPoint, keystore); + vm.expectRevert(KeystoreAccount.ERC1271SignerUnused.selector); + acc.expose_erc1271Signer(); + } + function testFuzz_isValidSignatureSuccess(bytes32 message, uint256 validationData, bytes calldata data) public { vm.assume(validationData != SIG_VALIDATION_FAILED); bytes memory node = abi.encodePacked(address(new VerifierMock(validationData))); @@ -50,7 +68,41 @@ contract KeystoreAccountFactoryTest is Test { assertEq(account.isValidSignature(message, signature), bytes4(0x1626ba7e)); } + function testFuzz_isValidSignaturePersonalSignRehash(bytes32 message) public { + bytes memory node = abi.encodePacked(address(new ERC7739PersonalSignVerifierMock(message))); + (bytes32 root, bytes memory proof) = _generateUCMT(node); + + KeystoreAccount account = _createAccount(root); + bytes memory data = bytes.concat(bytes20(address(account))); + bytes memory signature = abi.encodePacked(abi.encode(proof, node, data)); + + assertEq(account.isValidSignature(message, signature), bytes4(0x1626ba7e)); + } + + function testFuzz_isValidSignatureTypedDataSignRehash(bytes32 appDomainSeparator, bytes32 contents) public { + ERC7739TypedDataSignVerifierMock verifier = new ERC7739TypedDataSignVerifierMock(appDomainSeparator, contents); + bytes memory node = abi.encodePacked(address(verifier)); + (bytes32 root, bytes memory proof) = _generateUCMT(node); + + KeystoreAccount account = _createAccount(root); + bytes32 typedMessage = keccak256(abi.encodePacked(hex"1901", appDomainSeparator, contents)); + bytes memory data = bytes.concat(bytes20(address(account))); + bytes memory typedSignature = abi.encodePacked( + abi.encode(proof, node, data), // original signature + appDomainSeparator, + contents, + bytes(verifier.implicitContentsDesc()), + uint16(bytes(verifier.implicitContentsDesc()).length) + ); + + assertEq(account.isValidSignature(typedMessage, typedSignature), bytes4(0x1626ba7e)); + } + function testFuzz_isValidSignatureFailed(bytes32 message, bytes calldata data) public { + // Use a non-zero gas price to ensure Solady's ERC1271 contract skips the + // gas burn. + vm.txGasPrice(1); + bytes memory node = abi.encodePacked(address(new VerifierMock(SIG_VALIDATION_FAILED))); (bytes32 root, bytes memory proof) = _generateUCMT(node); bytes memory signature = abi.encode(proof, node, data); @@ -116,3 +168,11 @@ contract KeystoreAccountFactoryTest is Test { proof = abi.encode(proofArray); } } + +contract KeystoreAccountHarness is KeystoreAccount { + constructor(IEntryPoint e, IKeystore k) KeystoreAccount(e, k) {} + + function expose_erc1271Signer() external pure returns (address) { + return _erc1271Signer(); + } +} diff --git a/test/mock/ERC7739PersonalSignVerifierMock.sol b/test/mock/ERC7739PersonalSignVerifierMock.sol new file mode 100644 index 0000000..9035859 --- /dev/null +++ b/test/mock/ERC7739PersonalSignVerifierMock.sol @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +import {SIG_VALIDATION_FAILED, SIG_VALIDATION_SUCCESS} from "account-abstraction/core/Helpers.sol"; + +import {IVerifier} from "../../src/interface/IVerifier.sol"; + +contract ERC7739PersonalSignVerifierMock is IVerifier { + bytes32 private immutable originalHash; + + constructor(bytes32 hash) { + originalHash = hash; + } + + function validateData(bytes32 hash, bytes calldata data, bytes calldata) external view returns (uint256) { + bytes32 finalHash = keccak256( + abi.encodePacked( + hex"1901", + keccak256( + abi.encode( + keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), + keccak256(bytes("KeystoreAccount")), + keccak256(bytes("1")), + block.chainid, + address(bytes20(data)) + ) + ), + keccak256(abi.encode(keccak256("PersonalSign(bytes prefixed)"), originalHash)) + ) + ); + + return finalHash == hash ? SIG_VALIDATION_SUCCESS : SIG_VALIDATION_FAILED; + } +} diff --git a/test/mock/ERC7739TypedDataSignVerifierMock.sol b/test/mock/ERC7739TypedDataSignVerifierMock.sol new file mode 100644 index 0000000..0bf8ecb --- /dev/null +++ b/test/mock/ERC7739TypedDataSignVerifierMock.sol @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.28; + +import {SIG_VALIDATION_FAILED, SIG_VALIDATION_SUCCESS} from "account-abstraction/core/Helpers.sol"; +import {LibString} from "solady/utils/LibString.sol"; + +import {IVerifier} from "../../src/interface/IVerifier.sol"; + +contract ERC7739TypedDataSignVerifierMock is IVerifier { + bytes32 private immutable appDomainSeparator; + bytes32 private immutable contents; + string public contentsName = "SomeContents"; + string public contentsType = "(bytes32 stuff)"; + string public implicitContentsDesc = string(bytes.concat(bytes(contentsName), bytes(contentsType))); + + constructor(bytes32 _appDomainSeparator, bytes32 _contents) { + appDomainSeparator = _appDomainSeparator; + contents = _contents; + } + + function validateData(bytes32 hash, bytes calldata data, bytes calldata) external view returns (uint256) { + bytes32 finalHash = keccak256( + abi.encodePacked( + hex"1901", + appDomainSeparator, + keccak256( + abi.encode( + keccak256( + bytes.concat( + bytes("TypedDataSign("), + bytes(contentsName), + bytes( + " contents,string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)" + ), + bytes(implicitContentsDesc) + ) + ), + contents, + keccak256(bytes("KeystoreAccount")), + keccak256(bytes("1")), + block.chainid, + address(bytes20(data)), + bytes32(0) + ) + ) + ) + ); + + return finalHash == hash ? SIG_VALIDATION_SUCCESS : SIG_VALIDATION_FAILED; + } +} From aef485e2cf61c4c838aba9d9851768e34770dda0 Mon Sep 17 00:00:00 2001 From: hazim Date: Mon, 11 Aug 2025 19:17:05 +1000 Subject: [PATCH 28/42] Findings 40: switch to ERC-1167 minimal proxies (#49) --- src/account/KeystoreAccountFactory.sol | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/account/KeystoreAccountFactory.sol b/src/account/KeystoreAccountFactory.sol index e70bc72..36270b6 100644 --- a/src/account/KeystoreAccountFactory.sol +++ b/src/account/KeystoreAccountFactory.sol @@ -3,12 +3,16 @@ pragma solidity ^0.8.28; import {IEntryPoint} from "account-abstraction/interfaces/IEntryPoint.sol"; import {ISenderCreator} from "account-abstraction/interfaces/ISenderCreator.sol"; -import {Create2} from "@openzeppelin/contracts/utils/Create2.sol"; -import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; +import {LibClone} from "solady/utils/LibClone.sol"; import {IKeystore} from "../interface/IKeystore.sol"; import {KeystoreAccount} from "./KeystoreAccount.sol"; +/** + * @dev This factory uses ERC-1167 minimal proxies to deploy each instance of a + * KeystoreAccount. For maximum simplicity, the KeystoreAccount does NOT have a + * built-in path for upgradability. + */ contract KeystoreAccountFactory { error NotFromSenderCreator(); @@ -35,23 +39,14 @@ contract KeystoreAccountFactory { return KeystoreAccount(payable(addr)); } ret = KeystoreAccount( - payable( - new ERC1967Proxy{salt: bytes32(salt)}( - address(accountImplementation), abi.encodeCall(KeystoreAccount.initialize, (refHash)) - ) - ) + payable(LibClone.cloneDeterministic(address(accountImplementation), keccak256(abi.encode(refHash, salt)))) ); + ret.initialize(refHash); } function getAddress(bytes32 refHash, uint256 salt) public view returns (address) { - return Create2.computeAddress( - bytes32(salt), - keccak256( - abi.encodePacked( - type(ERC1967Proxy).creationCode, - abi.encode(address(accountImplementation), abi.encodeCall(KeystoreAccount.initialize, (refHash))) - ) - ) + return LibClone.predictDeterministicAddress( + address(accountImplementation), keccak256(abi.encode(refHash, salt)), address(this) ); } From 6f9063036cdfabaaf0184dc318f554d1f3dd9e6d Mon Sep 17 00:00:00 2001 From: hazim Date: Tue, 12 Aug 2025 14:42:57 +1000 Subject: [PATCH 29/42] Findings 38: add useChainId flag (#50) --- doc/spec.md | 7 ++-- snapshots/Keystore32NodeUCMT.json | 4 +-- src/core/Keystore.sol | 7 ++-- src/lib/Actions.sol | 1 + test/core/Keystore.t.sol | 43 +++++++++++++++++++------ test/snapshots/Keystore32NodeUCMT.t.sol | 1 + 6 files changed, 48 insertions(+), 15 deletions(-) diff --git a/doc/spec.md b/doc/spec.md index 65b7fd1..9ee715c 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -83,6 +83,7 @@ struct UpdateAction { bytes32 refHash; bytes32 nextHash; uint256 nonce; + bool useChainId; address account; bytes proof; bytes node; @@ -227,10 +228,12 @@ It is worth noting that there is no enforced data structure on the `data` and `c When updating the root hash, the `Keystore` MUST call the `validateData` function with the following `message` format. ```solidity -bytes32 message = keccak256(abi.encode(refHash, nextRootHash, account, nonce, keccak256(node))) +bytes32 message = useChainId + ? keccak256(abi.encode(refHash, nextHash, account, nonce, keccak256(node), block.chainid)) + : keccak256(abi.encode(refHash, nextHash, account, nonce, keccak256(node))); ``` -Note that `chainId` is not part of this message hash since it is expected that an `UpdateAction` can be replayed across all chains. +Note that by default, `chainId` is not part of this message hash since it is expected that an `UpdateAction` can be replayed across all chains. However, under certain scenarios where a user does NOT require cross chain replayability, the `useChainId` flag in `UpdateAction` can be set to `true`. The resulting message hash will then include the `chainId` for signing. ## Rationale diff --git a/snapshots/Keystore32NodeUCMT.json b/snapshots/Keystore32NodeUCMT.json index 9083133..4960650 100644 --- a/snapshots/Keystore32NodeUCMT.json +++ b/snapshots/Keystore32NodeUCMT.json @@ -2,6 +2,6 @@ "1. registerNode": "76859", "2. validate (with proof)": "12384", "3. validate (without proof)": "5261", - "4. handleUpdates (with proof)": "64255", - "5. handleUpdates (without proof)": "55300" + "4. handleUpdates (with proof)": "64471", + "5. handleUpdates (without proof)": "55516" } \ No newline at end of file diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index af7b877..1f7ea72 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -26,8 +26,11 @@ contract Keystore is IKeystore { (bytes32 nodeHash, bytes memory node) = _fetchOrValidateNode(action.refHash, action.account, action.proof, action.node); (address verifier, bytes memory config) = _unpackNode(node); - bytes32 message = - keccak256(abi.encode(action.refHash, action.nextHash, action.account, action.nonce, nodeHash)); + bytes32 message = action.useChainId + ? keccak256( + abi.encode(action.refHash, action.nextHash, action.account, action.nonce, nodeHash, block.chainid) + ) + : keccak256(abi.encode(action.refHash, action.nextHash, action.account, action.nonce, nodeHash)); if (IVerifier(verifier).validateData(message, action.data, config) == SIG_VALIDATION_FAILED) { emit RootHashUpdated( action.refHash, action.nextHash, action.nonce, action.proof, node, action.data, false diff --git a/src/lib/Actions.sol b/src/lib/Actions.sol index 29c10c1..da5c0a5 100644 --- a/src/lib/Actions.sol +++ b/src/lib/Actions.sol @@ -5,6 +5,7 @@ struct UpdateAction { bytes32 refHash; bytes32 nextHash; uint256 nonce; + bool useChainId; address account; bytes proof; bytes node; diff --git a/test/core/Keystore.t.sol b/test/core/Keystore.t.sol index 7387fb3..f17e6e8 100644 --- a/test/core/Keystore.t.sol +++ b/test/core/Keystore.t.sol @@ -371,7 +371,7 @@ contract KeystoreTest is Test { assertEq(keystore.getRootHash(inputs.refHash, address(this)), inputs.refHash); } - function testFuzz_handleUpdatesBatch(bool[2] calldata status) public { + function testFuzz_handleUpdatesBatch(bool[2] calldata status, bool useChainId) public { UpdateAction[] memory actions = new UpdateAction[](2); bytes32[] memory proof0 = new bytes32[](4); @@ -383,6 +383,7 @@ contract KeystoreTest is Test { refHash: 0x0bea790c2d4a69970ebd6e09562a71084e5c78fef4d37528dd332cfb538542ce, nextHash: 0x307e09be09995e6faec1ee7e926814704ea5350149e0c43d3c33d08107993edd, nonce: 21345602813603236902997277615363180973908434092032, + useChainId: useChainId, account: address(this), proof: abi.encode(proof0), node: hex"367bbe350864b020ff1b8b7e418a815c2a947f9d09eadce97d0c9c596ac47be1bcc4e0bf1582b3fb3cb5ea2acb22f8c2bc170f7479c2", @@ -399,6 +400,7 @@ contract KeystoreTest is Test { refHash: 0x919c2e64fdfe95a09781da7a31cec323904edeece2aadab9db2809401f24feb1, nextHash: 0xf5856318a232ea9e7991756d7ed9f32e6128c84bfefee127f06bc23fd22c0296, nonce: 779254045811195516568393371847926550426994733077148739871778103143432192, + useChainId: useChainId, account: address(this), proof: abi.encode(proof1), node: hex"217c31512a2fc94b172b5ef447d1deca0abf0c34a47ae671572752b2eafbb25ce40f59229f25811cfae1c253226d6b08cbecfd13e8b413cdbe616886c94b", @@ -406,22 +408,44 @@ contract KeystoreTest is Test { }); _mockVerifier( - keccak256( - abi.encode( - actions[0].refHash, actions[0].nextHash, address(this), actions[0].nonce, keccak256(actions[0].node) + useChainId + ? keccak256( + abi.encode( + actions[0].refHash, + actions[0].nextHash, + address(this), + actions[0].nonce, + keccak256(actions[0].node), + block.chainid + ) ) - ), + : keccak256( + abi.encode( + actions[0].refHash, actions[0].nextHash, address(this), actions[0].nonce, keccak256(actions[0].node) + ) + ), actions[0].node, actions[0].data, status[0] ? SIG_VALIDATION_SUCCESS : SIG_VALIDATION_FAILED ); _mockVerifier( - keccak256( - abi.encode( - actions[1].refHash, actions[1].nextHash, address(this), actions[1].nonce, keccak256(actions[1].node) + useChainId + ? keccak256( + abi.encode( + actions[1].refHash, + actions[1].nextHash, + address(this), + actions[1].nonce, + keccak256(actions[1].node), + block.chainid + ) ) - ), + : keccak256( + abi.encode( + actions[1].refHash, actions[1].nextHash, address(this), actions[1].nonce, keccak256(actions[1].node) + ) + ), actions[1].node, actions[1].data, status[1] ? SIG_VALIDATION_SUCCESS : SIG_VALIDATION_FAILED @@ -562,6 +586,7 @@ contract KeystoreTest is Test { refHash: refHash, nextHash: nextHash, nonce: nonce, + useChainId: false, account: address(this), proof: proof, node: node, diff --git a/test/snapshots/Keystore32NodeUCMT.t.sol b/test/snapshots/Keystore32NodeUCMT.t.sol index 0a07fd2..9a0dd44 100644 --- a/test/snapshots/Keystore32NodeUCMT.t.sol +++ b/test/snapshots/Keystore32NodeUCMT.t.sol @@ -144,6 +144,7 @@ contract Keystore32NodeUCMT is Test { refHash: 0x919c2e64fdfe95a09781da7a31cec323904edeece2aadab9db2809401f24feb1, nextHash: 0xf5856318a232ea9e7991756d7ed9f32e6128c84bfefee127f06bc23fd22c0296, nonce: 779254045811195516568393371847926550426994733077148739871778103143432192, + useChainId: false, account: address(this), proof: proof, node: hex"217c31512a2fc94b172b5ef447d1deca0abf0c34a47ae671572752b2eafbb25ce40f59229f25811cfae1c253226d6b08cbecfd13e8b413cdbe616886c94b", From a8cd8c89fe10cae48602de5a0e291e7bb0ce4986 Mon Sep 17 00:00:00 2001 From: hazim Date: Tue, 12 Aug 2025 15:16:58 +1000 Subject: [PATCH 30/42] Findings 8: document handleUpdates revert scenarios (#51) --- src/core/Keystore.sol | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index 1f7ea72..aa4ad86 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -16,6 +16,20 @@ contract Keystore is IKeystore { mapping(bytes32 refHash => mapping(uint192 key => mapping(address account => uint64 seq))) internal _nonceSequence; mapping(bytes32 rootHash => mapping(bytes32 nodeHash => mapping(address account => bytes node))) internal _nodeCache; + /** + * @dev This function can revert if at least one UpdateAction in the batch encounters + * any of the following errors: + * - InvalidNonce() + * - InvalidProof() + * - UnregisteredProof() + * - InvalidNode() + * - InvalidVerifier() + * - Verifier call revert + * If a verifier call returns with SIG_VALIDATION_FAILED (1) this will NOT revert + * but instead emit RootHashUpdated(..., success=false). + * Relaying entities SHOULD run sufficient checks and simulations on their batch + * before submitting onchain to prevent transaction reverts. + */ function handleUpdates(UpdateAction[] calldata actions) external { uint256 length = actions.length; for (uint256 i = 0; i < length; i++) { From ddeb8c31f82e879f66a962c3d2842b4204476404 Mon Sep 17 00:00:00 2001 From: hazim Date: Wed, 13 Aug 2025 07:29:46 +1000 Subject: [PATCH 31/42] Findings 9: add nonReentrant modfier to handleUpdates (#52) --- snapshots/Keystore32NodeUCMT.json | 4 ++-- src/core/Keystore.sol | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/snapshots/Keystore32NodeUCMT.json b/snapshots/Keystore32NodeUCMT.json index 4960650..b19f7ca 100644 --- a/snapshots/Keystore32NodeUCMT.json +++ b/snapshots/Keystore32NodeUCMT.json @@ -2,6 +2,6 @@ "1. registerNode": "76859", "2. validate (with proof)": "12384", "3. validate (without proof)": "5261", - "4. handleUpdates (with proof)": "64471", - "5. handleUpdates (without proof)": "55516" + "4. handleUpdates (with proof)": "64937", + "5. handleUpdates (without proof)": "55982" } \ No newline at end of file diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index aa4ad86..0667514 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.28; +import {ReentrancyGuardTransient} from "@openzeppelin/contracts/utils/ReentrancyGuardTransient.sol"; import {SIG_VALIDATION_FAILED} from "account-abstraction/core/Helpers.sol"; import {LibBytes} from "solady/utils/LibBytes.sol"; import {MerkleProofLib} from "solady/utils/MerkleProofLib.sol"; @@ -9,7 +10,7 @@ import {IKeystore} from "../interface/IKeystore.sol"; import {IVerifier} from "../interface/IVerifier.sol"; import {UpdateAction, ValidateAction} from "../lib/Actions.sol"; -contract Keystore is IKeystore { +contract Keystore is IKeystore, ReentrancyGuardTransient { uint256 constant NODE_VERIFIER_LENGTH = 20; mapping(bytes32 refHash => mapping(address account => bytes32 rootHash)) internal _rootHash; @@ -30,7 +31,7 @@ contract Keystore is IKeystore { * Relaying entities SHOULD run sufficient checks and simulations on their batch * before submitting onchain to prevent transaction reverts. */ - function handleUpdates(UpdateAction[] calldata actions) external { + function handleUpdates(UpdateAction[] calldata actions) external nonReentrant { uint256 length = actions.length; for (uint256 i = 0; i < length; i++) { UpdateAction calldata action = actions[i]; From 227016140103fe4914906d37f0f427ddd801840e Mon Sep 17 00:00:00 2001 From: hazim Date: Wed, 13 Aug 2025 08:11:19 +1000 Subject: [PATCH 32/42] Findings 26: document signature replayability for verifiers (#53) --- doc/spec.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/doc/spec.md b/doc/spec.md index 9ee715c..1f0a4b2 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -312,6 +312,21 @@ Assuming the `Keystore` contract is audited and verified to be safe, there are s Because the `Verifier` is not required to store configuration, it must trust the given config from a `validateData` call. If this config comes from the `Keystore` then it can be trusted given its validity has been cryptographically guaranteed by the Merkle tree proof. Therefore, a `Verifier` should only be called by the `Keystore` and calling the `Verifier` directly (e.g. via the account) should be avoided. +### Signature replayability on the `Verifier` + +`Verifier` contracts in this specification are intentionally stateless. The +`validateData` call only attests that the provided +signature (i.e. `data` input) correspond to the given `message` under the provided `config`. +They do not track or consume nonces. As a result, signature replayability is a +property of the upstream protocol that constructs the +`message`, not of the `Verifier` itself. Common examples of this are detailed below. + +- **Update flow (`handleUpdates` call)**: Replay is prevented by the + `Keystore` via a 2D nonce packed into `UpdateAction.nonce`. Cross chain replay can also be prevented by binding the signed message to the `chainId` with the `action.useChainId` flag. The `Verifier` does not need to add additional nonce checks here. +- **Validation flow (`validate` call)**: The `Keystore` forwards an arbitrary `message` chosen by the caller (typically the account). The `Verifier` only checks signature validity over that `message` and returns success or failure. Whether a valid signature can be replayed depends on how the `message` was formed. + - **ERC-4337 accounts**: The `message` SHOULD be the `userOpHash` which considers the `UserOperation` nonce. Replay protection is therefore provided by the ERC-4337 protocol. Submitting the same signed `userOpHash` again will fail due to the consumed account nonce. + - **ERC-1271 / off-chain signatures**: If the `message` does not include a nonce, timestamp window, session identifier, or other anti-replay material that is enforced by the upstream protocol or application, then a valid signature over the same `message` will be replayable by design. + ### Handling the Merkle tree data structure The Merkle tree itself is not considered a secret value. If it was publicly exposed, then the privacy properties would become nullified since it would be possible to track associated recovery signers and verification schemes of the account. For operational security, it would be best practice to consider the account's Merkle tree as sensitive. From 4e19cd4d3d47b694e15be213e9e93dacdb0cf2d5 Mon Sep 17 00:00:00 2001 From: hazim Date: Wed, 13 Aug 2025 10:30:59 +1000 Subject: [PATCH 33/42] Findings 36: minimal script for generating and verifying ucmt (#54) --- .gitignore | 3 + README.md | 13 + examples/verify-ucmt.ts | 48 ++ package-lock.json | 1068 +++++++++++++++++++++++++++++++++++++++ package.json | 14 + 5 files changed, 1146 insertions(+) create mode 100644 examples/verify-ucmt.ts create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore index 85198aa..25f3a30 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,6 @@ docs/ # Dotenv file .env + +# Dependency directories +node_modules/ \ No newline at end of file diff --git a/README.md b/README.md index a39d2c8..2eb578b 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ Before being able to run any command, you need to create a .env file and set you ```shell $ forge install +$ npm install ``` ### Build @@ -54,3 +55,15 @@ source .env && forge script script/DeployUserOpMultiSigVerifier.s.sol --rpc-url source .env && forge script script/DeployUserOpWebAuthnVerifier.s.sol --rpc-url $BASE_RPC_URL --ledger --verify --broadcast source .env && forge script script/DeployUserOpWebAuthnCosignVerifier.s.sol --rpc-url $BASE_RPC_URL --ledger --verify --broadcast ``` + +### Example scripts + +The following commands are useful for users and application developers to work with the Keystore protocol. + +#### Verify configuration + +A minimal script to generate and verify a UCMT using the [openzeppelin Merkle tree library](https://github.com/OpenZeppelin/merkle-tree). + +```shell +$ npm run examples:verify-ucmt +``` diff --git a/examples/verify-ucmt.ts b/examples/verify-ucmt.ts new file mode 100644 index 0000000..f61943d --- /dev/null +++ b/examples/verify-ucmt.ts @@ -0,0 +1,48 @@ +/** + * Minimal script to generate a User Configuration Merkle Tree (UCMT) and verify + * its root and proofs. + * + * By design, the Keystore holds only the Merkle tree root hash onchain while the + * actual configuration is stored offchain. Consequently, all stakeholders of an + * account MUST have access to the UCMT in order to verify that the onchain root + * hash exactly matches the expected configuration. This prevents a bad actor from + * attempting to hide a malicious configuration within the Merkle tree. + */ +import { SimpleMerkleTree } from "@openzeppelin/merkle-tree"; +import { AbiParameters, Hash } from "ox"; + +/** + * An example UCMT stored as an array of nodes. Each node is a tuple of the verifier + * address and the node configuration. When building the Merkle tree, each node is + * packed and hashed using `keccak256`. + */ +const USER_CONFIGURATION_MERKLE_TREE = [ + ["0x000000000000000000000000000000000000dEaD", "0xdeadbeef"], + ["0x000000000000000000000000000000000000bEEF", "0x"], + ["0x000000000000000000000000000000000000cafE", "0x0000000ff1ce"], + ["0x000000000000000000000000000000000000F00D", "0xc0ffee"], +] as const; + +function main() { + const merkleTree = SimpleMerkleTree.of( + USER_CONFIGURATION_MERKLE_TREE.map((node) => + Hash.keccak256(AbiParameters.encodePacked(["address", "bytes"], node)) + ) + ); + + console.log("UCMT:", USER_CONFIGURATION_MERKLE_TREE); + console.log("UCMT root:", merkleTree.root); + console.log("UCMT proofs..."); + USER_CONFIGURATION_MERKLE_TREE.forEach((_, i) => + console.log(`node ${i + 1}:`, merkleTree.getProof(i)) + ); + + console.log( + "\nVerify different configurations by changing the merkle tree in examples/verify-ucmt.ts." + ); + console.log( + "Always check that your UCMT aligns with your account's onchain root hash." + ); +} + +main(); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b6f3e77 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1068 @@ +{ + "name": "keystore", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "keystore", + "version": "1.0.0", + "dependencies": { + "@openzeppelin/merkle-tree": "^1.0.8", + "ox": "^0.8.8" + }, + "devDependencies": { + "tsx": "^4.20.4" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.0.tgz", + "integrity": "sha512-/3DDPKHqqIqxUULp8yP4zODUY1i+2xvVWsv8A79xGWdCAG+8sb0hRh0Rk2QyOJUnnbyPUAZYcpBuRe3nS2OIUg==", + "license": "MIT" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@ethereumjs/common": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", + "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", + "license": "MIT", + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "crc-32": "^1.2.0" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/tx": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", + "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "license": "MPL-2.0", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/@metamask/abi-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-2.0.4.tgz", + "integrity": "sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ==", + "license": "(Apache-2.0 AND MIT)", + "dependencies": { + "@metamask/superstruct": "^3.1.0", + "@metamask/utils": "^9.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/superstruct": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.2.1.tgz", + "integrity": "sha512-fLgJnDOXFmuVlB38rUN5SmU7hAFQcCjrg3Vrxz67KTY7YHFnSNEKvX4avmEBdOI0yTCxZjwMCFEqsC8k2+Wd3g==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "license": "ISC", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.0", + "@noble/hashes": "^1.3.1", + "@scure/base": "^1.1.3", + "@types/debug": "^4.1.7", + "debug": "^4.3.4", + "pony-cause": "^2.1.10", + "semver": "^7.5.4", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.0.tgz", + "integrity": "sha512-7YDlXiNMdO1YZeH6t/kvopHHbIZzlxrCV9WLqCY6QhcXOoXiNCMDqJIglZ9Yjx5+w7Dz30TITFrlTjnRg7sKEg==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@openzeppelin/merkle-tree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@openzeppelin/merkle-tree/-/merkle-tree-1.0.8.tgz", + "integrity": "sha512-E2c9/Y3vjZXwVvPZKqCKUn7upnvam1P1ZhowJyZVQSkzZm5WhumtaRr+wkUXrZVfkIc7Gfrl7xzabElqDL09ow==", + "license": "MIT", + "dependencies": { + "@metamask/abi-utils": "^2.0.4", + "ethereum-cryptography": "^3.0.0" + } + }, + "node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/abitype": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.8.tgz", + "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" + } + }, + "node_modules/ethereum-cryptography": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-3.2.0.tgz", + "integrity": "sha512-Urr5YVsalH+Jo0sYkTkv1MyI9bLYZwW8BENZCeE1QYaTHETEYx0Nv/SVsWkSqpYrzweg6d8KMY1wTjH/1m/BIg==", + "license": "MIT", + "dependencies": { + "@noble/ciphers": "1.3.0", + "@noble/curves": "1.9.0", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0" + }, + "engines": { + "node": "^14.21.3 || >=16", + "npm": ">=9" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==", + "license": "MIT" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/ox": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.8.8.tgz", + "integrity": "sha512-YHEHSJbkiDHi95Mr1S4QcVQX7n4e3KwT03p8q/lxAMs5iiwrSv2NS2UdVRtOyDJyD1jv7CoZUERGGeVIRWhArg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.0.8", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ox/node_modules/@noble/curves": { + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.6.tgz", + "integrity": "sha512-GIKz/j99FRthB8icyJQA51E8Uk5hXmdyThjgQXRKiv9h0zeRlzSCLIzFw6K1LotZ3XuB7yzlf76qk7uBmTdFqA==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/pony-cause": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", + "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", + "license": "0BSD", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tsx": { + "version": "4.20.4", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.4.tgz", + "integrity": "sha512-yyxBKfORQ7LuRt/BQKBXrpcq59ZvSW0XxwfjAt3w2/8PmdxaFzijtMhTawprSHhpzeM5BgU2hXHG3lklIERZXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..1f0d8d0 --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "keystore", + "version": "1.0.0", + "scripts": { + "examples:verify-ucmt": "tsx ./examples/verify-ucmt.ts" + }, + "devDependencies": { + "tsx": "^4.20.4" + }, + "dependencies": { + "@openzeppelin/merkle-tree": "^1.0.8", + "ox": "^0.8.8" + } +} From 6326cd3e971965f4c8677933998ca0b8459b4d2a Mon Sep 17 00:00:00 2001 From: hazim-j Date: Wed, 13 Aug 2025 10:38:18 +1000 Subject: [PATCH 34/42] Fix: spec formatting --- doc/spec.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/doc/spec.md b/doc/spec.md index 1f0a4b2..a3ff7b5 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -314,12 +314,7 @@ Because the `Verifier` is not required to store configuration, it must trust the ### Signature replayability on the `Verifier` -`Verifier` contracts in this specification are intentionally stateless. The -`validateData` call only attests that the provided -signature (i.e. `data` input) correspond to the given `message` under the provided `config`. -They do not track or consume nonces. As a result, signature replayability is a -property of the upstream protocol that constructs the -`message`, not of the `Verifier` itself. Common examples of this are detailed below. +`Verifier` contracts in this specification are intentionally stateless. The `validateData` call only attests that the provided signature (i.e. `data` input) correspond to the given `message` under the provided `config`. They do not track or consume nonces. As a result, signature replayability is a property of the upstream protocol that constructs the `message`, not of the `Verifier` itself. Common examples of this are detailed below. - **Update flow (`handleUpdates` call)**: Replay is prevented by the `Keystore` via a 2D nonce packed into `UpdateAction.nonce`. Cross chain replay can also be prevented by binding the signed message to the `chainId` with the `action.useChainId` flag. The `Verifier` does not need to add additional nonce checks here. From 6376466e96d06b68fe6182ff42deb94c063b26e4 Mon Sep 17 00:00:00 2001 From: hazim Date: Wed, 13 Aug 2025 11:21:01 +1000 Subject: [PATCH 35/42] Findings 41: consider process for adding new verifiers (#55) --- doc/spec.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/spec.md b/doc/spec.md index a3ff7b5..33b7a53 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -322,6 +322,14 @@ Because the `Verifier` is not required to store configuration, it must trust the - **ERC-4337 accounts**: The `message` SHOULD be the `userOpHash` which considers the `UserOperation` nonce. Replay protection is therefore provided by the ERC-4337 protocol. Submitting the same signed `userOpHash` again will fail due to the consumed account nonce. - **ERC-1271 / off-chain signatures**: If the `message` does not include a nonce, timestamp window, session identifier, or other anti-replay material that is enforced by the upstream protocol or application, then a valid signature over the same `message` will be replayable by design. +### Users and wallets must have a secure process for adding `Verifiers` + +The `Keystore` does not impose any checks on each node beyond verifying its inclusion within the Merkle tree. The upside is that any verification scheme can be supported as long as the `Verifier` adheres to the correct interface. However, this could also pose a security risk if not careful. For example, a verifier that always returns `SIG_VALIDATION_SUCCESS` could allow a full account takeover by any entity that can generate a correct proof. To prevent this the following recommendations should be followed by users and wallet developers. + +- `Verifier` code MUST be audited and transparent. +- All account stakeholders MUST have access to the full Merkle tree. +- Stakeholders MUST be able to verify the expected Merkle tree aligns with the root hash stored onchain in order to prevent malicious interfaces from hiding unknown nodes. + ### Handling the Merkle tree data structure The Merkle tree itself is not considered a secret value. If it was publicly exposed, then the privacy properties would become nullified since it would be possible to track associated recovery signers and verification schemes of the account. For operational security, it would be best practice to consider the account's Merkle tree as sensitive. From 12fddc654bff6bad993c6a93fac3bfa55a725410 Mon Sep 17 00:00:00 2001 From: hazim Date: Wed, 13 Aug 2025 14:04:09 +1000 Subject: [PATCH 36/42] Findings 11: document fragmentation cases (#56) --- doc/spec.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/spec.md b/doc/spec.md index 33b7a53..e4701d5 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -347,3 +347,13 @@ It is therefore recommended that wallets provide robust backup options for the M The simple approach outlined in the rationale would be considered safe because there are no avenues for a compromised relayer to escalate privileges and gain full access to account funds. In the worst case, an account holder could pay the service fee and the relayer would not execute on the sync. In such a case the account is free to exit out of the relaying service with no lock-ins. That said, there are legitimate security concerns if a relaying service is given the ability to update the `rootHash` on its own rather then only broadcasting updates that have been signed by the account holder. In the former case, there will be a clear route for privilege escalation where a relayer could update the `rootHash` to a config where it has the ability to access account funds. + +### Handling cross-chain sync fragmentation + +The `Keystore` is designed to ensure that a multi-chain account can keep its configuration easily in sync. However fragmentation is NOT completely unavoidable and the user, wallet, and delegated relayer should have processes in place to bring it back into sync. Common fragmentation scenarios are outlined below. + +- **Deployment on new chain**: All past `UpdateActions` can either be replayed in order or the wallet can prompt the user to sign a once off `UpdateAction` to bring the new chain in sync. Future updates can make use of a new `nonceKey` to ensure the nonce sequence of the new chain is aligned with the rest. +- **Update fails on some chains**: This could occur for a number of chain specific reasons. For example if an `UpdateAction` was created assuming a cached node but the node has not been registered on all chains then this would lead to some chains reverting with an `UnregisteredProof()` error. Wallets must rectify this by prompting the user to sign a second `UpdateAction` but without using the cache. Similarly, relayers must be able to manage competing `UpdateActions` with the same nonce and `nextHash` if replaying on other chains. +- **Competing updates at the same nonce**: If multiple `UpdateActions` with the same `nonce` are signed and different subsets of chains accept different `nextHash` values, chains will diverge. This can be resolve by selecting a canonical root and issuing a subsequent `UpdateAction` from each chain’s current root to the canonical root. + +Although the protocol makes it feasible to maintain cross-chain sync of account configuration, it is the responsibility of off-chain entities to ensure fragmentation is avoided or resolved. From 155be1996c86eab31fa9ece87e7865968a5dd4e6 Mon Sep 17 00:00:00 2001 From: hazim-j Date: Wed, 13 Aug 2025 19:30:51 +1000 Subject: [PATCH 37/42] fix: graph style --- doc/spec.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/spec.md b/doc/spec.md index e4701d5..68542e1 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -60,10 +60,10 @@ graph TD HashD --> Config7[Node #7] HashD --> Config8[Node #8] - style Config3 fill:darkblue - style Config4 fill:darkblue - style HashA fill:darkblue - style HashCD fill:darkblue + style Config3 fill:blue,color:white + style Config4 fill:blue,color:white + style HashA fill:blue,color:white + style HashCD fill:blue,color:white ``` ### `Keystore` singleton From 41a887bf2b1ca3824295d3a74b5aae6253329453 Mon Sep 17 00:00:00 2001 From: hazim Date: Fri, 15 Aug 2025 08:11:02 +1000 Subject: [PATCH 38/42] Findings 13: add next root hash validation (#57) --- doc/spec.md | 73 +++- snapshots/Keystore32NodeUCMT.json | 8 +- src/core/Keystore.sol | 74 +++- src/interface/IKeystore.sol | 3 +- src/lib/Actions.sol | 3 + test/core/Keystore.t.sol | 559 ++++++++++++++++++------ test/snapshots/Keystore32NodeUCMT.t.sol | 49 ++- 7 files changed, 580 insertions(+), 189 deletions(-) diff --git a/doc/spec.md b/doc/spec.md index 68542e1..9836c63 100644 --- a/doc/spec.md +++ b/doc/spec.md @@ -88,6 +88,9 @@ struct UpdateAction { bytes proof; bytes node; bytes data; + bytes nextProof; + bytes nextNode; + bytes nextData; } struct ValidateAction { @@ -101,19 +104,20 @@ struct ValidateAction { interface Keystore { error InvalidNonce(); error InvalidProof(); + error InvalidNextProof(); error UnregisteredProof(); error InvalidNode(); error InvalidVerifier(); event RootHashUpdated( - bytes32 indexed refHash, bytes32 nextHash, uint256 nonce, bytes proof, bytes node, bytes data, bool success + bytes32 indexed refHash, address indexed account, bytes32 indexed nextHash, uint256 nonce, bool success ); function handleUpdates(UpdateAction[] calldata actions) external; function validate(ValidateAction calldata action) external view returns (uint256 validationData); function registerNode(bytes32 refHash, bytes32[] calldata proof, bytes calldata node) external; - function getRegisteredNode(bytes32 refHash, address account, bytes calldata node) + function getRegisteredNode(bytes32 refHash, address account, bytes32 nodeHash) external view returns (bytes memory); @@ -139,15 +143,19 @@ In the initial edge case where `rootHash` is equal to zero, then the `Keystore` Updating a configuration set is equivalent to updating the current root hash in the `Keystore`. The essential data structure in this flow is the `UpdateAction` intent. -| Field | Type | Description | -| ---------- | ----------- | ------------------------------------------------------------------------------------- | -| `refHash` | `bytes32` | Permanent reference hash for the UCMT. | -| `nextHash` | `bytes32` | Next root hash after the update. | -| `nonce` | `uint256` | 2D nonce with packed `uint192` key and `uint64` sequence. Prevents replaying updates. | -| `account` | `address` | The account address tied to this `refHash`. | -| `proof` | `bytes32[]` | Merkle proof for the node. | -| `node` | `bytes` | Node data containing `verifier` and `config`. | -| `data` | `bytes` | Arbitrary data for the verifier. | +| Field | Type | Description | +| ------------ | --------- | --------------------------------------------------------------------------------------------------- | +| `refHash` | `bytes32` | Permanent reference hash for the UCMT. | +| `nextHash` | `bytes32` | Next root hash after the update. | +| `nonce` | `uint256` | 2D nonce with packed `uint192` key and `uint64` sequence. Prevents replaying updates. | +| `useChainId` | `bool` | A flag to signal the `Keystore` to include the `chainId` in the message for chain specific updates. | +| `account` | `address` | The account address tied to this `refHash`. | +| `proof` | `bytes` | Merkle proof for the node. | +| `node` | `bytes` | Node data containing `verifier` and `config`. | +| `data` | `bytes` | Arbitrary data for the verifier. | +| `nextProof` | `bytes` | Merkle proof for verifying inclusion of the `node` or `nextNode` in the updated root hash. | +| `nextNode` | `bytes` | Optional next node data containing `verifier` and `config`. If `nil`, `node` will be used. | +| `nextData` | `bytes` | Optional arbitrary data for the next verifier. | On a systems level, the root hash update has the following lifecycle. @@ -156,20 +164,34 @@ sequenceDiagram Caller->>Keystore: Call handleUpdates loop Every update action Keystore->>Keystore: Get latest root hash - Keystore->>Keystore: Verify proof + Keystore->>Keystore: Prove node inclusion in root hash Keystore->>Verifier: Call validateData Verifier->>Verifier: Verify update data Verifier->>Keystore: Return validationData + alt next node is nil + Keystore->>Keystore: Prove node inclusion in next root hash + else + Keystore->>Keystore: Prove next node inclusion in next root hash + Keystore->>Next Verifier: Call validateData + Next Verifier->>Keystore: Return validationData + end Keystore->>Keystore: Update root hash end ``` This process begins with the `Caller` initiating the `handleUpdates` function on the `Keystore` contract. For every `UpdateAction` in the batch, the `Keystore` MUST verify the UCMT proof. If ok, then the `Keystore` calls `validateData` on the `Verifier` encoded in the `node`. This will check if the update to the next root hash is valid and returns a corresponding `validationData` value. -Note that `handleUpdates` accepts a batch of `updateAction` objects by design in order to support use cases where other entities, such as solvers, are relaying updates on behalf of many accounts. +Note that `handleUpdates` accepts a batch of `updateAction` objects by design in order to support use cases where other entities, such as relayers, are broadcasting updates on behalf of many accounts. The returned `validationData` is a `uint256` with no implied structure except for a literal value of `1` which MUST signal a failed validation. Besides this, the `Verifier` and downstream callers are free to interpret this value in any way they see fit. This pattern was made to be especially adaptable with ERC-4337 which has specific standards for packing `validUntil` and `validAfter` values for a transaction. +##### Next root hash validation + +As a safety mechanism to prevent account bricking, the `Keystore` will also verify that the root hash of the next UCMT can be accessible by at least one known node. To do this, an `UpdateAction` has a mandatory field for `nextProof` and optional fields for `nextNode` and `nextData`. During an update, two flows are considered. + +1. The current `node` is included in the next UCMT. In this case `nextNode` and `nextData` is set to `nil`. The `Keystore` will verify `nextProof` and only a single `node` verifier call is required. +2. The current `node` is either not included in the next UCMT or obfuscated. In this case, `nextNode` and `nextData` is required. The `Keystore` will verify `nextProof` and make an additional call to the `nextNode` verifier. + ##### Replay protection In order to prevent replaying old updates the `Keystore` MUST use a nonce mechanism. We implement a 2D nonce in order to allow for easier expansion into new chains without having to "catch up" to the latest nonce of the canonical chain. For example, with a 1 dimensional nonce, if the root hash has been updated X times on chain A before broadcasting to chain B then chain B must effectively re-run X number of old updates to be at the latest nonce. This is solved with a 2D nonce since adding a new chain would just require an increment of the nonce key which would reset all chain sequences back to 0. @@ -228,9 +250,28 @@ It is worth noting that there is no enforced data structure on the `data` and `c When updating the root hash, the `Keystore` MUST call the `validateData` function with the following `message` format. ```solidity -bytes32 message = useChainId - ? keccak256(abi.encode(refHash, nextHash, account, nonce, keccak256(node), block.chainid)) - : keccak256(abi.encode(refHash, nextHash, account, nonce, keccak256(node))); +bytes32 message = action.useChainId + ? keccak256( + abi.encode( + action.refHash, + action.nextHash, + action.account, + action.nonce, + keccak256(action.node), + keccak256(action.nextNode), + block.chainid + ) + ) + : keccak256( + abi.encode( + action.refHash, + action.nextHash, + action.account, + action.nonce, + keccak256(action.node), + keccak256(action.nextNode) + ) + ); ``` Note that by default, `chainId` is not part of this message hash since it is expected that an `UpdateAction` can be replayed across all chains. However, under certain scenarios where a user does NOT require cross chain replayability, the `useChainId` flag in `UpdateAction` can be set to `true`. The resulting message hash will then include the `chainId` for signing. diff --git a/snapshots/Keystore32NodeUCMT.json b/snapshots/Keystore32NodeUCMT.json index b19f7ca..03d374f 100644 --- a/snapshots/Keystore32NodeUCMT.json +++ b/snapshots/Keystore32NodeUCMT.json @@ -1,7 +1,7 @@ { "1. registerNode": "76859", - "2. validate (with proof)": "12384", - "3. validate (without proof)": "5261", - "4. handleUpdates (with proof)": "64937", - "5. handleUpdates (without proof)": "55982" + "2. validate (with proof)": "12338", + "3. validate (without proof)": "5215", + "4. handleUpdates (with proof)": "63774", + "5. handleUpdates (without proof)": "56642" } \ No newline at end of file diff --git a/src/core/Keystore.sol b/src/core/Keystore.sol index 0667514..036c35e 100644 --- a/src/core/Keystore.sol +++ b/src/core/Keystore.sol @@ -22,6 +22,7 @@ contract Keystore is IKeystore, ReentrancyGuardTransient { * any of the following errors: * - InvalidNonce() * - InvalidProof() + * - InvalidNextProof() * - UnregisteredProof() * - InvalidNode() * - InvalidVerifier() @@ -35,27 +36,25 @@ contract Keystore is IKeystore, ReentrancyGuardTransient { uint256 length = actions.length; for (uint256 i = 0; i < length; i++) { UpdateAction calldata action = actions[i]; + (uint192 nonceKey, uint64 nonceSeq) = _unpackNonceKey(action.nonce); uint64 currSeq = _validateAndGetNonce(action.refHash, action.account, nonceKey, nonceSeq); (bytes32 nodeHash, bytes memory node) = _fetchOrValidateNode(action.refHash, action.account, action.proof, action.node); - (address verifier, bytes memory config) = _unpackNode(node); - bytes32 message = action.useChainId - ? keccak256( - abi.encode(action.refHash, action.nextHash, action.account, action.nonce, nodeHash, block.chainid) - ) - : keccak256(abi.encode(action.refHash, action.nextHash, action.account, action.nonce, nodeHash)); - if (IVerifier(verifier).validateData(message, action.data, config) == SIG_VALIDATION_FAILED) { - emit RootHashUpdated( - action.refHash, action.nextHash, action.nonce, action.proof, node, action.data, false - ); + bytes32 message = _getUpdateActionHash(action, nodeHash); + + if (_isSigValidationFailed(message, node, action.data)) { + emit RootHashUpdated(action.refHash, action.account, action.nextHash, action.nonce, false); + } else if ( + _requiresNextNodeVerifierCall(action.nextHash, nodeHash, action.nextProof, action.nextNode) + && _isSigValidationFailed(message, action.nextNode, action.nextData) + ) { + emit RootHashUpdated(action.refHash, action.account, action.nextHash, action.nonce, false); } else { _rootHash[action.refHash][action.account] = action.nextHash; _incrementNonce(action.refHash, action.account, nonceKey, currSeq); - emit RootHashUpdated( - action.refHash, action.nextHash, action.nonce, action.proof, node, action.data, true - ); + emit RootHashUpdated(action.refHash, action.account, action.nextHash, action.nonce, true); } } } @@ -147,4 +146,53 @@ contract Keystore is IKeystore, ReentrancyGuardTransient { require(MerkleProofLib.verify(proof, _getCurrentRootHash(refHash, account), nodeHash), InvalidProof()); } } + + function _getUpdateActionHash(UpdateAction calldata action, bytes32 nodeHash) + internal + view + returns (bytes32 message) + { + message = action.useChainId + ? keccak256( + abi.encode( + action.refHash, + action.nextHash, + action.account, + action.nonce, + nodeHash, + keccak256(action.nextNode), + block.chainid + ) + ) + : keccak256( + abi.encode( + action.refHash, action.nextHash, action.account, action.nonce, nodeHash, keccak256(action.nextNode) + ) + ); + } + + function _isSigValidationFailed(bytes32 message, bytes memory node, bytes memory data) + internal + view + returns (bool) + { + (address verifier, bytes memory config) = _unpackNode(node); + return IVerifier(verifier).validateData(message, data, config) == SIG_VALIDATION_FAILED; + } + + function _requiresNextNodeVerifierCall( + bytes32 nextHash, + bytes32 nodeHash, + bytes calldata nextProof, + bytes calldata nextNode + ) internal pure returns (bool) { + (bytes32[] memory proof) = abi.decode(nextProof, (bytes32[])); + if (nextNode.length == 0) { + require(MerkleProofLib.verify(proof, nextHash, nodeHash), InvalidNextProof()); + return false; + } else { + require(MerkleProofLib.verify(proof, nextHash, keccak256(nextNode)), InvalidNextProof()); + return true; + } + } } diff --git a/src/interface/IKeystore.sol b/src/interface/IKeystore.sol index c542c3f..bdc240a 100644 --- a/src/interface/IKeystore.sol +++ b/src/interface/IKeystore.sol @@ -6,12 +6,13 @@ import {UpdateAction, ValidateAction} from "../lib/Actions.sol"; interface IKeystore { error InvalidNonce(); error InvalidProof(); + error InvalidNextProof(); error UnregisteredProof(); error InvalidNode(); error InvalidVerifier(); event RootHashUpdated( - bytes32 indexed refHash, bytes32 nextHash, uint256 nonce, bytes proof, bytes node, bytes data, bool success + bytes32 indexed refHash, address indexed account, bytes32 indexed nextHash, uint256 nonce, bool success ); function handleUpdates(UpdateAction[] calldata actions) external; diff --git a/src/lib/Actions.sol b/src/lib/Actions.sol index da5c0a5..573ce28 100644 --- a/src/lib/Actions.sol +++ b/src/lib/Actions.sol @@ -10,6 +10,9 @@ struct UpdateAction { bytes proof; bytes node; bytes data; + bytes nextProof; + bytes nextNode; + bytes nextData; } struct ValidateAction { diff --git a/test/core/Keystore.t.sol b/test/core/Keystore.t.sol index f17e6e8..3bcc067 100644 --- a/test/core/Keystore.t.sol +++ b/test/core/Keystore.t.sol @@ -23,10 +23,19 @@ contract KeystoreTest is Test { bytes node; } + struct MultiUpdateProps { + UCMTProps init; + UCMTProps next; + UCMTProps fin; + } + struct UpdateInputs { bytes32 refHash; + bytes32 nextHash; bytes proof; bytes node; + bytes nextProof; + bytes nextNode; uint256 nonce; bytes32 message; } @@ -57,43 +66,74 @@ contract KeystoreTest is Test { function testFuzz_registerNodeWithMultipleRootHashUpdates( bytes32[] calldata nodes, bytes32[] calldata nextNodes, - bytes32 finalHash, + bytes32[] calldata finalNodes, uint256 index, bytes calldata nodeConfig, bytes calldata data ) public { vm.assume(nextNodes.length > 1 && index < nextNodes.length); - address nodeVerifier = address(new VerifierMock(SIG_VALIDATION_SUCCESS)); - - UCMTProps memory init = _packNodeAndGenerateUCMTProps(nodes, index, nodeVerifier, nodeConfig); - UCMTProps memory next = _packNodeAndGenerateUCMTProps(nextNodes, index, nodeVerifier, nodeConfig); - assertNotEq(init.root, next.root); - assertNotEq(init.proof, next.proof); - assertEq(init.node, next.node); + vm.assume(finalNodes.length > 1 && index < finalNodes.length); + MultiUpdateProps memory props = _generateAndAssertMultiUpdateProps( + address(new VerifierMock(SIG_VALIDATION_SUCCESS)), + address(new VerifierMock(SIG_VALIDATION_SUCCESS)), + nodes, + nextNodes, + finalNodes, + index, + nodeConfig + ); // Registers a proof when rootHash == refHash - bytes32 initNodeHash = keccak256(init.node); - assertEq(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 0); - _registerNode(init.root, init.proof, init.node); - assertGe(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 20); + bytes32 initNodeHash = keccak256(props.init.node); + assertEq(keystore.getRegisteredNode(props.init.root, address(this), initNodeHash).length, 0); + _registerNode(props.init.root, props.init.proof, props.init.node); + assertGe(keystore.getRegisteredNode(props.init.root, address(this), initNodeHash).length, 20); // Update rootHash to nextHash - keystore.handleUpdates(_getUpdateActions(init.root, next.root, 0, "", bytes.concat(initNodeHash), data)); - assertEq(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 0); + // Node is included in the next UCMT so nextNode & nextData can be nil + keystore.handleUpdates( + _getUpdateActions( + props.init.root, props.next.root, 0, "", bytes.concat(initNodeHash), data, props.next.proof, "", "" + ) + ); + assertEq(keystore.getRegisteredNode(props.init.root, address(this), initNodeHash).length, 0); // Registers a proof when rootHash == nextHash - _registerNode(init.root, next.proof, next.node); - assertGe(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 20); + _registerNode(props.init.root, props.next.proof, props.next.node); + assertGe(keystore.getRegisteredNode(props.init.root, address(this), initNodeHash).length, 20); // Update rootHash to finalHash - // Note: if finalHash is zero, then we are essentially going back to the - // refHash where the node is already cached. This is expected. - keystore.handleUpdates(_getUpdateActions(init.root, finalHash, 1, "", bytes.concat(keccak256(next.node)), data)); - if (finalHash == 0) { - assertGe(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 20); - } else { - assertEq(keystore.getRegisteredNode(init.root, address(this), initNodeHash).length, 0); - } + // Node is NOT included in the final UCMT so nextNode & nextData are required + keystore.handleUpdates( + _getUpdateActions( + props.init.root, + props.fin.root, + 1, + "", + bytes.concat(keccak256(props.next.node)), + data, + props.fin.proof, + props.fin.node, + data + ) + ); + assertEq(keystore.getRegisteredNode(props.init.root, address(this), initNodeHash).length, 0); + + // Update rootHash back to refHash and cache state should follow + keystore.handleUpdates( + _getUpdateActions( + props.init.root, + props.init.root, + 2, + props.fin.proof, + props.fin.node, + data, + props.init.proof, + props.init.node, + data + ) + ); + assertGe(keystore.getRegisteredNode(props.init.root, address(this), initNodeHash).length, 20); } function testFuzz_registerNodeWithInvalidNode(bytes32[] calldata nodes, uint256 index, bytes calldata node) @@ -145,11 +185,10 @@ contract KeystoreTest is Test { uint256 validationData ) public { address nodeVerifier = address(new VerifierMock(validationData)); - (bytes32 root, bytes memory proof, bytes memory node) = - _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); + UCMTProps memory curr = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); ValidateAction memory action = - ValidateAction({refHash: root, message: message, proof: proof, node: node, data: data}); + ValidateAction({refHash: curr.root, message: message, proof: curr.proof, node: curr.node, data: data}); assertEq(keystore.validate(action), validationData); } @@ -162,12 +201,16 @@ contract KeystoreTest is Test { uint256 validationData ) public { address nodeVerifier = address(new VerifierMock(validationData)); - (bytes32 root, bytes memory proof, bytes memory node) = - _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); - _registerNode(root, proof, node); - - ValidateAction memory action = - ValidateAction({refHash: root, message: message, proof: "", node: abi.encode(keccak256(node)), data: data}); + UCMTProps memory curr = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); + _registerNode(curr.root, curr.proof, curr.node); + + ValidateAction memory action = ValidateAction({ + refHash: curr.root, + message: message, + proof: "", + node: abi.encode(keccak256(curr.node)), + data: data + }); assertEq(keystore.validate(action), validationData); } @@ -180,10 +223,10 @@ contract KeystoreTest is Test { bytes calldata data ) public { vm.assume(nodeVerifier != address(0)); - (bytes32 root,, bytes memory node) = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); + UCMTProps memory curr = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); ValidateAction memory action = - ValidateAction({refHash: root, message: message, proof: "", node: node, data: data}); + ValidateAction({refHash: curr.root, message: message, proof: "", node: curr.node, data: data}); vm.expectRevert(IKeystore.UnregisteredProof.selector); keystore.validate(action); } @@ -198,10 +241,10 @@ contract KeystoreTest is Test { bytes calldata data ) public { vm.assume(nodeVerifier != address(0)); - (, bytes memory proof, bytes memory node) = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); + UCMTProps memory curr = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); ValidateAction memory action = - ValidateAction({refHash: badRoot, message: message, proof: proof, node: node, data: data}); + ValidateAction({refHash: badRoot, message: message, proof: curr.proof, node: curr.node, data: data}); vm.expectRevert(IKeystore.InvalidProof.selector); keystore.validate(action); } @@ -230,17 +273,15 @@ contract KeystoreTest is Test { bytes calldata data ) public { address badVerifier = address(0); - (bytes32 root, bytes memory proof, bytes memory node) = - _packNodeAndGenerateUCMT(nodes, index, badVerifier, nodeConfig); + UCMTProps memory curr = _packNodeAndGenerateUCMT(nodes, index, badVerifier, nodeConfig); ValidateAction memory action = - ValidateAction({refHash: root, message: message, proof: proof, node: node, data: data}); + ValidateAction({refHash: curr.root, message: message, proof: curr.proof, node: curr.node, data: data}); vm.expectRevert(IKeystore.InvalidVerifier.selector); keystore.validate(action); } function testFuzz_handleUpdates( - bytes32 nextHash, uint192 nonceKey, bytes32[] calldata nodes, uint256 index, @@ -248,22 +289,54 @@ contract KeystoreTest is Test { bytes calldata data ) public { address nodeVerifier = address(new VerifierMock(SIG_VALIDATION_SUCCESS)); - UpdateInputs memory inputs = - _packNodeAndGetUpdateInputs(nextHash, nonceKey, nodes, index, nodeVerifier, nodeConfig); + UpdateInputs memory inputs = _packNodeAndGetUpdateInputs(nonceKey, nodes, index, nodeVerifier, nodeConfig); vm.expectEmit(); - emit IKeystore.RootHashUpdated(inputs.refHash, nextHash, inputs.nonce, inputs.proof, inputs.node, data, true); + emit IKeystore.RootHashUpdated(inputs.refHash, address(this), inputs.nextHash, inputs.nonce, true); keystore.handleUpdates( - _getUpdateActions(inputs.refHash, nextHash, inputs.nonce, inputs.proof, inputs.node, data) + _getUpdateActions( + inputs.refHash, inputs.nextHash, inputs.nonce, inputs.proof, inputs.node, data, inputs.nextProof, "", "" + ) ); - bytes32 expectedRootHash = nextHash == bytes32(0) ? inputs.refHash : nextHash; assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 1 | uint256(nonceKey) << 64); - assertEq(keystore.getRootHash(inputs.refHash, address(this)), expectedRootHash); + assertEq(keystore.getRootHash(inputs.refHash, address(this)), inputs.nextHash); + } + + function testFuzz_handleUpdatesNextValidation( + uint192 nonceKey, + bytes32[] calldata nodes, + uint256 index, + bytes calldata nodeConfig, + bytes calldata data + ) public { + address nodeVerifier = address(new VerifierMock(SIG_VALIDATION_SUCCESS)); + address nextNodeVerifier = address(new VerifierMock(SIG_VALIDATION_SUCCESS)); + UpdateInputs memory inputs = _packNodeAndGetUpdateInputsWithNextNodeVerifier( + nonceKey, nodes, index, nodeVerifier, nextNodeVerifier, nodeConfig + ); + + vm.expectEmit(); + emit IKeystore.RootHashUpdated(inputs.refHash, address(this), inputs.nextHash, inputs.nonce, true); + keystore.handleUpdates( + _getUpdateActions( + inputs.refHash, + inputs.nextHash, + inputs.nonce, + inputs.proof, + inputs.node, + data, + inputs.nextProof, + inputs.nextNode, + data + ) + ); + + assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 1 | uint256(nonceKey) << 64); + assertEq(keystore.getRootHash(inputs.refHash, address(this)), inputs.nextHash); } function testFuzz_handleUpdatesInvalidNonce( - bytes32 nextHash, uint192 nonceKey, bytes32[] calldata nodes, uint256 index, @@ -272,12 +345,21 @@ contract KeystoreTest is Test { bytes calldata data ) public { vm.assume(nodeVerifier != address(0)); - UpdateInputs memory inputs = - _packNodeAndGetUpdateInputs(nextHash, nonceKey, nodes, index, nodeVerifier, nodeConfig); + UpdateInputs memory inputs = _packNodeAndGetUpdateInputs(nonceKey, nodes, index, nodeVerifier, nodeConfig); vm.expectRevert(IKeystore.InvalidNonce.selector); keystore.handleUpdates( - _getUpdateActions(inputs.refHash, nextHash, inputs.nonce + 1, inputs.proof, inputs.node, data) + _getUpdateActions( + inputs.refHash, + inputs.nextHash, + inputs.nonce + 1, + inputs.proof, + inputs.node, + data, + inputs.nextProof, + "", + "" + ) ); assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 0 | uint256(nonceKey) << 64); @@ -285,7 +367,6 @@ contract KeystoreTest is Test { } function testFuzz_handleUpdatesInvalidProof( - bytes32 nextHash, uint192 nonceKey, bytes32[] calldata nodes, uint256 index, @@ -294,15 +375,16 @@ contract KeystoreTest is Test { bytes calldata data ) public { vm.assume(nodeVerifier != address(0)); - UpdateInputs memory inputs = - _packNodeAndGetUpdateInputs(nextHash, nonceKey, nodes, index, nodeVerifier, nodeConfig); + UpdateInputs memory inputs = _packNodeAndGetUpdateInputs(nonceKey, nodes, index, nodeVerifier, nodeConfig); bytes32[] memory badProof = new bytes32[](1); badProof[0] = bytes32(0); inputs.proof = abi.encode(badProof); vm.expectRevert(IKeystore.InvalidProof.selector); keystore.handleUpdates( - _getUpdateActions(inputs.refHash, nextHash, inputs.nonce, inputs.proof, inputs.node, data) + _getUpdateActions( + inputs.refHash, inputs.nextHash, inputs.nonce, inputs.proof, inputs.node, data, inputs.nextProof, "", "" + ) ); assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 0 | uint256(nonceKey) << 64); @@ -310,7 +392,6 @@ contract KeystoreTest is Test { } function testFuzz_handleUpdatesInvalidNode( - bytes32 nextHash, uint192 nonceKey, bytes32[] calldata nodes, uint256 index, @@ -318,11 +399,13 @@ contract KeystoreTest is Test { bytes calldata data ) public { vm.assume(node.length < 20); - UpdateInputs memory inputs = _getUpdateInputs(nextHash, nonceKey, nodes, index, node); + UpdateInputs memory inputs = _getUpdateInputs(nonceKey, nodes, index, node); vm.expectRevert(IKeystore.InvalidNode.selector); keystore.handleUpdates( - _getUpdateActions(inputs.refHash, nextHash, inputs.nonce, inputs.proof, inputs.node, data) + _getUpdateActions( + inputs.refHash, inputs.nextHash, inputs.nonce, inputs.proof, inputs.node, data, inputs.nextProof, "", "" + ) ); assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 0 | uint256(nonceKey) << 64); @@ -330,19 +413,19 @@ contract KeystoreTest is Test { } function testFuzz_handleUpdatesInvalidVerifier( - bytes32 nextHash, uint192 nonceKey, bytes32[] calldata nodes, uint256 index, bytes calldata nodeConfig, bytes calldata data ) public { - UpdateInputs memory inputs = - _packNodeAndGetUpdateInputs(nextHash, nonceKey, nodes, index, address(0), nodeConfig); + UpdateInputs memory inputs = _packNodeAndGetUpdateInputs(nonceKey, nodes, index, address(0), nodeConfig); vm.expectRevert(IKeystore.InvalidVerifier.selector); keystore.handleUpdates( - _getUpdateActions(inputs.refHash, nextHash, inputs.nonce, inputs.proof, inputs.node, data) + _getUpdateActions( + inputs.refHash, inputs.nextHash, inputs.nonce, inputs.proof, inputs.node, data, inputs.nextProof, "", "" + ) ); assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 0 | uint256(nonceKey) << 64); @@ -350,7 +433,6 @@ contract KeystoreTest is Test { } function testFuzz_handleUpdatesInvalidValidation( - bytes32 nextHash, uint192 nonceKey, bytes32[] calldata nodes, uint256 index, @@ -358,13 +440,135 @@ contract KeystoreTest is Test { bytes calldata data ) public { address nodeVerifier = address(new VerifierMock(SIG_VALIDATION_FAILED)); - UpdateInputs memory inputs = - _packNodeAndGetUpdateInputs(nextHash, nonceKey, nodes, index, nodeVerifier, nodeConfig); + UpdateInputs memory inputs = _packNodeAndGetUpdateInputs(nonceKey, nodes, index, nodeVerifier, nodeConfig); + + vm.expectEmit(); + emit IKeystore.RootHashUpdated(inputs.refHash, address(this), inputs.nextHash, inputs.nonce, false); + keystore.handleUpdates( + _getUpdateActions( + inputs.refHash, inputs.nextHash, inputs.nonce, inputs.proof, inputs.node, data, inputs.nextProof, "", "" + ) + ); + + assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 0 | uint256(nonceKey) << 64); + assertEq(keystore.getRootHash(inputs.refHash, address(this)), inputs.refHash); + } + + function testFuzz_handleUpdatesInvalidNextProofForReusedNode( + uint192 nonceKey, + bytes32[] calldata nodes, + uint256 index, + bytes calldata nodeConfig, + bytes calldata data + ) public { + address nodeVerifier = address(new VerifierMock(SIG_VALIDATION_SUCCESS)); + UpdateInputs memory inputs = _packNodeAndGetUpdateInputs(nonceKey, nodes, index, nodeVerifier, nodeConfig); + + vm.expectRevert(IKeystore.InvalidNextProof.selector); + keystore.handleUpdates( + _getUpdateActions( + inputs.refHash, inputs.nextHash, inputs.nonce, inputs.proof, inputs.node, data, inputs.proof, "", "" + ) + ); + + assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 0 | uint256(nonceKey) << 64); + assertEq(keystore.getRootHash(inputs.refHash, address(this)), inputs.refHash); + } + + function testFuzz_handleUpdatesInvalidNextProofForNewNode( + uint192 nonceKey, + bytes32[] calldata nodes, + uint256 index, + bytes calldata nodeConfig, + bytes calldata data + ) public { + address nodeVerifier = address(new VerifierMock(SIG_VALIDATION_SUCCESS)); + address nextNodeVerifier = address(new VerifierMock(SIG_VALIDATION_SUCCESS)); + UpdateInputs memory inputs = _packNodeAndGetUpdateInputsWithNextNodeVerifier( + nonceKey, nodes, index, nodeVerifier, nextNodeVerifier, nodeConfig + ); + + vm.expectRevert(IKeystore.InvalidNextProof.selector); + keystore.handleUpdates( + _getUpdateActions( + inputs.refHash, + inputs.nextHash, + inputs.nonce, + inputs.proof, + inputs.node, + data, + inputs.proof, + inputs.nextNode, + data + ) + ); + + assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 0 | uint256(nonceKey) << 64); + assertEq(keystore.getRootHash(inputs.refHash, address(this)), inputs.refHash); + } + + function testFuzz_handleUpdatesInvalidNextNode( + uint192 nonceKey, + bytes32[] calldata nodes, + uint256 index, + bytes calldata nodeConfig, + bytes calldata data, + bytes calldata nextNode + ) public { + vm.assume(nextNode.length > 0 && nextNode.length < 20); + UpdateInputs memory inputs = _packNodeAndGetUpdateInputsWithNextNode( + nonceKey, nodes, index, address(new VerifierMock(SIG_VALIDATION_SUCCESS)), nodeConfig, nextNode + ); + + vm.expectRevert(IKeystore.InvalidNode.selector); + keystore.handleUpdates( + _getUpdateActions( + inputs.refHash, + inputs.nextHash, + inputs.nonce, + inputs.proof, + inputs.node, + data, + inputs.nextProof, + inputs.nextNode, + data + ) + ); + + assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 0 | uint256(nonceKey) << 64); + assertEq(keystore.getRootHash(inputs.refHash, address(this)), inputs.refHash); + } + + function testFuzz_handleUpdatesInvalidNextValidation( + uint192 nonceKey, + bytes32[] calldata nodes, + uint256 index, + bytes calldata nodeConfig, + bytes calldata data + ) public { + UpdateInputs memory inputs = _packNodeAndGetUpdateInputsWithNextNodeVerifier( + nonceKey, + nodes, + index, + address(new VerifierMock(SIG_VALIDATION_SUCCESS)), // node verifier + address(new VerifierMock(SIG_VALIDATION_FAILED)), // next node verifier + nodeConfig + ); vm.expectEmit(); - emit IKeystore.RootHashUpdated(inputs.refHash, nextHash, inputs.nonce, inputs.proof, inputs.node, data, false); + emit IKeystore.RootHashUpdated(inputs.refHash, address(this), inputs.nextHash, inputs.nonce, false); keystore.handleUpdates( - _getUpdateActions(inputs.refHash, nextHash, inputs.nonce, inputs.proof, inputs.node, data) + _getUpdateActions( + inputs.refHash, + inputs.nextHash, + inputs.nonce, + inputs.proof, + inputs.node, + data, + inputs.nextProof, + inputs.nextNode, + data + ) ); assertEq(keystore.getNonce(inputs.refHash, address(this), nonceKey), 0 | uint256(nonceKey) << 64); @@ -374,37 +578,32 @@ contract KeystoreTest is Test { function testFuzz_handleUpdatesBatch(bool[2] calldata status, bool useChainId) public { UpdateAction[] memory actions = new UpdateAction[](2); - bytes32[] memory proof0 = new bytes32[](4); - proof0[0] = 0xf0720b5a99da88909ea1349c9fadbc47a3dadb16815b68532caa1090fa3cc7c3; - proof0[1] = 0x1a9a5662b9f192a00b13ff9e28bfbc0594ad79a32760d4f5a2ee007c3bfa5140; - proof0[2] = 0xa0ba7f0cac2c1a8c549a6618333bbe1fc53c029126d1ae6c3c6002b3b4ba6524; - proof0[3] = 0x7a7f6bcecc35cccf14046a8016f81fb7a8ffee0d421195e67493fc7de1559744; actions[0] = UpdateAction({ - refHash: 0x0bea790c2d4a69970ebd6e09562a71084e5c78fef4d37528dd332cfb538542ce, - nextHash: 0x307e09be09995e6faec1ee7e926814704ea5350149e0c43d3c33d08107993edd, - nonce: 21345602813603236902997277615363180973908434092032, + refHash: 0x0b0c5aafb3e9b932d414ae02f5e98357eae425e3648f7c7ac9b00b909de88050, + nextHash: 0x50a73340dcc550ea7d740f05dfb274337e59b76adf642171ae85def8058de0ee, + nonce: 37207976134154252492264189946807070066999296, useChainId: useChainId, account: address(this), - proof: abi.encode(proof0), - node: hex"367bbe350864b020ff1b8b7e418a815c2a947f9d09eadce97d0c9c596ac47be1bcc4e0bf1582b3fb3cb5ea2acb22f8c2bc170f7479c2", - data: hex"81cd7f87ae22c33efc08d02b0374fe09023334940745167021c9e66dc920557be866a02a2255351258770f722394e90644d8a14f06" + proof: hex"00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006f1f7073eba3b359366b152f3276391cd9d9495f7a9944d4832c6f1bf244c1b90a7db15676f9941cea51d6caf720f3acd22ba25d61aa398b1f10a7d87c05e9b2490ae60fea9cb87fbad67179be8d3dfc6435a6beb240d7e9784b3f69032cdfb40920701ca778b55e38c90c86b93df6a2c7ba0a41a15ad2f5bef808136b2d8ba7506979888f65f6d18f1588e176bf6cfe767e3c4d1916b25e28ea79dedbf4a30decbe2c0b2ab0da8b30c59b2ede87aa84eee9b3325caabe55455d7cea70ce91580", + node: hex"f62849f9a0b5bf2913b396098f7c7019b51a820a254e", + data: hex"030e9cf6c36ad78513c19c871162828305a587b0d250b8f8e77b52e1de295858ea", + nextProof: hex"00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006deadbeef0000000000000000000000000000000000000000000000000000000025319a35c0bb3a04f1302c6cfbcfc5865a68811cbc88e274ef905dafb8e8062b1f53c557ba9419171ace80e1993e31e5778af8c673b7045d2dfba760f841db0944d9d7c7490032557068f748dc770e5cef57a68b77456be5a10c163fb9e834fc80e96c5094b70c211030c57b3c4a1dd6b3392fba2213e93d9c0c2ca9d8ede5d8da6304fcf5b53497d6f5313225742afe45beb9e682a819e1ee0547f909fe8093", + nextNode: "", + nextData: "" }); - bytes32[] memory proof1 = new bytes32[](5); - proof1[0] = 0xd75925ab1c24fe4af10b28baa7b632d28a52ffc73eae1a386152fd44e805fe15; - proof1[1] = 0xbfc020b001604c83cdaf1759486f5d4547d89278b8e90ee2e49cc9b8576cf3ee; - proof1[2] = 0xecd6bb55e8f496defad7865a73041e22a4a761938c6638e288e8380768e99c19; - proof1[3] = 0xf8a598929a6ff9a031bc9727bf8536a590d1dc764fe678d5595f8459221a8e25; - proof1[4] = 0xb0cf634098ce6f594f969fdde6243f10810a5a2817676821356a9aba230baf01; actions[1] = UpdateAction({ - refHash: 0x919c2e64fdfe95a09781da7a31cec323904edeece2aadab9db2809401f24feb1, - nextHash: 0xf5856318a232ea9e7991756d7ed9f32e6128c84bfefee127f06bc23fd22c0296, - nonce: 779254045811195516568393371847926550426994733077148739871778103143432192, + refHash: 0xa5b085d3e5946c17752fcd954b3acc366126ee059aae083bb8035920f855a13e, + nextHash: 0xf4e494131e88a45ea86945380962a15ca6106a393c6bf4c6ee01d11bf16e598f, + nonce: 0, useChainId: useChainId, account: address(this), - proof: abi.encode(proof1), - node: hex"217c31512a2fc94b172b5ef447d1deca0abf0c34a47ae671572752b2eafbb25ce40f59229f25811cfae1c253226d6b08cbecfd13e8b413cdbe616886c94b", - data: hex"7b41359034736ce7bb5277e09979f3b337" + proof: hex"0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000877ecc67af61b68ff0569a4948a2392a1a3e67562446a9a817342e2538e79f0a329d07472a5aca4ca4ef8a35610251903d61f758a002720cd8d44767eea5242c13e4ab998e72c4b6cd9c585dec028b030e69a05a7bdcda6542e60dc27caccb6b2796b1ef3f077ec7a8fd18738287c828e7be04acd50e3b7eb6a2609b63e334a1635063be8fd01c17783629d9aaef50712f05b4669cfdfd2f7be101b9a17789b28e62337ee13497c0d58d8b309ce9801d02a58e6f512885aee862c552694b7a6d9674bb355ee62afe4036ff367a97cc49759d37124e0d794389b307e3ee4408b832aeb656df7e769074ab9c784123e491dc9d5bf6dca6a8f453c4c9debafa2e4fa", + node: hex"f62849f9a0b5bf2913b396098f7c7019b51a820a04c4b72cf269ef43e4e73639e935b295af3c4626ca90354a035d0b70f78c4639ca8602ab12a541e2adabd6b0c970ba404edd8f682ba4daf4", + data: hex"5566480da317068432200dd07ddf71f86aea334825144e4338121f20d2c3cc8c43b7776617677ce903d7f913116323eb6048a891", + nextProof: hex"00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000008deadbeef0000000000000000000000000000000000000000000000000000000025319a35c0bb3a04f1302c6cfbcfc5865a68811cbc88e274ef905dafb8e8062b1f53c557ba9419171ace80e1993e31e5778af8c673b7045d2dfba760f841db0944d9d7c7490032557068f748dc770e5cef57a68b77456be5a10c163fb9e834fc80e96c5094b70c211030c57b3c4a1dd6b3392fba2213e93d9c0c2ca9d8ede5d86040050af6e6bd7bd7e20142485887a175961535bb20853ca6087f750d6754908af8183849b20a7456ed353b1101caedb083ac153ee5c06183df46df129fd2ad4f01395c883311d68279323c4118819fb52f633a35b784607f3477172462484b", + nextNode: "", + nextData: "" }); _mockVerifier( @@ -416,12 +615,18 @@ contract KeystoreTest is Test { address(this), actions[0].nonce, keccak256(actions[0].node), + keccak256(actions[0].nextNode), block.chainid ) ) : keccak256( abi.encode( - actions[0].refHash, actions[0].nextHash, address(this), actions[0].nonce, keccak256(actions[0].node) + actions[0].refHash, + actions[0].nextHash, + address(this), + actions[0].nonce, + keccak256(actions[0].node), + keccak256(actions[0].nextNode) ) ), actions[0].node, @@ -438,12 +643,18 @@ contract KeystoreTest is Test { address(this), actions[1].nonce, keccak256(actions[1].node), + keccak256(actions[1].nextNode), block.chainid ) ) : keccak256( abi.encode( - actions[1].refHash, actions[1].nextHash, address(this), actions[1].nonce, keccak256(actions[1].node) + actions[1].refHash, + actions[1].nextHash, + address(this), + actions[1].nonce, + keccak256(actions[1].node), + keccak256(actions[1].nextNode) ) ), actions[1].node, @@ -453,24 +664,12 @@ contract KeystoreTest is Test { vm.expectEmit(); emit IKeystore.RootHashUpdated( - actions[0].refHash, - actions[0].nextHash, - actions[0].nonce, - actions[0].proof, - actions[0].node, - actions[0].data, - status[0] + actions[0].refHash, address(this), actions[0].nextHash, actions[0].nonce, status[0] ); vm.expectEmit(); emit IKeystore.RootHashUpdated( - actions[1].refHash, - actions[1].nextHash, - actions[1].nonce, - actions[1].proof, - actions[1].node, - actions[1].data, - status[1] + actions[1].refHash, address(this), actions[1].nextHash, actions[1].nonce, status[1] ); keystore.handleUpdates(actions); @@ -500,15 +699,15 @@ contract KeystoreTest is Test { uint256 index, address nodeVerifier, bytes calldata nodeConfig - ) internal view returns (bytes32 root, bytes memory proof, bytes memory node) { + ) internal view returns (UCMTProps memory curr) { vm.assume(nodes.length > 1); vm.assume(index < nodes.length); bytes32[] memory tree = nodes; - node = abi.encodePacked(nodeVerifier, nodeConfig); - tree[index] = keccak256(node); - root = ucmt.getRoot(tree); - proof = abi.encode(ucmt.getProof(tree, index)); + curr.node = abi.encodePacked(nodeVerifier, nodeConfig); + tree[index] = keccak256(curr.node); + curr.root = ucmt.getRoot(tree); + curr.proof = abi.encode(ucmt.getProof(tree, index)); } function _generateUCMT(bytes32[] calldata nodes, uint256 index, bytes memory node) @@ -525,52 +724,134 @@ contract KeystoreTest is Test { proof = abi.encode(ucmt.getProof(tree, index)); } - function _packNodeAndGenerateUCMTProps( + function _generateNextUCMT(bytes32[] calldata nodes, uint256 index, bytes memory node) + internal + view + returns (UCMTProps memory next) + { + bytes32[] memory tree = nodes; + for (uint256 i = 0; i < nodes.length; i++) { + if (i == index) { + tree[i] = keccak256(node); + } else { + tree[i] = bytes32(hex"deadbeef"); + } + } + next.root = ucmt.getRoot(tree); + next.proof = abi.encode(ucmt.getProof(tree, index)); + next.node = node; + } + + function _generateAndAssertMultiUpdateProps( + address nodeVerifier, + address finalNodeVerifier, + bytes32[] calldata nodes, bytes32[] calldata nextNodes, + bytes32[] calldata finalNodes, uint256 index, - address nextNodeVerifier, - bytes calldata nextNodeConfig - ) internal view returns (UCMTProps memory props) { - (bytes32 root, bytes memory proof, bytes memory node) = - _packNodeAndGenerateUCMT(nextNodes, index, nextNodeVerifier, nextNodeConfig); + bytes calldata nodeConfig + ) internal view returns (MultiUpdateProps memory props) { + props.init = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); + props.next = _packNodeAndGenerateUCMT(nextNodes, index, nodeVerifier, nodeConfig); + props.fin = _packNodeAndGenerateUCMT(finalNodes, index, finalNodeVerifier, nodeConfig); + assertNotEq(props.init.root, props.next.root); + assertNotEq(props.next.root, props.fin.root); + assertNotEq(props.init.proof, props.next.proof); + assertNotEq(props.next.proof, props.fin.proof); + assertEq(props.init.node, props.next.node); + assertNotEq(props.next.node, props.fin.node); + } - props.root = root; - props.proof = proof; - props.node = node; + function _packNodeAndGetUpdateInputsWithNextNode( + uint192 nonceKey, + bytes32[] calldata nodes, + uint256 index, + address nodeVerifier, + bytes calldata nodeConfig, + bytes calldata nextNode + ) internal view returns (UpdateInputs memory updateInputs) { + UCMTProps memory curr = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); + UCMTProps memory next = _generateNextUCMT(nodes, index, nextNode); + + updateInputs.refHash = curr.root; + updateInputs.proof = curr.proof; + updateInputs.node = curr.node; + updateInputs.nextHash = next.root; + updateInputs.nextProof = next.proof; + updateInputs.nextNode = next.node; + updateInputs.nonce = keystore.getNonce(curr.root, address(this), nonceKey); + updateInputs.message = keccak256( + abi.encode( + curr.root, next.root, address(this), updateInputs.nonce, keccak256(curr.node), keccak256(next.node) + ) + ); } - function _packNodeAndGetUpdateInputs( - bytes32 nextHash, + function _packNodeAndGetUpdateInputsWithNextNodeVerifier( uint192 nonceKey, bytes32[] calldata nodes, uint256 index, address nodeVerifier, + address nextNodeVerifier, bytes calldata nodeConfig ) internal view returns (UpdateInputs memory updateInputs) { - (bytes32 root, bytes memory proof, bytes memory node) = - _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); - - updateInputs.refHash = root; - updateInputs.proof = proof; - updateInputs.node = node; - updateInputs.nonce = keystore.getNonce(root, address(this), nonceKey); - updateInputs.message = keccak256(abi.encode(root, nextHash, address(this), updateInputs.nonce, keccak256(node))); + UCMTProps memory curr = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); + UCMTProps memory next = _generateNextUCMT(nodes, index, abi.encodePacked(nextNodeVerifier, nodeConfig)); + + updateInputs.refHash = curr.root; + updateInputs.proof = curr.proof; + updateInputs.node = curr.node; + updateInputs.nextHash = next.root; + updateInputs.nextProof = next.proof; + updateInputs.nextNode = next.node; + updateInputs.nonce = keystore.getNonce(curr.root, address(this), nonceKey); + updateInputs.message = keccak256( + abi.encode( + curr.root, next.root, address(this), updateInputs.nonce, keccak256(curr.node), keccak256(next.node) + ) + ); } - function _getUpdateInputs( - bytes32 nextHash, + function _packNodeAndGetUpdateInputs( uint192 nonceKey, bytes32[] calldata nodes, uint256 index, - bytes memory node + address nodeVerifier, + bytes calldata nodeConfig ) internal view returns (UpdateInputs memory updateInputs) { + UCMTProps memory curr = _packNodeAndGenerateUCMT(nodes, index, nodeVerifier, nodeConfig); + UCMTProps memory next = _generateNextUCMT(nodes, index, curr.node); + + updateInputs.refHash = curr.root; + updateInputs.proof = curr.proof; + updateInputs.node = curr.node; + updateInputs.nextHash = next.root; + updateInputs.nextProof = next.proof; + updateInputs.nonce = keystore.getNonce(curr.root, address(this), nonceKey); + updateInputs.message = keccak256( + abi.encode( + curr.root, next.root, address(this), updateInputs.nonce, keccak256(curr.node), keccak256(next.node) + ) + ); + } + + function _getUpdateInputs(uint192 nonceKey, bytes32[] calldata nodes, uint256 index, bytes memory node) + internal + view + returns (UpdateInputs memory updateInputs) + { (bytes32 root, bytes memory proof) = _generateUCMT(nodes, index, node); + UCMTProps memory next = _generateNextUCMT(nodes, index, node); updateInputs.refHash = root; updateInputs.proof = proof; updateInputs.node = node; + updateInputs.nextHash = next.root; + updateInputs.nextProof = next.proof; updateInputs.nonce = keystore.getNonce(root, address(this), nonceKey); - updateInputs.message = keccak256(abi.encode(root, nextHash, address(this), updateInputs.nonce, keccak256(node))); + updateInputs.message = keccak256( + abi.encode(root, next.root, address(this), updateInputs.nonce, keccak256(node), keccak256(next.node)) + ); } function _getUpdateActions( @@ -579,7 +860,10 @@ contract KeystoreTest is Test { uint256 nonce, bytes memory proof, bytes memory node, - bytes memory data + bytes memory data, + bytes memory nextProof, + bytes memory nextNode, + bytes memory nextData ) internal view returns (UpdateAction[] memory) { UpdateAction[] memory actions = new UpdateAction[](1); UpdateAction memory action = UpdateAction({ @@ -590,7 +874,10 @@ contract KeystoreTest is Test { account: address(this), proof: proof, node: node, - data: data + data: data, + nextProof: nextProof, + nextNode: nextNode, + nextData: nextData }); actions[0] = action; return actions; diff --git a/test/snapshots/Keystore32NodeUCMT.t.sol b/test/snapshots/Keystore32NodeUCMT.t.sol index 9a0dd44..26b066c 100644 --- a/test/snapshots/Keystore32NodeUCMT.t.sol +++ b/test/snapshots/Keystore32NodeUCMT.t.sol @@ -54,7 +54,8 @@ contract Keystore32NodeUCMT is Test { function test_handleUpdate_withProof() public { bytes32[] memory proof = _getProof(); - UpdateAction[] memory actions = _getUpdateActions(abi.encode(proof)); + bytes32[] memory nextProof = _getNextProof(); + UpdateAction[] memory actions = _getUpdateActions(abi.encode(proof), abi.encode(nextProof)); _mockVerifier( keccak256( @@ -63,7 +64,8 @@ contract Keystore32NodeUCMT is Test { actions[0].nextHash, actions[0].account, actions[0].nonce, - keccak256(actions[0].node) + keccak256(actions[0].node), + keccak256(actions[0].nextNode) ) ), actions[0].node, @@ -71,15 +73,7 @@ contract Keystore32NodeUCMT is Test { ); vm.expectEmit(); - emit IKeystore.RootHashUpdated( - actions[0].refHash, - actions[0].nextHash, - actions[0].nonce, - actions[0].proof, - actions[0].node, - actions[0].data, - true - ); + emit IKeystore.RootHashUpdated(actions[0].refHash, address(this), actions[0].nextHash, actions[0].nonce, true); vm.startSnapshotGas("4. handleUpdates (with proof)"); keystore.handleUpdates(actions); vm.stopSnapshotGas(); @@ -87,7 +81,8 @@ contract Keystore32NodeUCMT is Test { function test_handleUpdate_withoutProof() public { bytes32[] memory proof = _getProof(); - UpdateAction[] memory actions = _getUpdateActions(""); + bytes32[] memory nextProof = _getNextProof(); + UpdateAction[] memory actions = _getUpdateActions("", abi.encode(nextProof)); keystore.registerNode(actions[0].refHash, proof, actions[0].node); _mockVerifier( @@ -97,7 +92,8 @@ contract Keystore32NodeUCMT is Test { actions[0].nextHash, actions[0].account, actions[0].nonce, - keccak256(actions[0].node) + keccak256(actions[0].node), + keccak256(actions[0].nextNode) ) ), actions[0].node, @@ -105,9 +101,7 @@ contract Keystore32NodeUCMT is Test { ); vm.expectEmit(); - emit IKeystore.RootHashUpdated( - actions[0].refHash, actions[0].nextHash, actions[0].nonce, "", actions[0].node, actions[0].data, true - ); + emit IKeystore.RootHashUpdated(actions[0].refHash, address(this), actions[0].nextHash, actions[0].nonce, true); actions[0].node = abi.encode(keccak256(actions[0].node)); vm.startSnapshotGas("5. handleUpdates (without proof)"); keystore.handleUpdates(actions); @@ -128,6 +122,16 @@ contract Keystore32NodeUCMT is Test { return proof; } + function _getNextProof() internal pure returns (bytes32[] memory) { + bytes32[] memory proof = new bytes32[](5); + proof[0] = 0x9ee4edde6a7fd03851aab27a77e7a3fb77f2fdfde7c4dfbfaf5dcae99698f684; + proof[1] = 0xe999f6e618762b50b717ff1809f6c86d7e15753ba2f792fb16c6262373c10b7a; + proof[2] = 0x09a2e71e783ee4e7550de83552c555c04bb81384f4299a087bded32e5d6e0586; + proof[3] = 0xe18e4b59fe0f576bd444f3e6f496020239e4b6391c703c15ae2538c358a2baac; + proof[4] = 0x8cdc539d55721a221aa7a351817962aa7f35639d126c1860936cedbc1de9796c; + return proof; + } + function _getValidateAction(bytes memory proof) internal pure returns (ValidateAction memory) { return ValidateAction({ refHash: 0x919c2e64fdfe95a09781da7a31cec323904edeece2aadab9db2809401f24feb1, @@ -138,17 +142,24 @@ contract Keystore32NodeUCMT is Test { }); } - function _getUpdateActions(bytes memory proof) internal view returns (UpdateAction[] memory) { + function _getUpdateActions(bytes memory proof, bytes memory nextProof) + internal + view + returns (UpdateAction[] memory) + { UpdateAction[] memory actions = new UpdateAction[](1); actions[0] = UpdateAction({ refHash: 0x919c2e64fdfe95a09781da7a31cec323904edeece2aadab9db2809401f24feb1, - nextHash: 0xf5856318a232ea9e7991756d7ed9f32e6128c84bfefee127f06bc23fd22c0296, + nextHash: 0xb13960137758ce826ea70bb3d7d699c7f81f467610baf36babb5902b08d98529, nonce: 779254045811195516568393371847926550426994733077148739871778103143432192, useChainId: false, account: address(this), proof: proof, node: hex"217c31512a2fc94b172b5ef447d1deca0abf0c34a47ae671572752b2eafbb25ce40f59229f25811cfae1c253226d6b08cbecfd13e8b413cdbe616886c94b", - data: hex"7b41359034736ce7bb5277e09979f3b337" + data: hex"7b41359034736ce7bb5277e09979f3b337", + nextProof: nextProof, + nextNode: "", + nextData: "" }); return actions; } From 2d9be2ec3dc3dffc0ce9792266c3b8a68f41277e Mon Sep 17 00:00:00 2001 From: hazim Date: Fri, 15 Aug 2025 08:25:05 +1000 Subject: [PATCH 39/42] Update counterfactual addresses (#58) --- README.md | 12 ++++++------ script/DeployKeystoreAccountFactory.s.sol | 2 +- script/DeployUserOpECDSAVerifier.s.sol | 2 +- script/DeployUserOpMultiSigVerifier.s.sol | 2 +- script/DeployUserOpWebAuthnCosignVerifier.s.sol | 2 +- script/DeployUserOpWebAuthnVerifier.s.sol | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 2eb578b..a8ebe98 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,12 @@ All contracts are deployed deterministically with the following addresses. | Contract | Address | | ---------------------------- | -------------------------------------------- | -| Keystore | `0x18c90BdFc5667D11605ebde82E5E9CDC4D789363` | -| KeystoreAccountFactory | `0x2F775F9FFC02231C3Bb1EA1281f1Da9ba2f2a069` | -| UserOpECDSAVerifier | `0xf5bC4DB1cdedf1aDDD0d6543BA669837d5D0f3b3` | -| UserOpMultiSigVerifier | `0xC498f1f881bdd8a2FEB6aABf166cF6E08Cf4e559` | -| UserOpWebAuthnVerifier | `0xEcb9be3dbB737Ed13a768B2B7D030B483Bf5c9f2` | -| UserOpWebAuthnCosignVerifier | `0x36674817e050a37DA325d66B6dbD1a93063Dc6B9` | +| Keystore | `0x69C9F626b5Bd934C0F9806346682eD407FB978d3` | +| KeystoreAccountFactory | `0x625cF8EDec3f68d48D3aA385F356524B04760BE8` | +| UserOpECDSAVerifier | `0x294CD71960eed5AEa11DbbFa5D3c8eA4A1c1CE0F` | +| UserOpMultiSigVerifier | `0x1dBadE1E34706f83598ae9acFC63B7F4f928146E` | +| UserOpWebAuthnVerifier | `0xE19620169A26aEbC4Fe229A073639da6b009bF1a` | +| UserOpWebAuthnCosignVerifier | `0x7CD0D83C0c33AAC9cef88c75F3EDec80F4175252` | ## Usage diff --git a/script/DeployKeystoreAccountFactory.s.sol b/script/DeployKeystoreAccountFactory.s.sol index 58f716e..10e01dc 100644 --- a/script/DeployKeystoreAccountFactory.s.sol +++ b/script/DeployKeystoreAccountFactory.s.sol @@ -10,7 +10,7 @@ import {IKeystore} from "src/interface/IKeystore.sol"; contract Deploy is Script { function run() public { IEntryPoint entryPoint = IEntryPoint(0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108); - IKeystore keystore = IKeystore(0x18c90BdFc5667D11605ebde82E5E9CDC4D789363); + IKeystore keystore = IKeystore(0x69C9F626b5Bd934C0F9806346682eD407FB978d3); vm.startBroadcast(); KeystoreAccountFactory factory = new KeystoreAccountFactory{salt: 0}(entryPoint, keystore); diff --git a/script/DeployUserOpECDSAVerifier.s.sol b/script/DeployUserOpECDSAVerifier.s.sol index c2fd1a7..5a3499e 100644 --- a/script/DeployUserOpECDSAVerifier.s.sol +++ b/script/DeployUserOpECDSAVerifier.s.sol @@ -7,7 +7,7 @@ import {UserOpECDSAVerifier} from "src/verifier/UserOpECDSAVerifier.sol"; contract Deploy is Script { function run() public { - address keystore = 0x18c90BdFc5667D11605ebde82E5E9CDC4D789363; + address keystore = 0x69C9F626b5Bd934C0F9806346682eD407FB978d3; vm.startBroadcast(); UserOpECDSAVerifier verifier = new UserOpECDSAVerifier{salt: 0}(keystore); diff --git a/script/DeployUserOpMultiSigVerifier.s.sol b/script/DeployUserOpMultiSigVerifier.s.sol index 8d82391..9068c2c 100644 --- a/script/DeployUserOpMultiSigVerifier.s.sol +++ b/script/DeployUserOpMultiSigVerifier.s.sol @@ -7,7 +7,7 @@ import {UserOpMultiSigVerifier} from "src/verifier/UserOpMultiSigVerifier.sol"; contract Deploy is Script { function run() public { - address keystore = 0x18c90BdFc5667D11605ebde82E5E9CDC4D789363; + address keystore = 0x69C9F626b5Bd934C0F9806346682eD407FB978d3; vm.startBroadcast(); UserOpMultiSigVerifier verifier = new UserOpMultiSigVerifier{salt: 0}(keystore); diff --git a/script/DeployUserOpWebAuthnCosignVerifier.s.sol b/script/DeployUserOpWebAuthnCosignVerifier.s.sol index 16dd18b..6722ddc 100644 --- a/script/DeployUserOpWebAuthnCosignVerifier.s.sol +++ b/script/DeployUserOpWebAuthnCosignVerifier.s.sol @@ -7,7 +7,7 @@ import {UserOpWebAuthnCosignVerifier} from "src/verifier/UserOpWebAuthnCosignVer contract Deploy is Script { function run() public { - address keystore = 0x18c90BdFc5667D11605ebde82E5E9CDC4D789363; + address keystore = 0x69C9F626b5Bd934C0F9806346682eD407FB978d3; vm.startBroadcast(); UserOpWebAuthnCosignVerifier verifier = new UserOpWebAuthnCosignVerifier{salt: 0}(keystore); diff --git a/script/DeployUserOpWebAuthnVerifier.s.sol b/script/DeployUserOpWebAuthnVerifier.s.sol index 2e02cc6..0a9e972 100644 --- a/script/DeployUserOpWebAuthnVerifier.s.sol +++ b/script/DeployUserOpWebAuthnVerifier.s.sol @@ -7,7 +7,7 @@ import {UserOpWebAuthnVerifier} from "src/verifier/UserOpWebAuthnVerifier.sol"; contract Deploy is Script { function run() public { - address keystore = 0x18c90BdFc5667D11605ebde82E5E9CDC4D789363; + address keystore = 0x69C9F626b5Bd934C0F9806346682eD407FB978d3; vm.startBroadcast(); UserOpWebAuthnVerifier verifier = new UserOpWebAuthnVerifier{salt: 0}(keystore); From a30abbb2d6be6badd787b6cd87584df398ac36dc Mon Sep 17 00:00:00 2001 From: hazim-j Date: Fri, 15 Aug 2025 16:47:07 +1000 Subject: [PATCH 40/42] Add LICENSE.md --- LICENSE.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..fc63e52 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Stackup Finance, Inc + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From a06311eb8e8ba7cbe3bb79869389ddc7d50ec88a Mon Sep 17 00:00:00 2001 From: hazim Date: Sat, 16 Aug 2025 14:08:18 +1000 Subject: [PATCH 41/42] V1 mainnet contract deployments (#59) --- .env.example | 6 ++ README.md | 12 +-- .../1/run-1755316591.json | 47 ++++++++++ .../DeployKeystore.s.sol/1/run-latest.json | 47 ++++++++++ .../10/run-1755313742.json | 53 ++++++++++++ .../DeployKeystore.s.sol/10/run-latest.json | 53 ++++++++++++ .../137/run-1755314242.json | 30 +++++++ .../137/run-1755314305.json | 64 ++++++++++++++ .../DeployKeystore.s.sol/137/run-latest.json | 64 ++++++++++++++ .../42161/run-1755312603.json | 50 +++++++++++ .../42161/run-latest.json | 50 +++++++++++ .../43114/run-1755315581.json | 47 ++++++++++ .../43114/run-latest.json | 47 ++++++++++ .../56/run-1755315080.json | 47 ++++++++++ .../DeployKeystore.s.sol/56/run-latest.json | 47 ++++++++++ .../8453/run-1755222700.json | 53 ++++++++++++ .../DeployKeystore.s.sol/8453/run-latest.json | 36 ++++---- .../1/run-1755316669.json | 71 +++++++++++++++ .../1/run-latest.json | 71 +++++++++++++++ .../10/run-1755313800.json | 76 ++++++++++++++++ .../10/run-latest.json | 76 ++++++++++++++++ .../137/run-1755314510.json | 86 +++++++++++++++++++ .../137/run-latest.json | 86 +++++++++++++++++++ .../42161/run-1755312691.json | 73 ++++++++++++++++ .../42161/run-latest.json | 73 ++++++++++++++++ .../43114/run-1755315645.json | 70 +++++++++++++++ .../43114/run-latest.json | 70 +++++++++++++++ .../56/run-1755315127.json | 70 +++++++++++++++ .../56/run-latest.json | 70 +++++++++++++++ .../8453/run-1755222796.json | 77 +++++++++++++++++ .../8453/run-latest.json | 58 ++++++------- .../1/run-1755316762.json | 49 +++++++++++ .../1/run-latest.json | 49 +++++++++++ .../10/run-1755313822.json | 55 ++++++++++++ .../10/run-latest.json | 55 ++++++++++++ .../137/run-1755314609.json | 66 ++++++++++++++ .../137/run-latest.json | 66 ++++++++++++++ .../42161/run-1755312744.json | 52 +++++++++++ .../42161/run-latest.json | 52 +++++++++++ .../43114/run-1755315698.json | 49 +++++++++++ .../43114/run-latest.json | 49 +++++++++++ .../56/run-1755315219.json | 49 +++++++++++ .../56/run-latest.json | 49 +++++++++++ .../8453/run-1755223059.json | 55 ++++++++++++ .../8453/run-latest.json | 38 ++++---- .../1/run-1755316854.json | 49 +++++++++++ .../1/run-latest.json | 49 +++++++++++ .../10/run-1755313869.json | 55 ++++++++++++ .../10/run-latest.json | 55 ++++++++++++ .../137/run-1755314670.json | 66 ++++++++++++++ .../137/run-latest.json | 66 ++++++++++++++ .../42161/run-1755312782.json | 52 +++++++++++ .../42161/run-latest.json | 52 +++++++++++ .../43114/run-1755315750.json | 49 +++++++++++ .../43114/run-latest.json | 49 +++++++++++ .../56/run-1755315246.json | 49 +++++++++++ .../56/run-latest.json | 49 +++++++++++ .../8453/run-1755223113.json | 55 ++++++++++++ .../8453/run-latest.json | 38 ++++---- .../1/run-1755316996.json | 49 +++++++++++ .../1/run-1755317024.json | 49 +++++++++++ .../1/run-latest.json | 49 +++++++++++ .../10/run-1755313964.json | 55 ++++++++++++ .../10/run-latest.json | 55 ++++++++++++ .../137/run-1755314798.json | 66 ++++++++++++++ .../137/run-latest.json | 66 ++++++++++++++ .../42161/run-1755312971.json | 52 +++++++++++ .../42161/run-latest.json | 52 +++++++++++ .../43114/run-1755315837.json | 34 ++++++++ .../43114/run-1755316403.json | 49 +++++++++++ .../43114/run-latest.json | 49 +++++++++++ .../56/run-1755315355.json | 49 +++++++++++ .../56/run-latest.json | 49 +++++++++++ .../8453/run-1755223221.json | 55 ++++++++++++ .../8453/run-latest.json | 38 ++++---- .../1/run-1755316925.json | 49 +++++++++++ .../1/run-latest.json | 49 +++++++++++ .../10/run-1755313914.json | 55 ++++++++++++ .../10/run-latest.json | 55 ++++++++++++ .../137/run-1755314742.json | 66 ++++++++++++++ .../137/run-latest.json | 66 ++++++++++++++ .../42161/run-1755312927.json | 52 +++++++++++ .../42161/run-latest.json | 52 +++++++++++ .../43114/run-1755315819.json | 49 +++++++++++ .../43114/run-latest.json | 49 +++++++++++ .../56/run-1755315295.json | 49 +++++++++++ .../56/run-latest.json | 49 +++++++++++ .../8453/run-1755223163.json | 55 ++++++++++++ .../8453/run-latest.json | 38 ++++---- 89 files changed, 4666 insertions(+), 129 deletions(-) create mode 100644 broadcast/DeployKeystore.s.sol/1/run-1755316591.json create mode 100644 broadcast/DeployKeystore.s.sol/1/run-latest.json create mode 100644 broadcast/DeployKeystore.s.sol/10/run-1755313742.json create mode 100644 broadcast/DeployKeystore.s.sol/10/run-latest.json create mode 100644 broadcast/DeployKeystore.s.sol/137/run-1755314242.json create mode 100644 broadcast/DeployKeystore.s.sol/137/run-1755314305.json create mode 100644 broadcast/DeployKeystore.s.sol/137/run-latest.json create mode 100644 broadcast/DeployKeystore.s.sol/42161/run-1755312603.json create mode 100644 broadcast/DeployKeystore.s.sol/42161/run-latest.json create mode 100644 broadcast/DeployKeystore.s.sol/43114/run-1755315581.json create mode 100644 broadcast/DeployKeystore.s.sol/43114/run-latest.json create mode 100644 broadcast/DeployKeystore.s.sol/56/run-1755315080.json create mode 100644 broadcast/DeployKeystore.s.sol/56/run-latest.json create mode 100644 broadcast/DeployKeystore.s.sol/8453/run-1755222700.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/1/run-1755316669.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/1/run-latest.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/10/run-1755313800.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/10/run-latest.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/137/run-1755314510.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/137/run-latest.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/42161/run-1755312691.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/42161/run-latest.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/43114/run-1755315645.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/43114/run-latest.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/56/run-1755315127.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/56/run-latest.json create mode 100644 broadcast/DeployKeystoreAccountFactory.s.sol/8453/run-1755222796.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/1/run-1755316762.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/1/run-latest.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/10/run-1755313822.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/10/run-latest.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/137/run-1755314609.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/137/run-latest.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/42161/run-1755312744.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/42161/run-latest.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/43114/run-1755315698.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/43114/run-latest.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/56/run-1755315219.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/56/run-latest.json create mode 100644 broadcast/DeployUserOpECDSAVerifier.s.sol/8453/run-1755223059.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/1/run-1755316854.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/1/run-latest.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/10/run-1755313869.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/10/run-latest.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/137/run-1755314670.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/137/run-latest.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/42161/run-1755312782.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/42161/run-latest.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/43114/run-1755315750.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/43114/run-latest.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/56/run-1755315246.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/56/run-latest.json create mode 100644 broadcast/DeployUserOpMultiSigVerifier.s.sol/8453/run-1755223113.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-1755316996.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-1755317024.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/10/run-1755313964.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/10/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/137/run-1755314798.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/137/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/42161/run-1755312971.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/42161/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-1755315837.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-1755316403.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/56/run-1755315355.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/56/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/8453/run-1755223221.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/1/run-1755316925.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/1/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/10/run-1755313914.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/10/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/137/run-1755314742.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/137/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/42161/run-1755312927.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/42161/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/43114/run-1755315819.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/43114/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/56/run-1755315295.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/56/run-latest.json create mode 100644 broadcast/DeployUserOpWebAuthnVerifier.s.sol/8453/run-1755223163.json diff --git a/.env.example b/.env.example index fb3dc68..12ef68e 100644 --- a/.env.example +++ b/.env.example @@ -1,2 +1,8 @@ +ETH_RPC_URL= BASE_RPC_URL= +ARBITRUM_RPC_URL= +OPTIMISM_RPC_URL= +POLYGON_RPC_URL= +BSC_RPC_URL= +AVAX_RPC_URL= ETHERSCAN_API_KEY= \ No newline at end of file diff --git a/README.md b/README.md index a8ebe98..7219a2a 100644 --- a/README.md +++ b/README.md @@ -44,16 +44,16 @@ $ forge test ```shell # Keystore -source .env && forge script script/DeployKeystore.s.sol --rpc-url $BASE_RPC_URL --ledger --verify --broadcast +source .env && forge script script/DeployKeystore.s.sol --rpc-url $ETH_RPC_URL --ledger --verify --broadcast # Keystore account factory -source .env && forge script script/DeployKeystoreAccountFactory.s.sol --rpc-url $BASE_RPC_URL --ledger --verify --broadcast +source .env && forge script script/DeployKeystoreAccountFactory.s.sol --rpc-url $ETH_RPC_URL --ledger --verify --broadcast # Verifiers -source .env && forge script script/DeployUserOpECDSAVerifier.s.sol --rpc-url $BASE_RPC_URL --ledger --verify --broadcast -source .env && forge script script/DeployUserOpMultiSigVerifier.s.sol --rpc-url $BASE_RPC_URL --ledger --verify --broadcast -source .env && forge script script/DeployUserOpWebAuthnVerifier.s.sol --rpc-url $BASE_RPC_URL --ledger --verify --broadcast -source .env && forge script script/DeployUserOpWebAuthnCosignVerifier.s.sol --rpc-url $BASE_RPC_URL --ledger --verify --broadcast +source .env && forge script script/DeployUserOpECDSAVerifier.s.sol --rpc-url $ETH_RPC_URL --ledger --verify --broadcast +source .env && forge script script/DeployUserOpMultiSigVerifier.s.sol --rpc-url $ETH_RPC_URL --ledger --verify --broadcast +source .env && forge script script/DeployUserOpWebAuthnVerifier.s.sol --rpc-url $ETH_RPC_URL --ledger --verify --broadcast +source .env && forge script script/DeployUserOpWebAuthnCosignVerifier.s.sol --rpc-url $ETH_RPC_URL --ledger --verify --broadcast ``` ### Example scripts diff --git a/broadcast/DeployKeystore.s.sol/1/run-1755316591.json b/broadcast/DeployKeystore.s.sol/1/run-1755316591.json new file mode 100644 index 0000000..17742ee --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/1/run-1755316591.json @@ -0,0 +1,47 @@ +{ + "transactions": [ + { + "hash": "0x018808a95bbedb109b33649e5c309544753ccfedbf0dea34f0dcfdab97d418d4", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x7a", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8f74c6", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x018808a95bbedb109b33649e5c309544753ccfedbf0dea34f0dcfdab97d418d4", + "transactionIndex": "0x61", + "blockHash": "0x85f6b864b7aacdab3b559ecf3b0d50a3a036944ef389ad470c324c6b1ddf0b01", + "blockNumber": "0x16141ce", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0xfef7c34", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316591, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/1/run-latest.json b/broadcast/DeployKeystore.s.sol/1/run-latest.json new file mode 100644 index 0000000..17742ee --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/1/run-latest.json @@ -0,0 +1,47 @@ +{ + "transactions": [ + { + "hash": "0x018808a95bbedb109b33649e5c309544753ccfedbf0dea34f0dcfdab97d418d4", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x7a", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8f74c6", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x018808a95bbedb109b33649e5c309544753ccfedbf0dea34f0dcfdab97d418d4", + "transactionIndex": "0x61", + "blockHash": "0x85f6b864b7aacdab3b559ecf3b0d50a3a036944ef389ad470c324c6b1ddf0b01", + "blockNumber": "0x16141ce", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0xfef7c34", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316591, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/10/run-1755313742.json b/broadcast/DeployKeystore.s.sol/10/run-1755313742.json new file mode 100644 index 0000000..acfc5a1 --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/10/run-1755313742.json @@ -0,0 +1,53 @@ +{ + "transactions": [ + { + "hash": "0xc376f2e66f169749ca06e9313d5a98f57ae7ca32661ac96b6d8d302389c4e13f", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x25", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x817f11", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc376f2e66f169749ca06e9313d5a98f57ae7ca32661ac96b6d8d302389c4e13f", + "transactionIndex": "0x10", + "blockHash": "0x79246582385bf0f70b3d27e7840272c56f7f1338236c680fb7d3f0e901525992", + "blockNumber": "0x8560e41", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x25b7", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x105371d52b", + "l1GasPrice": "0xfaf1f4f", + "l1GasUsed": "0xc724" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313742, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/10/run-latest.json b/broadcast/DeployKeystore.s.sol/10/run-latest.json new file mode 100644 index 0000000..acfc5a1 --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/10/run-latest.json @@ -0,0 +1,53 @@ +{ + "transactions": [ + { + "hash": "0xc376f2e66f169749ca06e9313d5a98f57ae7ca32661ac96b6d8d302389c4e13f", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x25", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x817f11", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc376f2e66f169749ca06e9313d5a98f57ae7ca32661ac96b6d8d302389c4e13f", + "transactionIndex": "0x10", + "blockHash": "0x79246582385bf0f70b3d27e7840272c56f7f1338236c680fb7d3f0e901525992", + "blockNumber": "0x8560e41", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x25b7", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x105371d52b", + "l1GasPrice": "0xfaf1f4f", + "l1GasUsed": "0xc724" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313742, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/137/run-1755314242.json b/broadcast/DeployKeystore.s.sol/137/run-1755314242.json new file mode 100644 index 0000000..f4d50c5 --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/137/run-1755314242.json @@ -0,0 +1,30 @@ +{ + "transactions": [ + { + "hash": null, + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x4b", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314242, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/137/run-1755314305.json b/broadcast/DeployKeystore.s.sol/137/run-1755314305.json new file mode 100644 index 0000000..07b333f --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/137/run-1755314305.json @@ -0,0 +1,64 @@ +{ + "transactions": [ + { + "hash": "0x759ff8b613409d870bb5e4a870aa8e99cff35ce5dc577e606a4f53714ee987bd", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x4b", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x111a672", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x000000000000000000000000a8b52f02108aa5f4b675bdcc973760022d7c6020" + ], + "data": "0x000000000000000000000000000000000000000000000000008381a2b37e022700000000000000000000000000000000000000000000000b88c19099c592b5520000000000000000000000000000000000000000000000882fa8be492a28c5af00000000000000000000000000000000000000000000000b883e0ef71214b32b000000000000000000000000000000000000000000000088302c3febdda6c7d6", + "blockHash": "0x9f4cfd256ed2eae1181d10aa55e156bb6576323859be0514942fad41b4a66772", + "blockNumber": "0x47c6103", + "transactionHash": "0x759ff8b613409d870bb5e4a870aa8e99cff35ce5dc577e606a4f53714ee987bd", + "transactionIndex": "0x83", + "logIndex": "0x2f8", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000008000000000000000000000000000000000000000000000000000000000800010008000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000040000000000000000200000000000004000000000000000000000000000000000000000000000084000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x759ff8b613409d870bb5e4a870aa8e99cff35ce5dc577e606a4f53714ee987bd", + "transactionIndex": "0x83", + "blockHash": "0x9f4cfd256ed2eae1181d10aa55e156bb6576323859be0514942fad41b4a66772", + "blockNumber": "0x47c6103", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x60db88407", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314305, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/137/run-latest.json b/broadcast/DeployKeystore.s.sol/137/run-latest.json new file mode 100644 index 0000000..07b333f --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/137/run-latest.json @@ -0,0 +1,64 @@ +{ + "transactions": [ + { + "hash": "0x759ff8b613409d870bb5e4a870aa8e99cff35ce5dc577e606a4f53714ee987bd", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x4b", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x111a672", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x000000000000000000000000a8b52f02108aa5f4b675bdcc973760022d7c6020" + ], + "data": "0x000000000000000000000000000000000000000000000000008381a2b37e022700000000000000000000000000000000000000000000000b88c19099c592b5520000000000000000000000000000000000000000000000882fa8be492a28c5af00000000000000000000000000000000000000000000000b883e0ef71214b32b000000000000000000000000000000000000000000000088302c3febdda6c7d6", + "blockHash": "0x9f4cfd256ed2eae1181d10aa55e156bb6576323859be0514942fad41b4a66772", + "blockNumber": "0x47c6103", + "transactionHash": "0x759ff8b613409d870bb5e4a870aa8e99cff35ce5dc577e606a4f53714ee987bd", + "transactionIndex": "0x83", + "logIndex": "0x2f8", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000008000000000000000000000000000000000000000000000000000000000800010008000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000040000000000000000200000000000004000000000000000000000000000000000000000000000084000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x759ff8b613409d870bb5e4a870aa8e99cff35ce5dc577e606a4f53714ee987bd", + "transactionIndex": "0x83", + "blockHash": "0x9f4cfd256ed2eae1181d10aa55e156bb6576323859be0514942fad41b4a66772", + "blockNumber": "0x47c6103", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x60db88407", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314305, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/42161/run-1755312603.json b/broadcast/DeployKeystore.s.sol/42161/run-1755312603.json new file mode 100644 index 0000000..62fef9f --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/42161/run-1755312603.json @@ -0,0 +1,50 @@ +{ + "transactions": [ + { + "hash": "0x8b095497d9893fde8c0af08f5c9f0ffd86738231a4fe5c1237297fce900c7899", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1d18b5", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x44", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x15f2a2", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8b095497d9893fde8c0af08f5c9f0ffd86738231a4fe5c1237297fce900c7899", + "transactionIndex": "0x1", + "blockHash": "0xcaacf7c4343c44c60de25e5ce2798a16e1da918d33f860a88762f56e85007566", + "blockNumber": "0x15fcc828", + "gasUsed": "0x15f2a2", + "effectiveGasPrice": "0x1100c88", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "gasUsedForL1": "0x395f", + "l1BlockNumber": "0x1614082", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312603, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/42161/run-latest.json b/broadcast/DeployKeystore.s.sol/42161/run-latest.json new file mode 100644 index 0000000..62fef9f --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/42161/run-latest.json @@ -0,0 +1,50 @@ +{ + "transactions": [ + { + "hash": "0x8b095497d9893fde8c0af08f5c9f0ffd86738231a4fe5c1237297fce900c7899", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1d18b5", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x44", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x15f2a2", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x8b095497d9893fde8c0af08f5c9f0ffd86738231a4fe5c1237297fce900c7899", + "transactionIndex": "0x1", + "blockHash": "0xcaacf7c4343c44c60de25e5ce2798a16e1da918d33f860a88762f56e85007566", + "blockNumber": "0x15fcc828", + "gasUsed": "0x15f2a2", + "effectiveGasPrice": "0x1100c88", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "gasUsedForL1": "0x395f", + "l1BlockNumber": "0x1614082", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312603, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/43114/run-1755315581.json b/broadcast/DeployKeystore.s.sol/43114/run-1755315581.json new file mode 100644 index 0000000..842bcc3 --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/43114/run-1755315581.json @@ -0,0 +1,47 @@ +{ + "transactions": [ + { + "hash": "0x7a49c5ac40560567c3c2066ed005ff60ee8c6f1597f0b7a6956eeab2dcd090d2", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x45", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x416a66", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7a49c5ac40560567c3c2066ed005ff60ee8c6f1597f0b7a6956eeab2dcd090d2", + "transactionIndex": "0x23", + "blockHash": "0x058ad3670fe93658e0d5cbc2ea544c3e1d67594c80f0778dcd26bd243cde9741", + "blockNumber": "0x4007e52", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x21d55d27", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315581, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/43114/run-latest.json b/broadcast/DeployKeystore.s.sol/43114/run-latest.json new file mode 100644 index 0000000..842bcc3 --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/43114/run-latest.json @@ -0,0 +1,47 @@ +{ + "transactions": [ + { + "hash": "0x7a49c5ac40560567c3c2066ed005ff60ee8c6f1597f0b7a6956eeab2dcd090d2", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x45", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x416a66", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7a49c5ac40560567c3c2066ed005ff60ee8c6f1597f0b7a6956eeab2dcd090d2", + "transactionIndex": "0x23", + "blockHash": "0x058ad3670fe93658e0d5cbc2ea544c3e1d67594c80f0778dcd26bd243cde9741", + "blockNumber": "0x4007e52", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x21d55d27", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315581, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/56/run-1755315080.json b/broadcast/DeployKeystore.s.sol/56/run-1755315080.json new file mode 100644 index 0000000..af6eaa6 --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/56/run-1755315080.json @@ -0,0 +1,47 @@ +{ + "transactions": [ + { + "hash": "0x368676869348f11f36dd3473d40c8ddd0bede114d3ad905e21d44e6c939953ff", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0xa9", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xa5ba23", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x368676869348f11f36dd3473d40c8ddd0bede114d3ad905e21d44e6c939953ff", + "transactionIndex": "0x38", + "blockHash": "0xd0a916330c9dcfdf88380590b4e2584518b748a8fa8c27c6cabdb7c158ec629f", + "blockNumber": "0x3714904", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315080, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/56/run-latest.json b/broadcast/DeployKeystore.s.sol/56/run-latest.json new file mode 100644 index 0000000..af6eaa6 --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/56/run-latest.json @@ -0,0 +1,47 @@ +{ + "transactions": [ + { + "hash": "0x368676869348f11f36dd3473d40c8ddd0bede114d3ad905e21d44e6c939953ff", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0xa9", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xa5ba23", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x368676869348f11f36dd3473d40c8ddd0bede114d3ad905e21d44e6c939953ff", + "transactionIndex": "0x38", + "blockHash": "0xd0a916330c9dcfdf88380590b4e2584518b748a8fa8c27c6cabdb7c158ec629f", + "blockNumber": "0x3714904", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315080, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/8453/run-1755222700.json b/broadcast/DeployKeystore.s.sol/8453/run-1755222700.json new file mode 100644 index 0000000..6cb061a --- /dev/null +++ b/broadcast/DeployKeystore.s.sol/8453/run-1755222700.json @@ -0,0 +1,53 @@ +{ + "transactions": [ + { + "hash": "0xc919c27207be49e91ac03bd0f479c3e7d4a87596db6fcb69047e42cef3be29d4", + "transactionType": "CREATE2", + "contractName": "Keystore", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "function": null, + "arguments": null, + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1fc557", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x43", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x6bbc1b", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc919c27207be49e91ac03bd0f479c3e7d4a87596db6fcb69047e42cef3be29d4", + "transactionIndex": "0x37", + "blockHash": "0x601c01c52138cf657cb51b987040faec0b8fc502b110fab7dc1dd0bc7e8f01e0", + "blockNumber": "0x20a1ad8", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x1dc818", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0xdcb3de884", + "l1GasPrice": "0x1e7ebe00", + "l1GasUsed": "0xc75a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755222700, + "chain": 8453, + "commit": "2d9be2e" +} \ No newline at end of file diff --git a/broadcast/DeployKeystore.s.sol/8453/run-latest.json b/broadcast/DeployKeystore.s.sol/8453/run-latest.json index 67df71d..6cb061a 100644 --- a/broadcast/DeployKeystore.s.sol/8453/run-latest.json +++ b/broadcast/DeployKeystore.s.sol/8453/run-latest.json @@ -1,19 +1,19 @@ { "transactions": [ { - "hash": "0xb8bdd07c1e3d18566097f11878faf7d8bdd85b6e1404f63c3c24f56d68bddb5c", + "hash": "0xc919c27207be49e91ac03bd0f479c3e7d4a87596db6fcb69047e42cef3be29d4", "transactionType": "CREATE2", "contractName": "Keystore", - "contractAddress": "0x18c90bdfc5667d11605ebde82e5e9cdc4d789363", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", "function": null, "arguments": null, "transaction": { "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0x1be8bb", + "gas": "0x1fc557", "value": "0x0", - "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506115ab8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806374d5f2b61161004d57806374d5f2b6146100c157806380855fff146100e15780638e9bd7c4146100f4575f5ffd5b806322773d23146100735780634ffa0484146100885780635ed9592a146100ae575b5f5ffd5b610086610081366004610d53565b61018c565b005b61009b610096366004610dba565b6104b4565b6040519081526020015b60405180910390f35b61009b6100bc366004610de4565b6104c6565b6100d46100cf366004610e59565b610591565b6040516100a59190610efb565b6100866100ef366004610f0d565b6106a0565b61009b610102366004610f86565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b5f5b818110156104af57368383838181106101a9576101a9610fdf565b90506020028101906101bb919061100c565b90505f5f6101cf8360400135604081901c91565b90925090505f6101f184356101ea6080870160608801611048565b8585610848565b90505f80610229863561020a6080890160608a01611048565b61021760808a018a611061565b61022460a08c018c611061565b6108e0565b915091505f5f61023883610ab9565b90925090505f883560208a013561025560808c0160608d01611048565b6040805160208101949094528381019290925273ffffffffffffffffffffffffffffffffffffffff1660608301528a0135608082015260a0810186905260c001604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905280516020909101209050600173ffffffffffffffffffffffffffffffffffffffff84166304b073c5836102f960c08e018e611061565b876040518563ffffffff1660e01b81526004016103199493929190611109565b602060405180830381865afa158015610334573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610358919061113f565b036103ca5788357f3978727c0447f1ecf21f50d11d943f5993f1a3186891fcb7f352f287ca329c1e60208b013560408c013561039760808e018e611061565b898f8060c001906103a89190611061565b5f6040516103bd989796959493929190611156565b60405180910390a261049a565b88355f908152602081815260408220908b0135916103ee60808d0160608e01611048565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2055610430893561042960808c0160608d01611048565b8a89610b68565b88357f3978727c0447f1ecf21f50d11d943f5993f1a3186891fcb7f352f287ca329c1e60208b013560408c013561046a60808e018e611061565b898f8060c0019061047b9190611061565b6001604051610491989796959493929190611156565b60405180910390a25b50506001909701965061018e95505050505050565b505050565b5f6104bf8383610c03565b9392505050565b5f806104e88335336104db6040870187611061565b6102246060890189611061565b9150505f5f6104f683610ab9565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c560208701356105296080890189611061565b856040518563ffffffff1660e01b81526004016105499493929190611109565b602060405180830381865afa158015610564573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610588919061113f565b95945050505050565b606060025f6105a08787610c03565b81526020019081526020015f205f84846040516105be9291906111b4565b604051809103902081526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054610619906111c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610645906111c3565b80156106905780601f1061066757610100808354040283529160200191610690565b820191905f5260205f20905b81548152906001019060200180831161067357829003601f168201915b505050505090505b949350505050565b60148110156106db576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1661073383838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250925060149150610c489050565b61073c90611214565b60601c03610776576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6107818633610c03565b90505f83836040516107949291906111b4565b604051809103902090506107dd8686808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250869250859150610ccb9050565b610813576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526002602090815260408083208484528252808320338452909152902061083e8486836112f8565b5050505050505050565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff9081169082168114610698576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6060848203610a07576108f4838561140e565b915060025f6109038a8a610c03565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610948906111c3565b80601f0160208091040260200160405190810160405280929190818152602001828054610974906111c3565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b50505050509050601481511015610a02576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610aae565b8383604051610a179291906111b4565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a60925050508688018861144a565b9050610a7681610a708b8b610c03565b85610ccb565b610aac576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f6060601483511015610af8576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601483511115610b1257610b0f8360148551610c48565b90505b610b1e835f6014610c48565b610b2790611214565b60601c915081610b63576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b610b73816001611530565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff851684529091528120548015610c3c5780610c3e565b835b9150505b92915050565b60608351828111610c57578092505b838111610c62578093505b50818310156104bf57506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610c9d575050508060208301015f81526020810160405250808252509392505050565b5f835115610d045760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610cdf5750505b5014919050565b5f5f83601f840112610d1b575f5ffd5b50813567ffffffffffffffff811115610d32575f5ffd5b6020830191508360208260051b8501011115610d4c575f5ffd5b9250929050565b5f5f60208385031215610d64575f5ffd5b823567ffffffffffffffff811115610d7a575f5ffd5b610d8685828601610d0b565b90969095509350505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610db5575f5ffd5b919050565b5f5f60408385031215610dcb575f5ffd5b82359150610ddb60208401610d92565b90509250929050565b5f60208284031215610df4575f5ffd5b813567ffffffffffffffff811115610e0a575f5ffd5b820160a081850312156104bf575f5ffd5b5f5f83601f840112610e2b575f5ffd5b50813567ffffffffffffffff811115610e42575f5ffd5b602083019150836020828501011115610d4c575f5ffd5b5f5f5f5f60608587031215610e6c575f5ffd5b84359350610e7c60208601610d92565b9250604085013567ffffffffffffffff811115610e97575f5ffd5b610ea387828801610e1b565b95989497509550505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6104bf6020830184610eaf565b5f5f5f5f5f60608688031215610f21575f5ffd5b85359450602086013567ffffffffffffffff811115610f3e575f5ffd5b610f4a88828901610d0b565b909550935050604086013567ffffffffffffffff811115610f69575f5ffd5b610f7588828901610e1b565b969995985093965092949392505050565b5f5f5f60608486031215610f98575f5ffd5b83359250610fa860208501610d92565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114610fd4575f5ffd5b809150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2183360301811261103e575f5ffd5b9190910192915050565b5f60208284031215611058575f5ffd5b6104bf82610d92565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611094575f5ffd5b83018035915067ffffffffffffffff8211156110ae575f5ffd5b602001915036819003821315610d4c575f5ffd5b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b848152606060208201525f6111226060830185876110c2565b82810360408401526111348185610eaf565b979650505050505050565b5f6020828403121561114f575f5ffd5b5051919050565b88815287602082015260c060408201525f61117560c08301888a6110c2565b82810360608401526111878188610eaf565b9050828103608084015261119c8186886110c2565b91505082151560a08301529998505050505050505050565b818382375f9101908152919050565b600181811c908216806111d757607f821691505b60208210810361120e577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611279577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b5050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b601f8211156104af57805f5260205f20601f840160051c810160208510156112d25750805b601f840160051c820191505b818110156112f1575f81556001016112de565b5050505050565b67ffffffffffffffff83111561131057611310611280565b6113248361131e83546111c3565b836112ad565b5f601f841160018114611374575f851561133e5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556112f1565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156113c157868501358255602094850194600190920191016113a1565b50868210156113fc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b80356020831015610c42577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f6020828403121561145a575f5ffd5b813567ffffffffffffffff811115611470575f5ffd5b8201601f81018413611480575f5ffd5b803567ffffffffffffffff81111561149a5761149a611280565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156114e5576114e5611280565b604052918252602081840181019290810187841115611502575f5ffd5b6020850194505b8385101561152557843580825260209586019590935001611509565b509695505050505050565b67ffffffffffffffff8181168382160190811115610c42577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffdfea2646970667358221220ee1bfc6a2144a8779f7f36d275135ccf94b96d9dc922f2f5eea902bd1e2602ec64736f6c634300081c0033", - "nonce": "0x3c", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506118d08061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061006f575f3560e01c806380855fff1161004d57806380855fff146100c15780638e9bd7c4146100d4578063afa6f9011461016c575f5ffd5b80634ffa04841461007357806359f99c78146100995780635ed9592a146100ae575b5f5ffd5b610086610081366004611027565b61018c565b6040519081526020015b60405180910390f35b6100ac6100a7366004611099565b61019e565b005b6100866100bc3660046110d8565b6104ac565b6100ac6100cf36600461110f565b610577565b6100866100e23660046111b3565b5f92835260016020908152604080852077ffffffffffffffffffffffffffffffffffffffffffffffff84168652825280852073ffffffffffffffffffffffffffffffffffffffff949094168552929052918190205491901b7fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff9091161790565b61017f61017a36600461120c565b6106a2565b604051610090919061128b565b5f610197838361077b565b9392505050565b6101a66107c0565b805f5b8181101561049e57368484838181106101c4576101c461129d565b90506020028101906101d691906112ca565b90505f5f6101ea8360400135604081901c91565b90925090505f61020c843561020560a0870160808801611306565b8585610848565b90505f80610244863561022560a0890160808a01611306565b61023260a08a018a61131f565b61023f60c08c018c61131f565b6108e8565b915091505f6102538784610ac1565b90506102a0818361026760e08b018b61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610c1b92505050565b156103175760208701356102ba60a0890160808a01611306565b60408051818b013581525f602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a461048b565b61034160208801358461032e6101008b018b61131f565b61033c6101208d018d61131f565b610cb4565b801561039c575061039c8161035a6101208a018a61131f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610267925050506101408b018b61131f565b156103b65760208701356102ba60a0890160808a01611306565b86355f90815260208181526040822090890135916103da60a08b0160808c01611306565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205561041c873561041560a08a0160808b01611306565b8887610d7e565b602087013561043160a0890160808a01611306565b60408051818b013581526001602082015273ffffffffffffffffffffffffffffffffffffffff92909216918a35917fdf6fe3b7516d2857b309887e79be529e781c7260ac62875fedf6c1adcccf3cbd910160405180910390a45b5050600190950194506101a99350505050565b50506104a8610e19565b5050565b5f806104ce8335336104c1604087018761131f565b61023f606089018961131f565b9150505f5f6104dc83610e43565b909250905073ffffffffffffffffffffffffffffffffffffffff82166304b073c5602087013561050f608089018961131f565b856040518563ffffffff1660e01b815260040161052f9493929190611380565b602060405180830381865afa15801561054a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061056e91906113eb565b95945050505050565b60148110156105b2576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6105c06014828486611402565b6105c991611429565b60601c03610603576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61060e863361077b565b90505f838360405161062192919061148f565b6040518091039020905061063786868484610efd565b61066d576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82815260026020908152604080832084845282528083203384529091529020610698848683611568565b5050505050505050565b606060025f6106b1868661077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff87168252909252902080546106f6906114cb565b80601f0160208091040260200160405190810160405280929190818152602001828054610722906114cb565b801561076d5780601f106107445761010080835404028352916020019161076d565b820191905f5260205f20905b81548152906001019060200180831161075057829003601f168201915b505050505090509392505050565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205480156107b457806107b6565b835b9150505b92915050565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c15610819576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61084660017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005b90610f35565b565b5f84815260016020908152604080832077ffffffffffffffffffffffffffffffffffffffffffffffff86168452825280832073ffffffffffffffffffffffffffffffffffffffff8716845290915290205467ffffffffffffffff90811690821681146108e0576040517f756688fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b5f6060848203610a0f576108fc838561167e565b915060025f61090b8a8a61077b565b815260208082019290925260409081015f908120858252835281812073ffffffffffffffffffffffffffffffffffffffff8b16825290925290208054610950906114cb565b80601f016020809104026020016040519081016040528092919081815260200182805461097c906114cb565b80156109c75780601f1061099e576101008083540402835291602001916109c7565b820191905f5260205f20905b8154815290600101906020018083116109aa57829003601f168201915b50505050509050601481511015610a0a576040517f726a091f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ab6565b8383604051610a1f92919061148f565b604080519182900382206020601f8701819004810284018101909252858352935085908590819084018382808284375f920182905250939450610a6892505050868801886116ba565b9050610a7e81610a788b8b61077b565b85610f3c565b610ab4576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b965096945050505050565b5f610ad260808401606085016117a0565b610b745782356020840135610aed60a0860160808701611306565b604086013585610b0161012089018961131f565b604051610b0f92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c081019190915260e00160405160208183030381529060405280519060200120610197565b82356020840135610b8b60a0860160808701611306565b604086013585610b9f61012089018961131f565b604051610bad92919061148f565b60408051918290038220602083019790975281019490945273ffffffffffffffffffffffffffffffffffffffff9092166060840152608083015260a082015260c08101919091524660e082015261010001604051602081830303815290604052805190602001209392505050565b5f5f5f610c2785610e43565b9150915060018273ffffffffffffffffffffffffffffffffffffffff166304b073c58887856040518463ffffffff1660e01b8152600401610c6a939291906117bf565b602060405180830381865afa158015610c85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906113eb565b149695505050505050565b5f80610cc2858701876116ba565b90505f839003610d1657610cd7818989610f3c565b610d0d576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f915050610d74565b610d3881898686604051610d2b92919061148f565b6040518091039020610f3c565b610d6e576040517f1420d2a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60019150505b9695505050505050565b610d898160016117e9565b5f94855260016020908152604080872077ffffffffffffffffffffffffffffffffffffffffffffffff95909516875293815283862073ffffffffffffffffffffffffffffffffffffffff959095168652939093525090912080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff909216919091179055565b6108465f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00610840565b5f6060601483511015610e82576040517f30812d4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e8e835f6014610f7c565b610e979061182e565b60601c9150610ea98360148551610f7c565b905073ffffffffffffffffffffffffffffffffffffffff8216610ef8576040517fbaa3de5f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b915091565b5f8315610f2d578360051b8501855b803580851160051b94855260209485185260405f209301818110610f0c5750505b501492915050565b80825d5050565b5f835115610f755760208401845160051b81015b8151841160051b938452815160209485185260405f209390910190808210610f505750505b5014919050565b60608351828111610f8b578092505b838111610f96578093505b508183101561019757506040518282038484017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830181165b8281015185820152810180610fd1575050508060208301015f81526020810160405250808252509392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611022575f5ffd5b919050565b5f5f60408385031215611038575f5ffd5b8235915061104860208401610fff565b90509250929050565b5f5f83601f840112611061575f5ffd5b50813567ffffffffffffffff811115611078575f5ffd5b6020830191508360208260051b8501011115611092575f5ffd5b9250929050565b5f5f602083850312156110aa575f5ffd5b823567ffffffffffffffff8111156110c0575f5ffd5b6110cc85828601611051565b90969095509350505050565b5f602082840312156110e8575f5ffd5b813567ffffffffffffffff8111156110fe575f5ffd5b820160a08185031215610197575f5ffd5b5f5f5f5f5f60608688031215611123575f5ffd5b85359450602086013567ffffffffffffffff811115611140575f5ffd5b61114c88828901611051565b909550935050604086013567ffffffffffffffff81111561116b575f5ffd5b8601601f8101881361117b575f5ffd5b803567ffffffffffffffff811115611191575f5ffd5b8860208284010111156111a2575f5ffd5b959894975092955050506020019190565b5f5f5f606084860312156111c5575f5ffd5b833592506111d560208501610fff565b9150604084013577ffffffffffffffffffffffffffffffffffffffffffffffff81168114611201575f5ffd5b809150509250925092565b5f5f5f6060848603121561121e575f5ffd5b8335925061122e60208501610fff565b929592945050506040919091013590565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610197602083018461123f565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea18336030181126112fc575f5ffd5b9190910192915050565b5f60208284031215611316575f5ffd5b61019782610fff565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611352575f5ffd5b83018035915067ffffffffffffffff82111561136c575f5ffd5b602001915036819003821315611092575f5ffd5b84815260606020820152826060820152828460808301375f608084830101525f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116820160808382030160408401526113e0608082018561123f565b979650505050505050565b5f602082840312156113fb575f5ffd5b5051919050565b5f5f85851115611410575f5ffd5b8386111561141c575f5ffd5b5050820193919092039150565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015611488577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b82161691505b5092915050565b818382375f9101908152919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b600181811c908216806114df57607f821691505b602082108103611516577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f82111561156357805f5260205f20601f840160051c810160208510156115415750805b601f840160051c820191505b81811015611560575f815560010161154d565b50505b505050565b67ffffffffffffffff8311156115805761158061149e565b6115948361158e83546114cb565b8361151c565b5f601f8411600181146115e4575f85156115ae5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611560565b5f838152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08716915b828110156116315786850135825560209485019460019092019101611611565b508682101561166c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555050505050565b803560208310156107ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b5f602082840312156116ca575f5ffd5b813567ffffffffffffffff8111156116e0575f5ffd5b8201601f810184136116f0575f5ffd5b803567ffffffffffffffff81111561170a5761170a61149e565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811067ffffffffffffffff821117156117555761175561149e565b604052918252602081840181019290810187841115611772575f5ffd5b6020850194505b8385101561179557843580825260209586019590935001611779565b509695505050505050565b5f602082840312156117b0575f5ffd5b81358015158114610197575f5ffd5b838152606060208201525f6117d7606083018561123f565b8281036040840152610d74818561123f565b67ffffffffffffffff81811683821601908111156107ba577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805160208201517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811691906014821015611893577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808360140360031b1b82161692505b505091905056fea26469706673582212208b6bd610be10cd7a4abbffcf557f19951214c8906f04b3791c8811aa7059e2e264736f6c634300081c0033", + "nonce": "0x43", "chainId": "0x2105" }, "additionalContracts": [], @@ -23,31 +23,31 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x28f8182", + "cumulativeGasUsed": "0x6bbc1b", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xb8bdd07c1e3d18566097f11878faf7d8bdd85b6e1404f63c3c24f56d68bddb5c", - "transactionIndex": "0xa7", - "blockHash": "0x4167b7cd6946963a3715f863804e45da2ce9878544f9df0f5874cbd8ebca2a69", - "blockNumber": "0x1e7f481", - "gasUsed": "0x13154a", - "effectiveGasPrice": "0xce261", + "transactionHash": "0xc919c27207be49e91ac03bd0f479c3e7d4a87596db6fcb69047e42cef3be29d4", + "transactionIndex": "0x37", + "blockHash": "0x601c01c52138cf657cb51b987040faec0b8fc502b110fab7dc1dd0bc7e8f01e0", + "blockNumber": "0x20a1ad8", + "gasUsed": "0x15b943", + "effectiveGasPrice": "0x1dc818", "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x18c90bdfc5667d11605ebde82e5e9cdc4d789363", + "contractAddress": "0x69c9f626b5bd934c0f9806346682ed407fb978d3", "l1BaseFeeScalar": "0x8dd", "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0x101c12", - "l1Fee": "0x129a7cda12", - "l1GasPrice": "0x2d3b74ed", - "l1GasUsed": "0xb543" + "l1Fee": "0xdcb3de884", + "l1GasPrice": "0x1e7ebe00", + "l1GasUsed": "0xc75a" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1750746624, + "timestamp": 1755222700, "chain": 8453, - "commit": "9647c03" + "commit": "2d9be2e" } \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/1/run-1755316669.json b/broadcast/DeployKeystoreAccountFactory.s.sol/1/run-1755316669.json new file mode 100644 index 0000000..61d15b5 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/1/run-1755316669.json @@ -0,0 +1,71 @@ +{ + "transactions": [ + { + "hash": "0xea5fa3696044f7160e39301b27848ebe4b335e846cf1c4d8e4f1fce45275575f", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7b", + "chainId": "0x1" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x16cd07a", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x9ba1f276535cb0c2bdac78225dfa642e5fe95000c6db72e3ca63774f550445b4", + "blockNumber": "0x16141d4", + "blockTimestamp": "0x68a001a3", + "transactionHash": "0xea5fa3696044f7160e39301b27848ebe4b335e846cf1c4d8e4f1fce45275575f", + "transactionIndex": "0x91", + "logIndex": "0x308", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xea5fa3696044f7160e39301b27848ebe4b335e846cf1c4d8e4f1fce45275575f", + "transactionIndex": "0x91", + "blockHash": "0x9ba1f276535cb0c2bdac78225dfa642e5fe95000c6db72e3ca63774f550445b4", + "blockNumber": "0x16141d4", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x10350c64", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316669, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/1/run-latest.json b/broadcast/DeployKeystoreAccountFactory.s.sol/1/run-latest.json new file mode 100644 index 0000000..61d15b5 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/1/run-latest.json @@ -0,0 +1,71 @@ +{ + "transactions": [ + { + "hash": "0xea5fa3696044f7160e39301b27848ebe4b335e846cf1c4d8e4f1fce45275575f", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7b", + "chainId": "0x1" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x16cd07a", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x9ba1f276535cb0c2bdac78225dfa642e5fe95000c6db72e3ca63774f550445b4", + "blockNumber": "0x16141d4", + "blockTimestamp": "0x68a001a3", + "transactionHash": "0xea5fa3696044f7160e39301b27848ebe4b335e846cf1c4d8e4f1fce45275575f", + "transactionIndex": "0x91", + "logIndex": "0x308", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xea5fa3696044f7160e39301b27848ebe4b335e846cf1c4d8e4f1fce45275575f", + "transactionIndex": "0x91", + "blockHash": "0x9ba1f276535cb0c2bdac78225dfa642e5fe95000c6db72e3ca63774f550445b4", + "blockNumber": "0x16141d4", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x10350c64", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316669, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/10/run-1755313800.json b/broadcast/DeployKeystoreAccountFactory.s.sol/10/run-1755313800.json new file mode 100644 index 0000000..2108f55 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/10/run-1755313800.json @@ -0,0 +1,76 @@ +{ + "transactions": [ + { + "hash": "0x4f1cacc9433fc5b4f071c171f79f1d45952098535c7dc7ea9e546849f6b7bb8a", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x26", + "chainId": "0xa" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8ff7b5", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xb23579c76feb1ee5f42bb565aa8e902b60c2d96dff5497f838c1836b39a5e51d", + "blockNumber": "0x8560e55", + "transactionHash": "0x4f1cacc9433fc5b4f071c171f79f1d45952098535c7dc7ea9e546849f6b7bb8a", + "transactionIndex": "0x10", + "logIndex": "0xa", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4f1cacc9433fc5b4f071c171f79f1d45952098535c7dc7ea9e546849f6b7bb8a", + "transactionIndex": "0x10", + "blockHash": "0xb23579c76feb1ee5f42bb565aa8e902b60c2d96dff5497f838c1836b39a5e51d", + "blockNumber": "0x8560e55", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x2ae7", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x1c4ce30fdc", + "l1GasPrice": "0x10a58a4f", + "l1GasUsed": "0x1453f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313800, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/10/run-latest.json b/broadcast/DeployKeystoreAccountFactory.s.sol/10/run-latest.json new file mode 100644 index 0000000..2108f55 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/10/run-latest.json @@ -0,0 +1,76 @@ +{ + "transactions": [ + { + "hash": "0x4f1cacc9433fc5b4f071c171f79f1d45952098535c7dc7ea9e546849f6b7bb8a", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x26", + "chainId": "0xa" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8ff7b5", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xb23579c76feb1ee5f42bb565aa8e902b60c2d96dff5497f838c1836b39a5e51d", + "blockNumber": "0x8560e55", + "transactionHash": "0x4f1cacc9433fc5b4f071c171f79f1d45952098535c7dc7ea9e546849f6b7bb8a", + "transactionIndex": "0x10", + "logIndex": "0xa", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4f1cacc9433fc5b4f071c171f79f1d45952098535c7dc7ea9e546849f6b7bb8a", + "transactionIndex": "0x10", + "blockHash": "0xb23579c76feb1ee5f42bb565aa8e902b60c2d96dff5497f838c1836b39a5e51d", + "blockNumber": "0x8560e55", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x2ae7", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x1c4ce30fdc", + "l1GasPrice": "0x10a58a4f", + "l1GasUsed": "0x1453f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313800, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/137/run-1755314510.json b/broadcast/DeployKeystoreAccountFactory.s.sol/137/run-1755314510.json new file mode 100644 index 0000000..654f54e --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/137/run-1755314510.json @@ -0,0 +1,86 @@ +{ + "transactions": [ + { + "hash": "0xf2fb663448a1b5c58eb643114110677e328663e0ee9ee533089655fafec33f8c", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4c", + "chainId": "0x89" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x105cb0f", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x87794819fbcf52c8a44cf66bfd5cab90a4c32c570c3aa340ab0a8870ee34cbab", + "blockNumber": "0x47c6159", + "transactionHash": "0xf2fb663448a1b5c58eb643114110677e328663e0ee9ee533089655fafec33f8c", + "transactionIndex": "0x46", + "logIndex": "0x1f6", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x000000000000000000000000dfe6ad10265afc05831b332fda6f5bc1ad9d79ce" + ], + "data": "0x00000000000000000000000000000000000000000000000000cb28513710185b00000000000000000000000000000000000000000000000b883e0ef7024c187d000000000000000000000000000000000000000000000425b8e0f76f3a1cda4f00000000000000000000000000000000000000000000000b8772e6a5cb3c0022000000000000000000000000000000000000000000000425b9ac1fc0712cf2aa", + "blockHash": "0x87794819fbcf52c8a44cf66bfd5cab90a4c32c570c3aa340ab0a8870ee34cbab", + "blockNumber": "0x47c6159", + "transactionHash": "0xf2fb663448a1b5c58eb643114110677e328663e0ee9ee533089655fafec33f8c", + "transactionIndex": "0x46", + "logIndex": "0x1f7", + "removed": false + } + ], + "logsBloom": "0x000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000408000100080000000000001000000000000000000000000000000000000000000000000010000000000800000000000000000400000000000000008000000000000000000004000800000000000000000002000000000000000000000000000000000000000000000000000000000000a4000000000000000000001000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0xf2fb663448a1b5c58eb643114110677e328663e0ee9ee533089655fafec33f8c", + "transactionIndex": "0x46", + "blockHash": "0x87794819fbcf52c8a44cf66bfd5cab90a4c32c570c3aa340ab0a8870ee34cbab", + "blockNumber": "0x47c6159", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x60db88404", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314510, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/137/run-latest.json b/broadcast/DeployKeystoreAccountFactory.s.sol/137/run-latest.json new file mode 100644 index 0000000..654f54e --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/137/run-latest.json @@ -0,0 +1,86 @@ +{ + "transactions": [ + { + "hash": "0xf2fb663448a1b5c58eb643114110677e328663e0ee9ee533089655fafec33f8c", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4c", + "chainId": "0x89" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x105cb0f", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x87794819fbcf52c8a44cf66bfd5cab90a4c32c570c3aa340ab0a8870ee34cbab", + "blockNumber": "0x47c6159", + "transactionHash": "0xf2fb663448a1b5c58eb643114110677e328663e0ee9ee533089655fafec33f8c", + "transactionIndex": "0x46", + "logIndex": "0x1f6", + "removed": false + }, + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x000000000000000000000000dfe6ad10265afc05831b332fda6f5bc1ad9d79ce" + ], + "data": "0x00000000000000000000000000000000000000000000000000cb28513710185b00000000000000000000000000000000000000000000000b883e0ef7024c187d000000000000000000000000000000000000000000000425b8e0f76f3a1cda4f00000000000000000000000000000000000000000000000b8772e6a5cb3c0022000000000000000000000000000000000000000000000425b9ac1fc0712cf2aa", + "blockHash": "0x87794819fbcf52c8a44cf66bfd5cab90a4c32c570c3aa340ab0a8870ee34cbab", + "blockNumber": "0x47c6159", + "transactionHash": "0xf2fb663448a1b5c58eb643114110677e328663e0ee9ee533089655fafec33f8c", + "transactionIndex": "0x46", + "logIndex": "0x1f7", + "removed": false + } + ], + "logsBloom": "0x000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000408000100080000000000001000000000000000000000000000000000000000000000000010000000000800000000000000000400000000000000008000000000000000000004000800000000000000000002000000000000000000000000000000000000000000000000000000000000a4000000000000000000001000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0xf2fb663448a1b5c58eb643114110677e328663e0ee9ee533089655fafec33f8c", + "transactionIndex": "0x46", + "blockHash": "0x87794819fbcf52c8a44cf66bfd5cab90a4c32c570c3aa340ab0a8870ee34cbab", + "blockNumber": "0x47c6159", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x60db88404", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314510, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/42161/run-1755312691.json b/broadcast/DeployKeystoreAccountFactory.s.sol/42161/run-1755312691.json new file mode 100644 index 0000000..e6fd539 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/42161/run-1755312691.json @@ -0,0 +1,73 @@ +{ + "transactions": [ + { + "hash": "0xe22de904b4e45420217c60ce8e272b4b20c148d45c735060200d221d49427afc", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2cc4cf", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x45", + "chainId": "0xa4b1" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x253aba", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x7557b02a6eb461624bbc29586b8a476575dcff548f1e4ef93a34f3805a8d7ae2", + "blockNumber": "0x15fcc92a", + "transactionHash": "0xe22de904b4e45420217c60ce8e272b4b20c148d45c735060200d221d49427afc", + "transactionIndex": "0x5", + "logIndex": "0x3", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe22de904b4e45420217c60ce8e272b4b20c148d45c735060200d221d49427afc", + "transactionIndex": "0x5", + "blockHash": "0x7557b02a6eb461624bbc29586b8a476575dcff548f1e4ef93a34f3805a8d7ae2", + "blockNumber": "0x15fcc92a", + "gasUsed": "0x21cd0a", + "effectiveGasPrice": "0xd4e400", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "gasUsedForL1": "0x3dbb", + "l1BlockNumber": "0x1614087", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312691, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/42161/run-latest.json b/broadcast/DeployKeystoreAccountFactory.s.sol/42161/run-latest.json new file mode 100644 index 0000000..e6fd539 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/42161/run-latest.json @@ -0,0 +1,73 @@ +{ + "transactions": [ + { + "hash": "0xe22de904b4e45420217c60ce8e272b4b20c148d45c735060200d221d49427afc", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2cc4cf", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x45", + "chainId": "0xa4b1" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x253aba", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x7557b02a6eb461624bbc29586b8a476575dcff548f1e4ef93a34f3805a8d7ae2", + "blockNumber": "0x15fcc92a", + "transactionHash": "0xe22de904b4e45420217c60ce8e272b4b20c148d45c735060200d221d49427afc", + "transactionIndex": "0x5", + "logIndex": "0x3", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe22de904b4e45420217c60ce8e272b4b20c148d45c735060200d221d49427afc", + "transactionIndex": "0x5", + "blockHash": "0x7557b02a6eb461624bbc29586b8a476575dcff548f1e4ef93a34f3805a8d7ae2", + "blockNumber": "0x15fcc92a", + "gasUsed": "0x21cd0a", + "effectiveGasPrice": "0xd4e400", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "gasUsedForL1": "0x3dbb", + "l1BlockNumber": "0x1614087", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312691, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/43114/run-1755315645.json b/broadcast/DeployKeystoreAccountFactory.s.sol/43114/run-1755315645.json new file mode 100644 index 0000000..ee30992 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/43114/run-1755315645.json @@ -0,0 +1,70 @@ +{ + "transactions": [ + { + "hash": "0x9ffa6f26f18e831673b067f015cb6217181489e93b1b5a77cca03928c8f2e842", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x46", + "chainId": "0xa86a" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8c99cc", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xf68bfa43b51a26c415cd1a467e5ca0c3b8d066e6744d5a5891f2309808ed2875", + "blockNumber": "0x4007e71", + "transactionHash": "0x9ffa6f26f18e831673b067f015cb6217181489e93b1b5a77cca03928c8f2e842", + "transactionIndex": "0x38", + "logIndex": "0x75", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9ffa6f26f18e831673b067f015cb6217181489e93b1b5a77cca03928c8f2e842", + "transactionIndex": "0x38", + "blockHash": "0xf68bfa43b51a26c415cd1a467e5ca0c3b8d066e6744d5a5891f2309808ed2875", + "blockNumber": "0x4007e71", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x21732313", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315645, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/43114/run-latest.json b/broadcast/DeployKeystoreAccountFactory.s.sol/43114/run-latest.json new file mode 100644 index 0000000..ee30992 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/43114/run-latest.json @@ -0,0 +1,70 @@ +{ + "transactions": [ + { + "hash": "0x9ffa6f26f18e831673b067f015cb6217181489e93b1b5a77cca03928c8f2e842", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x46", + "chainId": "0xa86a" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8c99cc", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0xf68bfa43b51a26c415cd1a467e5ca0c3b8d066e6744d5a5891f2309808ed2875", + "blockNumber": "0x4007e71", + "transactionHash": "0x9ffa6f26f18e831673b067f015cb6217181489e93b1b5a77cca03928c8f2e842", + "transactionIndex": "0x38", + "logIndex": "0x75", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x9ffa6f26f18e831673b067f015cb6217181489e93b1b5a77cca03928c8f2e842", + "transactionIndex": "0x38", + "blockHash": "0xf68bfa43b51a26c415cd1a467e5ca0c3b8d066e6744d5a5891f2309808ed2875", + "blockNumber": "0x4007e71", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x21732313", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315645, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/56/run-1755315127.json b/broadcast/DeployKeystoreAccountFactory.s.sol/56/run-1755315127.json new file mode 100644 index 0000000..5a61305 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/56/run-1755315127.json @@ -0,0 +1,70 @@ +{ + "transactions": [ + { + "hash": "0x41281660f4e458bf3ee54ce8a99c1db7756a8d549e5555169e8e2ff5d048fdd7", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xaa", + "chainId": "0x38" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xbef60c", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x53dbb7fd35f465c57b8a8ace904c09fd2d360bfe9f492fbe7499fa9b022e85e9", + "blockNumber": "0x371493e", + "transactionHash": "0x41281660f4e458bf3ee54ce8a99c1db7756a8d549e5555169e8e2ff5d048fdd7", + "transactionIndex": "0x3b", + "logIndex": "0x192", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x41281660f4e458bf3ee54ce8a99c1db7756a8d549e5555169e8e2ff5d048fdd7", + "transactionIndex": "0x3b", + "blockHash": "0x53dbb7fd35f465c57b8a8ace904c09fd2d360bfe9f492fbe7499fa9b022e85e9", + "blockNumber": "0x371493e", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315127, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/56/run-latest.json b/broadcast/DeployKeystoreAccountFactory.s.sol/56/run-latest.json new file mode 100644 index 0000000..5a61305 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/56/run-latest.json @@ -0,0 +1,70 @@ +{ + "transactions": [ + { + "hash": "0x41281660f4e458bf3ee54ce8a99c1db7756a8d549e5555169e8e2ff5d048fdd7", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xaa", + "chainId": "0x38" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xbef60c", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x53dbb7fd35f465c57b8a8ace904c09fd2d360bfe9f492fbe7499fa9b022e85e9", + "blockNumber": "0x371493e", + "transactionHash": "0x41281660f4e458bf3ee54ce8a99c1db7756a8d549e5555169e8e2ff5d048fdd7", + "transactionIndex": "0x3b", + "logIndex": "0x192", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x41281660f4e458bf3ee54ce8a99c1db7756a8d549e5555169e8e2ff5d048fdd7", + "transactionIndex": "0x3b", + "blockHash": "0x53dbb7fd35f465c57b8a8ace904c09fd2d360bfe9f492fbe7499fa9b022e85e9", + "blockNumber": "0x371493e", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315127, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/8453/run-1755222796.json b/broadcast/DeployKeystoreAccountFactory.s.sol/8453/run-1755222796.json new file mode 100644 index 0000000..7ef37b2 --- /dev/null +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/8453/run-1755222796.json @@ -0,0 +1,77 @@ +{ + "transactions": [ + { + "hash": "0xcdb8a6de000264ea642d996b89e04649da6d4e122c537bcb188dc1d4f042ae03", + "transactionType": "CREATE2", + "contractName": "KeystoreAccountFactory", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "function": null, + "arguments": [ + "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x2e5abd", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x44", + "chainId": "0x2105" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xcfb09e", + "logs": [ + { + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x8735d43dabea7d6f8a3ef37232f09f355db6c234d87247998007ce19d5db5f75", + "blockNumber": "0x20a1aff", + "blockTimestamp": "0x689e92e1", + "transactionHash": "0xcdb8a6de000264ea642d996b89e04649da6d4e122c537bcb188dc1d4f042ae03", + "transactionIndex": "0x47", + "logIndex": "0x71", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xcdb8a6de000264ea642d996b89e04649da6d4e122c537bcb188dc1d4f042ae03", + "transactionIndex": "0x47", + "blockHash": "0x8735d43dabea7d6f8a3ef37232f09f355db6c234d87247998007ce19d5db5f75", + "blockNumber": "0x20a1aff", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x1be6a6", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x1646b2124f", + "l1GasPrice": "0x1e2a6e43", + "l1GasUsed": "0x14574" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755222796, + "chain": 8453, + "commit": "2d9be2e" +} \ No newline at end of file diff --git a/broadcast/DeployKeystoreAccountFactory.s.sol/8453/run-latest.json b/broadcast/DeployKeystoreAccountFactory.s.sol/8453/run-latest.json index c5275a3..7ef37b2 100644 --- a/broadcast/DeployKeystoreAccountFactory.s.sol/8453/run-latest.json +++ b/broadcast/DeployKeystoreAccountFactory.s.sol/8453/run-latest.json @@ -1,29 +1,29 @@ { "transactions": [ { - "hash": "0x4c6a76a88a51384adf964c65bc5be82bc1d0ea7dcac4285359c8876689bb2103", + "hash": "0xcdb8a6de000264ea642d996b89e04649da6d4e122c537bcb188dc1d4f042ae03", "transactionType": "CREATE2", "contractName": "KeystoreAccountFactory", - "contractAddress": "0x2f775f9ffc02231c3bb1ea1281f1da9ba2f2a069", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", "function": null, "arguments": [ "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108", - "0x18c90BdFc5667D11605ebde82E5E9CDC4D789363" + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" ], "transaction": { "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0x299cd5", + "gas": "0x2e5abd", "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516124a73803806124a783398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b61186980610c3e83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c051610a8a6101b45f395f81816078015261039601525f818161011c01526101b001525f818160d40152818161027501526104620152610a8a5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe1461010b578063bbd6dd6b1461013e578063d7eb8e811461015d575f5ffd5b806309ccb8801461006757806311464fbe146100c3578063972aaeb6146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b61010961010436600461058a565b61017c565b005b348015610116575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b348015610149575f5ffd5b5061009a6101583660046105b4565b610222565b348015610168575f5ffd5b5061009a6101773660046105b4565b61037d565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff821660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b158015610208575f5ffd5b505af115801561021a573d5f5f3e3d5ffd5b505050505050565b5f610374825f1b604051806020016102399061057d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f909101166040819052602481018790527f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152918152602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9498bd7100000000000000000000000000000000000000000000000000000000179052905161031d939291016105d4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610359929160200161065b565b60405160208183030381529060405280519060200120610537565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f6f6e6c792063616c6c61626c652066726f6d2053656e64657243726561746f72604482015260640160405180910390fd5b5f61042c8484610222565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561045457509050610377565b6040516024810186905284907f000000000000000000000000000000000000000000000000000000000000000090604401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9498bd7100000000000000000000000000000000000000000000000000000000179052516105059061057d565b6105109291906105d4565b8190604051809103905ff590508015801561052d573d5f5f3e3d5ffd5b5095945050505050565b5f6103748383305f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b6103dd8061067883390190565b5f6020828403121561059a575f5ffd5b813563ffffffff811681146105ad575f5ffd5b9392505050565b5f5f604083850312156105c5575f5ffd5b50508035926020909101359150565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201525f82518060408401528060208501606085015e5f6060828501015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168401019150509392505050565b5f81518060208401855e5f93019283525090919050565b5f61066f6106698386610644565b84610644565b94935050505056fe60806040526040516103dd3803806103dd8339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024d575f5ffd5b82516001600160a01b0381168114610263575f5ffd5b60208401519092506001600160401b0381111561027e575f5ffd5b8301601f8101851361028e575f5ffd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60b08061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b605d565b565b5f60587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156076573d5ff35b3d5ffdfea264697066735822122084dafcf134fb2b5deec1f12a82983f3c00800b90cf49a112bc0b067a2d5c82a764736f6c634300081c0033a2646970667358221220f568573ba0196806ef8081c197415e6658a3cf5a770c0ce0c4de317751d0a98f64736f6c634300081c003360c060405234801561000f575f5ffd5b5060405161186938038061186983398101604081905261002e916100cc565b6001600160a01b03808316608052811660a052610049610050565b5050610104565b63409feecd198054600181161561006e5763f92ee8a95f526004601cfd5b6001600160401b03808260011c146100b0578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b03811681146100c9575f5ffd5b50565b5f5f604083850312156100dd575f5ffd5b82516100e8816100b5565b60208401519092506100f9816100b5565b809150509250929050565b60805160a0516116fe61016b5f395f81816101bd015281816102e7015281816106d1015281816109ba0152610afd01525f818161022f0152818161050d015281816105b7015281816106f501528181610811015281816108cc015261091301526116fe5ff3fe6080604052600436106100c6575f3560e01c8063772a000111610071578063b61d27f61161004c578063b61d27f614610253578063c399ec8814610272578063d087d28814610286575f5ffd5b8063772a0001146101af5780639498bd7114610202578063b0d691fe14610221575f5ffd5b806334fcd5be116100a157806334fcd5be146101675780634a58db19146101885780634d44560d14610190575f5ffd5b80630a451fbc146100d15780631626ba7e146100f857806319822f7c14610148575f5ffd5b366100cd57005b5f5ffd5b3480156100dc575f5ffd5b506100e55f5481565b6040519081526020015b60405180910390f35b348015610103575f5ffd5b50610117610112366004610f4a565b61029a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100ef565b348015610153575f5ffd5b506100e5610162366004610f8e565b6103dd565b348015610172575f5ffd5b50610186610181366004610fdd565b610402565b005b61018661050b565b34801561019b575f5ffd5b506101866101aa36600461106f565b6105ad565b3480156101ba575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ef565b34801561020d575f5ffd5b5061018661021c366004611099565b61065f565b34801561022c575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006101dd565b34801561025e575f5ffd5b5061018661026d3660046110b0565b610774565b34801561027d575f5ffd5b506100e56107cc565b348015610291575f5ffd5b506100e5610880565b5f5f5f5f848060200190518101906102b29190611182565b9250925092505f6040518060a001604052805f54815260200188815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b815260040161033e919061125c565b602060405180830381865afa158015610359573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037d919061130b565b036103af57507fffffffff0000000000000000000000000000000000000000000000000000000093506103d792505050565b507f1626ba7e0000000000000000000000000000000000000000000000000000000093505050505b92915050565b5f6103e66108fb565b6103f0848461099c565b90506103fb82610b7c565b9392505050565b61040a610bc1565b805f5b81811015610505573684848381811061042857610428611322565b905060200281019061043a919061134f565b90505f61049861044d602084018461138b565b602084013561045f60408601866113a6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610bc9565b9050806104fb57836001036104b4576104af610bdf565b6104fb565b826104be5f610bf0565b6040517f5a1546750000000000000000000000000000000000000000000000000000000081526004016104f292919061140e565b60405180910390fd5b505060010161040d565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610594575f5ffd5b505af11580156105a6573d5f5f3e3d5ffd5b5050505050565b6105b5610bc1565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b158015610645575f5ffd5b505af1158015610657573d5f5f3e3d5ffd5b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106b05760018160011c14303b106106a75763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610770576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b61077c610bc1565b5f6107bd858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610bc9565b9050806105a6576105a6610bdf565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610857573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087b919061130b565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a9060440161083c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461099a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016104f2565b565b5f5f6109aa84845f54610c21565b90508060400151515f14610ac0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610a0e9190611426565b84606001516040518463ffffffff1660e01b8152600401610a31939291906114ce565b5f604051808303815f87803b158015610a48575f5ffd5b505af1158015610a5a573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610a8c9050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610b3290849060040161125c565b602060405180830381865afa158015610b4d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b71919061130b565b949350505050565b50565b8015610b79576040515f90339083908381818185875af1925050503d805f81146105a6576040519150601f19603f3d011682016040523d82523d5f602084013e6105a6565b61099a6108fb565b5f5f5f845160208601878987f195945050505050565b61099a610beb5f610bf0565b610cac565b60603d8215610c045782811115610c045750815b604051602082018101604052818152815f602083013e9392505050565b610c516040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f8080610c6a610c656101008901896113a6565b610cb4565b9250925092505f610c7b8883610cd2565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b60608080610cc484860186611523565b919790965090945092505050565b6040805161012081019091526060905f9080610cf1602087018761138b565b73ffffffffffffffffffffffffffffffffffffffff16815260200185602001358152602001858060400190610d2691906113a6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610d6c60608701876113a6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c0870135606083015201610dcf60e08701876113a6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101859052604051919250610e1f918391016115a7565b60405160208183030381529060405291505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610eab57610eab610e37565b604052919050565b5f67ffffffffffffffff821115610ecc57610ecc610e37565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610f07575f5ffd5b8135610f1a610f1582610eb3565b610e64565b818152846020838601011115610f2e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610f5b575f5ffd5b82359150602083013567ffffffffffffffff811115610f78575f5ffd5b610f8485828601610ef8565b9150509250929050565b5f5f5f60608486031215610fa0575f5ffd5b833567ffffffffffffffff811115610fb6575f5ffd5b84016101208187031215610fc8575f5ffd5b95602085013595506040909401359392505050565b5f5f60208385031215610fee575f5ffd5b823567ffffffffffffffff811115611004575f5ffd5b8301601f81018513611014575f5ffd5b803567ffffffffffffffff81111561102a575f5ffd5b8560208260051b840101111561103e575f5ffd5b6020919091019590945092505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610b79575f5ffd5b5f5f60408385031215611080575f5ffd5b823561108b8161104e565b946020939093013593505050565b5f602082840312156110a9575f5ffd5b5035919050565b5f5f5f5f606085870312156110c3575f5ffd5b84356110ce8161104e565b935060208501359250604085013567ffffffffffffffff8111156110f0575f5ffd5b8501601f81018713611100575f5ffd5b803567ffffffffffffffff811115611116575f5ffd5b876020828401011115611127575f5ffd5b949793965060200194505050565b5f82601f830112611144575f5ffd5b8151611152610f1582610eb3565b818152846020838601011115611166575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f60608486031215611194575f5ffd5b835167ffffffffffffffff8111156111aa575f5ffd5b6111b686828701611135565b935050602084015167ffffffffffffffff8111156111d2575f5ffd5b6111de86828701611135565b925050604084015167ffffffffffffffff8111156111fa575f5ffd5b61120686828701611135565b9150509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815281516020820152602082015160408201525f604083015160a0606084015261128b60c0840182611210565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160808501526112c68282611210565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526113028282611210565b95945050505050565b5f6020828403121561131b575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611381575f5ffd5b9190910192915050565b5f6020828403121561139b575f5ffd5b81356103fb8161104e565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126113d9575f5ffd5b83018035915067ffffffffffffffff8211156113f3575f5ffd5b602001915036819003821315611407575f5ffd5b9250929050565b828152604060208201525f610b716040830184611210565b5f60208284031215611436575f5ffd5b815167ffffffffffffffff81111561144c575f5ffd5b8201601f8101841361145c575f5ffd5b805167ffffffffffffffff81111561147657611476610e37565b8060051b61148660208201610e64565b918252602081840181019290810190878411156114a1575f5ffd5b6020850194505b838510156114c35784518252602094850194909101906114a8565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b8181101561150f5783518352602093840193909201916001016114f1565b505083810360408501526114c38186611210565b5f5f5f60608486031215611535575f5ffd5b833567ffffffffffffffff81111561154b575f5ffd5b61155786828701610ef8565b935050602084013567ffffffffffffffff811115611573575f5ffd5b61157f86828701610ef8565b925050604084013567ffffffffffffffff81111561159b575f5ffd5b61120686828701610ef8565b602081526115ce60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f604083015161012060608401526115f4610140840182611210565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301608085015261162f8282611210565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030161010085015261168a8282611210565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611302828261121056fea2646970667358221220f2032561e99e8516b3a7211e7ecb5f41df8aba7cb9be514813e007f24a08ae7864736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000018c90bdfc5667d11605ebde82e5e9cdc4d789363", - "nonce": "0x41", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e060405234801561000f575f5ffd5b506040516129a43803806129a483398101604081905261002e91610116565b818160405161003c906100f2565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801561006c573d5f5f3e3d5ffd5b506001600160a01b03908116608052821660a0819052604080516213997160e71b815290516309ccb880916004808201926020929091908290030181865afa1580156100ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100de919061014e565b6001600160a01b031660c052506101709050565b6122c5806106df83390190565b6001600160a01b0381168114610113575f5ffd5b50565b5f5f60408385031215610127575f5ffd5b8251610132816100ff565b6020840151909250610143816100ff565b809150509250929050565b5f6020828403121561015e575f5ffd5b8151610169816100ff565b9392505050565b60805160a05160c05161052b6101b45f395f81816078015261029301525f818161011101526101a301525f818160d40152818161021a0152610322015261052b5ff3fe608060405260043610610063575f3560e01c8063b0d691fe11610041578063b0d691fe14610100578063bbd6dd6b14610133578063d7eb8e8114610152575f5ffd5b806309ccb8801461006757806311464fbe146100c357806340733f25146100f6575b5f5ffd5b348015610072575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100ce575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b6100fe610171565b005b34801561010b575f5ffd5b5061009a7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013e575f5ffd5b5061009a61014d3660046104d5565b610214565b34801561015d575f5ffd5b5061009a61016c3660046104d5565b61027a565b6040517f0396cb6000000000000000000000000000000000000000000000000000000000815263ffffffff60048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690630396cb609034906024015f604051808303818588803b1580156101fb575f5ffd5b505af115801561020d573d5f5f3e3d5ffd5b5050505050565b5f6102717f00000000000000000000000000000000000000000000000000000000000000008484604051602001610255929190918252602082015260400190565b60405160208183030381529060405280519060200120306103fe565b90505b92915050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102ea576040517f3b9b3f6e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6102f58484610214565b905073ffffffffffffffffffffffffffffffffffffffff81163b801561031d57509050610274565b6103787f0000000000000000000000000000000000000000000000000000000000000000868660405160200161035d929190918252602082015260400190565b60405160208183030381529060405280519060200120610457565b6040517f9498bd710000000000000000000000000000000000000000000000000000000081526004810187905290935073ffffffffffffffffffffffffffffffffffffffff841690639498bd71906024015f604051808303815f87803b1580156103e0575f5ffd5b505af11580156103f2573d5f5f3e3d5ffd5b50505050505092915050565b5f5f610441855f6c5af43d3d93803e602a57fd5bf36021528160145273602c3d8160093d39f33d3d3d3d363d3d37363d735f526035600c2090505f602152919050565b905061044e818585610463565b95945050505050565b5f6102715f8484610482565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b5f6c5af43d3d93803e602a57fd5bf36021528260145273602c3d8160093d39f33d3d3d3d363d3d37363d735f52816035600c86f59050806104ca5763301164255f526004601cfd5b5f6021529392505050565b5f5f604083850312156104e6575f5ffd5b5050803592602090910135915056fea2646970667358221220e2019351f96de53c3067bfb54712da36d77a27554dd98c811284794e12a0e98e64736f6c634300081c0033610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x44", "chainId": "0x2105" }, "additionalContracts": [ { "transactionType": "CREATE", - "address": "0xf93270ae147e3969de7dc13b781fe23e994ae7b6", - "initCode": "0x60c060405234801561000f575f5ffd5b5060405161186938038061186983398101604081905261002e916100cc565b6001600160a01b03808316608052811660a052610049610050565b5050610104565b63409feecd198054600181161561006e5763f92ee8a95f526004601cfd5b6001600160401b03808260011c146100b0578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b03811681146100c9575f5ffd5b50565b5f5f604083850312156100dd575f5ffd5b82516100e8816100b5565b60208401519092506100f9816100b5565b809150509250929050565b60805160a0516116fe61016b5f395f81816101bd015281816102e7015281816106d1015281816109ba0152610afd01525f818161022f0152818161050d015281816105b7015281816106f501528181610811015281816108cc015261091301526116fe5ff3fe6080604052600436106100c6575f3560e01c8063772a000111610071578063b61d27f61161004c578063b61d27f614610253578063c399ec8814610272578063d087d28814610286575f5ffd5b8063772a0001146101af5780639498bd7114610202578063b0d691fe14610221575f5ffd5b806334fcd5be116100a157806334fcd5be146101675780634a58db19146101885780634d44560d14610190575f5ffd5b80630a451fbc146100d15780631626ba7e146100f857806319822f7c14610148575f5ffd5b366100cd57005b5f5ffd5b3480156100dc575f5ffd5b506100e55f5481565b6040519081526020015b60405180910390f35b348015610103575f5ffd5b50610117610112366004610f4a565b61029a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020016100ef565b348015610153575f5ffd5b506100e5610162366004610f8e565b6103dd565b348015610172575f5ffd5b50610186610181366004610fdd565b610402565b005b61018661050b565b34801561019b575f5ffd5b506101866101aa36600461106f565b6105ad565b3480156101ba575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ef565b34801561020d575f5ffd5b5061018661021c366004611099565b61065f565b34801561022c575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006101dd565b34801561025e575f5ffd5b5061018661026d3660046110b0565b610774565b34801561027d575f5ffd5b506100e56107cc565b348015610291575f5ffd5b506100e5610880565b5f5f5f5f848060200190518101906102b29190611182565b9250925092505f6040518060a001604052805f54815260200188815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b815260040161033e919061125c565b602060405180830381865afa158015610359573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061037d919061130b565b036103af57507fffffffff0000000000000000000000000000000000000000000000000000000093506103d792505050565b507f1626ba7e0000000000000000000000000000000000000000000000000000000093505050505b92915050565b5f6103e66108fb565b6103f0848461099c565b90506103fb82610b7c565b9392505050565b61040a610bc1565b805f5b81811015610505573684848381811061042857610428611322565b905060200281019061043a919061134f565b90505f61049861044d602084018461138b565b602084013561045f60408601866113a6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610bc9565b9050806104fb57836001036104b4576104af610bdf565b6104fb565b826104be5f610bf0565b6040517f5a1546750000000000000000000000000000000000000000000000000000000081526004016104f292919061140e565b60405180910390fd5b505060010161040d565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610594575f5ffd5b505af11580156105a6573d5f5f3e3d5ffd5b5050505050565b6105b5610bc1565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b158015610645575f5ffd5b505af1158015610657573d5f5f3e3d5ffd5b505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106b05760018160011c14303b106106a75763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610770576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b61077c610bc1565b5f6107bd858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610bc9565b9050806105a6576105a6610bdf565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610857573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087b919061130b565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a9060440161083c565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461099a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016104f2565b565b5f5f6109aa84845f54610c21565b90508060400151515f14610ac0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610a0e9190611426565b84606001516040518463ffffffff1660e01b8152600401610a31939291906114ce565b5f604051808303815f87803b158015610a48575f5ffd5b505af1158015610a5a573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610a8c9050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610b3290849060040161125c565b602060405180830381865afa158015610b4d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b71919061130b565b949350505050565b50565b8015610b79576040515f90339083908381818185875af1925050503d805f81146105a6576040519150601f19603f3d011682016040523d82523d5f602084013e6105a6565b61099a6108fb565b5f5f5f845160208601878987f195945050505050565b61099a610beb5f610bf0565b610cac565b60603d8215610c045782811115610c045750815b604051602082018101604052818152815f602083013e9392505050565b610c516040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f8080610c6a610c656101008901896113a6565b610cb4565b9250925092505f610c7b8883610cd2565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b60608080610cc484860186611523565b919790965090945092505050565b6040805161012081019091526060905f9080610cf1602087018761138b565b73ffffffffffffffffffffffffffffffffffffffff16815260200185602001358152602001858060400190610d2691906113a6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001610d6c60608701876113a6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c0870135606083015201610dcf60e08701876113a6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101859052604051919250610e1f918391016115a7565b60405160208183030381529060405291505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610eab57610eab610e37565b604052919050565b5f67ffffffffffffffff821115610ecc57610ecc610e37565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610f07575f5ffd5b8135610f1a610f1582610eb3565b610e64565b818152846020838601011115610f2e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215610f5b575f5ffd5b82359150602083013567ffffffffffffffff811115610f78575f5ffd5b610f8485828601610ef8565b9150509250929050565b5f5f5f60608486031215610fa0575f5ffd5b833567ffffffffffffffff811115610fb6575f5ffd5b84016101208187031215610fc8575f5ffd5b95602085013595506040909401359392505050565b5f5f60208385031215610fee575f5ffd5b823567ffffffffffffffff811115611004575f5ffd5b8301601f81018513611014575f5ffd5b803567ffffffffffffffff81111561102a575f5ffd5b8560208260051b840101111561103e575f5ffd5b6020919091019590945092505050565b73ffffffffffffffffffffffffffffffffffffffff81168114610b79575f5ffd5b5f5f60408385031215611080575f5ffd5b823561108b8161104e565b946020939093013593505050565b5f602082840312156110a9575f5ffd5b5035919050565b5f5f5f5f606085870312156110c3575f5ffd5b84356110ce8161104e565b935060208501359250604085013567ffffffffffffffff8111156110f0575f5ffd5b8501601f81018713611100575f5ffd5b803567ffffffffffffffff811115611116575f5ffd5b876020828401011115611127575f5ffd5b949793965060200194505050565b5f82601f830112611144575f5ffd5b8151611152610f1582610eb3565b818152846020838601011115611166575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f60608486031215611194575f5ffd5b835167ffffffffffffffff8111156111aa575f5ffd5b6111b686828701611135565b935050602084015167ffffffffffffffff8111156111d2575f5ffd5b6111de86828701611135565b925050604084015167ffffffffffffffff8111156111fa575f5ffd5b61120686828701611135565b9150509250925092565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815281516020820152602082015160408201525f604083015160a0606084015261128b60c0840182611210565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160808501526112c68282611210565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526113028282611210565b95945050505050565b5f6020828403121561131b575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611381575f5ffd5b9190910192915050565b5f6020828403121561139b575f5ffd5b81356103fb8161104e565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126113d9575f5ffd5b83018035915067ffffffffffffffff8211156113f3575f5ffd5b602001915036819003821315611407575f5ffd5b9250929050565b828152604060208201525f610b716040830184611210565b5f60208284031215611436575f5ffd5b815167ffffffffffffffff81111561144c575f5ffd5b8201601f8101841361145c575f5ffd5b805167ffffffffffffffff81111561147657611476610e37565b8060051b61148660208201610e64565b918252602081840181019290810190878411156114a1575f5ffd5b6020850194505b838510156114c35784518252602094850194909101906114a8565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b8181101561150f5783518352602093840193909201916001016114f1565b505083810360408501526114c38186611210565b5f5f5f60608486031215611535575f5ffd5b833567ffffffffffffffff81111561154b575f5ffd5b61155786828701610ef8565b935050602084013567ffffffffffffffff811115611573575f5ffd5b61157f86828701610ef8565b925050604084013567ffffffffffffffff81111561159b575f5ffd5b61120686828701610ef8565b602081526115ce60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f604083015161012060608401526115f4610140840182611210565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301608085015261162f8282611210565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030161010085015261168a8282611210565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611302828261121056fea2646970667358221220f2032561e99e8516b3a7211e7ecb5f41df8aba7cb9be514813e007f24a08ae7864736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000018c90bdfc5667d11605ebde82e5e9cdc4d789363" + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", + "initCode": "0x610160604052348015610010575f5ffd5b506040516122c53803806122c583398101604081905261002f91610187565b306080524660a05260608061007e604080518082018252600f81526e12d95e5cdd1bdc995058d8dbdd5b9d608a1b602080830191909152825180840190935260018352603160f81b9083015291565b815160209283012081519183019190912060c082905260e0819052604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8152938401929092529082015246606082015230608082015260a0902061010052506100e79050565b6001600160a01b038083166101205281166101405261010461010b565b50506101bf565b63409feecd19805460018116156101295763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461016b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6001600160a01b0381168114610184575f5ffd5b50565b5f5f60408385031215610198575f5ffd5b82516101a381610170565b60208401519092506101b481610170565b809150509250929050565b60805160a05160c05160e05161010051610120516101405161206f6102565f395f8181610262015281816108e701528181610c5401528181610d97015261128f01525f818161030f0152818161067b015281816107250152818161090b01528181610a2701528181610ae20152610bad01525f61133501525f6113ef01525f6113c901525f61137901525f611356015261206f5ff3fe60806040526004361061010c575f3560e01c80637e024e16116100a1578063b61d27f611610071578063c399ec8811610057578063c399ec8814610399578063d087d288146103ad578063f23a6e61146103c1575f5ffd5b8063b61d27f614610333578063bc197c8114610352575f5ffd5b80637e024e16146102a757806384b0196e146102bb5780639498bd71146102e2578063b0d691fe14610301575f5ffd5b806334fcd5be116100dc57806334fcd5be1461020c5780634a58db191461022d5780634d44560d14610235578063772a000114610254575f5ffd5b806301ffc9a714610117578063150b7a021461014b5780631626ba7e146101c057806319822f7c146101df575f5ffd5b3661011357005b5f5ffd5b348015610122575f5ffd5b506101366101313660046115cc565b610406565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061018f61016536600461166a565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610142565b3480156101cb575f5ffd5b5061018f6101da3660046116d8565b6104ea565b3480156101ea575f5ffd5b506101fe6101f9366004611720565b610552565b604051908152602001610142565b348015610217575f5ffd5b5061022b6102263660046117b0565b610570565b005b61022b610679565b348015610240575f5ffd5b5061022b61024f3660046117ef565b61071b565b34801561025f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610142565b3480156102b2575f5ffd5b506101fe5f5481565b3480156102c6575f5ffd5b506102cf6107cd565b6040516101429796959493929190611865565b3480156102ed575f5ffd5b5061022b6102fc366004611924565b610875565b34801561030c575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610282565b34801561033e575f5ffd5b5061022b61034d36600461193b565b61098a565b34801561035d575f5ffd5b5061018f61036c366004611993565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156103a4575f5ffd5b506101fe6109e2565b3480156103b8575f5ffd5b506101fe610a96565b3480156103cc575f5ffd5b5061018f6103db366004611a56565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061049857507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806104e457507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b5f816105275761773961ffff83190402840361052757507f773900010000000000000000000000000000000000000000000000000000000061054b565b5f61053b856105368686610b11565b610b5f565b155f03631626ba7e1760e01b9150505b9392505050565b5f61055b610b95565b6105658484610c36565b905061054b82610e0e565b610578610e53565b805f5b81811015610673573684848381811061059657610596611acd565b90506020028101906105a89190611afa565b90505f6106066105bb6020840184611b36565b60208401356105cd6040860186611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061066957836001036106225761061d610e71565b610669565b8261062c5f610e82565b6040517f5a154675000000000000000000000000000000000000000000000000000000008152600401610660929190611bb2565b60405180910390fd5b505060010161057b565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006040517fb760faf900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063b760faf99034906024015f604051808303818588803b158015610702575f5ffd5b505af1158015610714573d5f5f3e3d5ffd5b5050505050565b610723610e53565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c2878906044015f604051808303815f87803b1580156107b3575f5ffd5b505af11580156107c5573d5f5f3e3d5ffd5b505050505050565b7f0f000000000000000000000000000000000000000000000000000000000000006060805f808083610863604080518082018252600f81527f4b657973746f72654163636f756e7400000000000000000000000000000000006020808301919091528251808401909352600183527f31000000000000000000000000000000000000000000000000000000000000009083015291565b97989097965046955030945091925090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156108c65760018160011c14303b106108bd5763f92ee8a95f526004601cfd5b818160ff1b1b91505b505f828155604051839173ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116927f0000000000000000000000000000000000000000000000000000000000000000909116917f761269bd6ebe25520ae3727c288ead3622882df287b06a48146bddb5f434634591a48015610986576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050565b610992610e53565b5f6109d3858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610e5b565b90508061071457610714610e71565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015610a6d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a919190611bca565b905090565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201525f602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401610a52565b818161649261ffff30801c1904028183017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0013503610b5857506040810135016020810190355b9250929050565b5f610b6b848484610eb3565b80610b7c5750610b7c848484610ed4565b80610b8d5750610b8d84848461114c565b949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610c34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610660565b565b5f5f610c4484845f546111b7565b90508060400151515f14610d5a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166380855fff5f548360400151806020019051810190610ca89190611c5d565b84606001516040518463ffffffff1660e01b8152600401610ccb93929190611d05565b5f604051808303815f87803b158015610ce2575f5ffd5b505af1158015610cf4573d5f5f3e3d5ffd5b505060408051602080820183525f8252858301919091526060850151805190820120825191820152019150610d269050565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905260608201525b6040517f5ed9592a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635ed9592a90610dcc908490600401611d5a565b602060405180830381865afa158015610de7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8d9190611bca565b50565b8015610e0b576040515f90339083908381818185875af1925050503d805f8114610714576040519150601f19603f3d011682016040523d82523d5f602084013e610714565b610c34610b95565b5f5f5f845160208601878987f195945050505050565b610c34610e7d5f610e82565b611242565b60603d8215610e965782811115610e965750815b604051602082018101604052818152815f602083013e9392505050565b5f336dd9ecebf3c23529de49815dac1c4c0361054b57610b8d84848461124a565b5f308015610f40575f5f5f5f5f610ee96107cd565b5060408051865160209788012081830152855195909601949094206060860152608085019290925273ffffffffffffffffffffffffffffffffffffffff1660a084015260c083015260e08201905296505050505050505b6040516002840385013560f01c8060420180860387016119015f52604081602037821582881017896042601e20181715610fab575f94507f983e65e5148e570cd828ead231ee759a8d7958721a768f93bc4483ba005c32de8552886020526040852098505050611123565b7f5479706564446174615369676e280000000000000000000000000000000000008452600e84018360408301823760288185019081527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01515f1a602914611043575f6001858301035b6001820191506029828203515f1a148683101161101557508085039450808560408501018337602881830153505b6f07fffffe00000000000001000000000081515f1a1c5b602882515f1a1461108057806512010000000183515f1a1c17905060018201915061105a565b7f20636f6e74656e74732c737472696e67206e616d652c737472696e670000000082527f2076657273696f6e2c75696e7432353620636861696e49642c61646472657373601c8301527f20766572696679696e67436f6e74726163742c627974657333322073616c7429603c830152605c820191508460408401833760408388379084018590038520865260e08620604052600116604201601e20985050909403935b50604052806111385761113585611333565b94505b61114385858561124a565b95945050505050565b5f3a61054b573a3a526d378edcd5b5b0a24f5342d8c1048560203a3a388461fffffa503a516111ab57604051631626ba7e3a528160205260408052454561ffff0117805a10838814171561119c57fe5b3a3a6064601c3085fa50506040525b50610b8d84848461124a565b6111e76040518060a001604052805f81526020015f81526020016060815260200160608152602001606081525090565b5f80806112006111fb610100890189611b51565b611449565b9250925092505f6112118883611467565b6040805160a08101825297885260208801989098529686019390935250606084015250506080810191909152919050565b805160208201fd5b5f80808061125a85870187611e8a565b9250925092505f6040518060a001604052805f54815260200189815260200185815260200184815260200183815250905060017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635ed9592a836040518263ffffffff1660e01b81526004016112e69190611d5a565b602060405180830381865afa158015611301573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113259190611bca565b141598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000030147f00000000000000000000000000000000000000000000000000000000000000004614166114265750604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f000000000000000000000000000000000000000000000000000000000000000060208201527f00000000000000000000000000000000000000000000000000000000000000009181019190915246606082015230608082015260a090205b6719010000000000005f5280601a5281603a52604260182090505f603a52919050565b6060808061145984860186611e8a565b919790965090945092505050565b6040805161012081019091526060905f90806114866020870187611b36565b73ffffffffffffffffffffffffffffffffffffffff168152602001856020013581526020018580604001906114bb9190611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016115016060870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250608080870135602083015260a0870135604083015260c087013560608301520161156460e0870187611b51565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081018590526040519192506115b491839101611f18565b60405160208183030381529060405291505092915050565b5f602082840312156115dc575f5ffd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461054b575f5ffd5b73ffffffffffffffffffffffffffffffffffffffff81168114610e0b575f5ffd5b5f5f83601f84011261163c575f5ffd5b50813567ffffffffffffffff811115611653575f5ffd5b602083019150836020828501011115610b58575f5ffd5b5f5f5f5f5f6080868803121561167e575f5ffd5b85356116898161160b565b945060208601356116998161160b565b935060408601359250606086013567ffffffffffffffff8111156116bb575f5ffd5b6116c78882890161162c565b969995985093965092949392505050565b5f5f5f604084860312156116ea575f5ffd5b83359250602084013567ffffffffffffffff811115611707575f5ffd5b6117138682870161162c565b9497909650939450505050565b5f5f5f60608486031215611732575f5ffd5b833567ffffffffffffffff811115611748575f5ffd5b8401610120818703121561175a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261177f575f5ffd5b50813567ffffffffffffffff811115611796575f5ffd5b6020830191508360208260051b8501011115610b58575f5ffd5b5f5f602083850312156117c1575f5ffd5b823567ffffffffffffffff8111156117d7575f5ffd5b6117e38582860161176f565b90969095509350505050565b5f5f60408385031215611800575f5ffd5b823561180b8161160b565b946020939093013593505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e060208201525f61189f60e0830189611819565b82810360408401526118b18189611819565b6060840188905273ffffffffffffffffffffffffffffffffffffffff8716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156119135783518352602093840193909201916001016118f5565b50909b9a5050505050505050505050565b5f60208284031215611934575f5ffd5b5035919050565b5f5f5f5f6060858703121561194e575f5ffd5b84356119598161160b565b935060208501359250604085013567ffffffffffffffff81111561197b575f5ffd5b6119878782880161162c565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b0312156119aa575f5ffd5b88356119b58161160b565b975060208901356119c58161160b565b9650604089013567ffffffffffffffff8111156119e0575f5ffd5b6119ec8b828c0161176f565b909750955050606089013567ffffffffffffffff811115611a0b575f5ffd5b611a178b828c0161176f565b909550935050608089013567ffffffffffffffff811115611a36575f5ffd5b611a428b828c0161162c565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215611a6b575f5ffd5b8635611a768161160b565b95506020870135611a868161160b565b94506040870135935060608701359250608087013567ffffffffffffffff811115611aaf575f5ffd5b611abb89828a0161162c565b979a9699509497509295939492505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611b2c575f5ffd5b9190910192915050565b5f60208284031215611b46575f5ffd5b813561054b8161160b565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b84575f5ffd5b83018035915067ffffffffffffffff821115611b9e575f5ffd5b602001915036819003821315610b58575f5ffd5b828152604060208201525f610b8d6040830184611819565b5f60208284031215611bda575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611c5557611c55611be1565b604052919050565b5f60208284031215611c6d575f5ffd5b815167ffffffffffffffff811115611c83575f5ffd5b8201601f81018413611c93575f5ffd5b805167ffffffffffffffff811115611cad57611cad611be1565b8060051b611cbd60208201611c0e565b91825260208184018101929081019087841115611cd8575f5ffd5b6020850194505b83851015611cfa578451825260209485019490910190611cdf565b979650505050505050565b5f60608201858352606060208401528085518083526080850191506020870192505f5b81811015611d46578351835260209384019390920191600101611d28565b50508381036040850152611cfa8186611819565b6020815281516020820152602082015160408201525f604083015160a06060840152611d8960c0840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611dc48282611819565b91505060808401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160a08501526111438282611819565b5f82601f830112611e0f575f5ffd5b813567ffffffffffffffff811115611e2957611e29611be1565b611e5a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611c0e565b818152846020838601011115611e6e575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f60608486031215611e9c575f5ffd5b833567ffffffffffffffff811115611eb2575f5ffd5b611ebe86828701611e00565b935050602084013567ffffffffffffffff811115611eda575f5ffd5b611ee686828701611e00565b925050604084013567ffffffffffffffff811115611f02575f5ffd5b611f0e86828701611e00565b9150509250925092565b60208152611f3f60208201835173ffffffffffffffffffffffffffffffffffffffff169052565b602082015160408201525f60408301516101206060840152611f65610140840182611819565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152611fa08282611819565b915050608084015160a084015260a084015160c084015260c084015160e084015260e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152611ffb8282611819565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152611143828261181956fea2646970667358221220aedc73ef5fd8464b4bec61dbac031f4726b918eab4e865d3571cfd554ad6919f64736f6c634300081c00330000000000000000000000004337084d9e255ff0702461cf8895ce9e3b5ff10800000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3" } ], "isFixedGasLimit": false @@ -32,46 +32,46 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x209e0e2", + "cumulativeGasUsed": "0xcfb09e", "logs": [ { - "address": "0xf93270ae147e3969de7dc13b781fe23e994ae7b6", + "address": "0x2bef90fd33e02f31c7da8ed815db6788e48fae04", "topics": [ "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" ], "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0x56850e18191bc164a53633ffe4c79c36603c5446ffd3e66a6dae3ea445e5c275", - "blockNumber": "0x1e8956b", - "blockTimestamp": "0x685b87b9", - "transactionHash": "0x4c6a76a88a51384adf964c65bc5be82bc1d0ea7dcac4285359c8876689bb2103", - "transactionIndex": "0xa2", - "logIndex": "0x19b", + "blockHash": "0x8735d43dabea7d6f8a3ef37232f09f355db6c234d87247998007ce19d5db5f75", + "blockNumber": "0x20a1aff", + "blockTimestamp": "0x689e92e1", + "transactionHash": "0xcdb8a6de000264ea642d996b89e04649da6d4e122c537bcb188dc1d4f042ae03", + "transactionIndex": "0x47", + "logIndex": "0x71", "removed": false } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000800000000000000000000000000000000000000000000000000000000000000000800000000000080000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000800000000000000000000400080000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x4c6a76a88a51384adf964c65bc5be82bc1d0ea7dcac4285359c8876689bb2103", - "transactionIndex": "0xa2", - "blockHash": "0x56850e18191bc164a53633ffe4c79c36603c5446ffd3e66a6dae3ea445e5c275", - "blockNumber": "0x1e8956b", - "gasUsed": "0x1e2076", - "effectiveGasPrice": "0xb4ea0", + "transactionHash": "0xcdb8a6de000264ea642d996b89e04649da6d4e122c537bcb188dc1d4f042ae03", + "transactionIndex": "0x47", + "blockHash": "0x8735d43dabea7d6f8a3ef37232f09f355db6c234d87247998007ce19d5db5f75", + "blockNumber": "0x20a1aff", + "gasUsed": "0x218f4f", + "effectiveGasPrice": "0x1be6a6", "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x2f775f9ffc02231c3bb1ea1281f1da9ba2f2a069", + "contractAddress": "0x625cf8edec3f68d48d3aa385f356524b04760be8", "l1BaseFeeScalar": "0x8dd", "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0x101c12", - "l1Fee": "0x887f703336", - "l1GasPrice": "0xd630fa65", - "l1GasUsed": "0x118dc" + "l1Fee": "0x1646b2124f", + "l1GasPrice": "0x1e2a6e43", + "l1GasUsed": "0x14574" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1750829027, + "timestamp": 1755222796, "chain": 8453, - "commit": "2d2b5d7" + "commit": "2d9be2e" } \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/1/run-1755316762.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/1/run-1755316762.json new file mode 100644 index 0000000..e124b2f --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/1/run-1755316762.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xf2bf3c40a4d83333c5d2328d825ead7c51d01dc3c617fa88e4067eeec52e0604", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7c", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xc19d2e", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf2bf3c40a4d83333c5d2328d825ead7c51d01dc3c617fa88e4067eeec52e0604", + "transactionIndex": "0xda", + "blockHash": "0x8841300b4b719b04b1e5730a2be4d29df69573f658f1ed135cb9547494b8ba69", + "blockNumber": "0x16141dc", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0xfcce8f5", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316762, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/1/run-latest.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/1/run-latest.json new file mode 100644 index 0000000..e124b2f --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/1/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xf2bf3c40a4d83333c5d2328d825ead7c51d01dc3c617fa88e4067eeec52e0604", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7c", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xc19d2e", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf2bf3c40a4d83333c5d2328d825ead7c51d01dc3c617fa88e4067eeec52e0604", + "transactionIndex": "0xda", + "blockHash": "0x8841300b4b719b04b1e5730a2be4d29df69573f658f1ed135cb9547494b8ba69", + "blockNumber": "0x16141dc", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0xfcce8f5", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316762, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/10/run-1755313822.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/10/run-1755313822.json new file mode 100644 index 0000000..060b59f --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/10/run-1755313822.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x0916aa4542100c1622c57b4748815966f00be67e04187d773bac5dc6533304de", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x27", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x112278c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0916aa4542100c1622c57b4748815966f00be67e04187d773bac5dc6533304de", + "transactionIndex": "0x20", + "blockHash": "0xa158410e79dfc3b58031fcefc8eaab481c6f74440470ae0db799c30416e6673a", + "blockNumber": "0x8560e70", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0xd55a", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x4f8fc67d7", + "l1GasPrice": "0xf369557", + "l1GasUsed": "0x3e88" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313822, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/10/run-latest.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/10/run-latest.json new file mode 100644 index 0000000..060b59f --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/10/run-latest.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x0916aa4542100c1622c57b4748815966f00be67e04187d773bac5dc6533304de", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x27", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x112278c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0916aa4542100c1622c57b4748815966f00be67e04187d773bac5dc6533304de", + "transactionIndex": "0x20", + "blockHash": "0xa158410e79dfc3b58031fcefc8eaab481c6f74440470ae0db799c30416e6673a", + "blockNumber": "0x8560e70", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0xd55a", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x4f8fc67d7", + "l1GasPrice": "0xf369557", + "l1GasUsed": "0x3e88" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313822, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/137/run-1755314609.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/137/run-1755314609.json new file mode 100644 index 0000000..6a974c9 --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/137/run-1755314609.json @@ -0,0 +1,66 @@ +{ + "transactions": [ + { + "hash": "0x229427452cd21e607c4027d2be77cade6d791cee012abc32cfb119a44c2f87ff", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4d", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x195ce44", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x00000000000000000000000097667d210b374a8852797c8bc984a0e2fac51bc7" + ], + "data": "0x0000000000000000000000000000000000000000000000000024410ff6a341a000000000000000000000000000000000000000000000000b8772e6a5b0191f410000000000000000000000000000000000000000000000549ac3850990d6667b00000000000000000000000000000000000000000000000b874ea595b975dda10000000000000000000000000000000000000000000000549ae7c6198779a81b", + "blockHash": "0x2082e85acbbc858d3da4817651f78ae9db54ad8fc47eb1f934bc894c048fda8c", + "blockNumber": "0x47c6190", + "transactionHash": "0x229427452cd21e607c4027d2be77cade6d791cee012abc32cfb119a44c2f87ff", + "transactionIndex": "0xdc", + "logIndex": "0x432", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800010008000000000000100000000000000000000000000000004000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001000000000000000200000000000000000000000004000000000000000000000000000000000084000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x229427452cd21e607c4027d2be77cade6d791cee012abc32cfb119a44c2f87ff", + "transactionIndex": "0xdc", + "blockHash": "0x2082e85acbbc858d3da4817651f78ae9db54ad8fc47eb1f934bc894c048fda8c", + "blockNumber": "0x47c6190", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0x61d37cd9c", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314609, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/137/run-latest.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/137/run-latest.json new file mode 100644 index 0000000..6a974c9 --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/137/run-latest.json @@ -0,0 +1,66 @@ +{ + "transactions": [ + { + "hash": "0x229427452cd21e607c4027d2be77cade6d791cee012abc32cfb119a44c2f87ff", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4d", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x195ce44", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x00000000000000000000000097667d210b374a8852797c8bc984a0e2fac51bc7" + ], + "data": "0x0000000000000000000000000000000000000000000000000024410ff6a341a000000000000000000000000000000000000000000000000b8772e6a5b0191f410000000000000000000000000000000000000000000000549ac3850990d6667b00000000000000000000000000000000000000000000000b874ea595b975dda10000000000000000000000000000000000000000000000549ae7c6198779a81b", + "blockHash": "0x2082e85acbbc858d3da4817651f78ae9db54ad8fc47eb1f934bc894c048fda8c", + "blockNumber": "0x47c6190", + "transactionHash": "0x229427452cd21e607c4027d2be77cade6d791cee012abc32cfb119a44c2f87ff", + "transactionIndex": "0xdc", + "logIndex": "0x432", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800010008000000000000100000000000000000000000000000004000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001000000000000000200000000000000000000000004000000000000000000000000000000000084000000000000000000001000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x229427452cd21e607c4027d2be77cade6d791cee012abc32cfb119a44c2f87ff", + "transactionIndex": "0xdc", + "blockHash": "0x2082e85acbbc858d3da4817651f78ae9db54ad8fc47eb1f934bc894c048fda8c", + "blockNumber": "0x47c6190", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0x61d37cd9c", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314609, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/42161/run-1755312744.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/42161/run-1755312744.json new file mode 100644 index 0000000..9fad017 --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/42161/run-1755312744.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x0c5c93cb0c3d144c92dc0dc687c158b83c2d68d970842e50e4151935e76683dd", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x7fc76", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x46", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5fe8c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0c5c93cb0c3d144c92dc0dc687c158b83c2d68d970842e50e4151935e76683dd", + "transactionIndex": "0x1", + "blockHash": "0x0b3dc9e64b7604dc9d9684799838425b041a480cd0fcffa52b6fda6dd1ce227b", + "blockNumber": "0x15fcca4e", + "gasUsed": "0x5fe8c", + "effectiveGasPrice": "0xaa3e08", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "gasUsedForL1": "0x1094", + "l1BlockNumber": "0x161408e", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312744, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/42161/run-latest.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/42161/run-latest.json new file mode 100644 index 0000000..9fad017 --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/42161/run-latest.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x0c5c93cb0c3d144c92dc0dc687c158b83c2d68d970842e50e4151935e76683dd", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x7fc76", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x46", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5fe8c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0c5c93cb0c3d144c92dc0dc687c158b83c2d68d970842e50e4151935e76683dd", + "transactionIndex": "0x1", + "blockHash": "0x0b3dc9e64b7604dc9d9684799838425b041a480cd0fcffa52b6fda6dd1ce227b", + "blockNumber": "0x15fcca4e", + "gasUsed": "0x5fe8c", + "effectiveGasPrice": "0xaa3e08", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "gasUsedForL1": "0x1094", + "l1BlockNumber": "0x161408e", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312744, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/43114/run-1755315698.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/43114/run-1755315698.json new file mode 100644 index 0000000..623b891 --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/43114/run-1755315698.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x1b7218f848d8db5f22592feee88f418d5c36f5adad0b7ee6f7ddfb0c22d1624e", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x47", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1cf2db", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1b7218f848d8db5f22592feee88f418d5c36f5adad0b7ee6f7ddfb0c22d1624e", + "transactionIndex": "0x7", + "blockHash": "0x97cf57e425562b5f50b4592fce197a1eb64c538bc395d773b9943a73b032701c", + "blockNumber": "0x4007e8d", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0x227fd53d", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315698, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/43114/run-latest.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/43114/run-latest.json new file mode 100644 index 0000000..623b891 --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/43114/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x1b7218f848d8db5f22592feee88f418d5c36f5adad0b7ee6f7ddfb0c22d1624e", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x47", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1cf2db", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1b7218f848d8db5f22592feee88f418d5c36f5adad0b7ee6f7ddfb0c22d1624e", + "transactionIndex": "0x7", + "blockHash": "0x97cf57e425562b5f50b4592fce197a1eb64c538bc395d773b9943a73b032701c", + "blockNumber": "0x4007e8d", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0x227fd53d", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315698, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/56/run-1755315219.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/56/run-1755315219.json new file mode 100644 index 0000000..925ffa8 --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/56/run-1755315219.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x81b404e668a27c88378b11dc18ec5de992ca5e537023c7e9195096b0a6ab96df", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xab", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b6524", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x81b404e668a27c88378b11dc18ec5de992ca5e537023c7e9195096b0a6ab96df", + "transactionIndex": "0x34", + "blockHash": "0x36714ee932e7b5624d698ad9b499d174902bf2529a8ca8e0ccce99121bca5d38", + "blockNumber": "0x37149be", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315219, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/56/run-latest.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/56/run-latest.json new file mode 100644 index 0000000..925ffa8 --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/56/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x81b404e668a27c88378b11dc18ec5de992ca5e537023c7e9195096b0a6ab96df", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xab", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x8b6524", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0x81b404e668a27c88378b11dc18ec5de992ca5e537023c7e9195096b0a6ab96df", + "transactionIndex": "0x34", + "blockHash": "0x36714ee932e7b5624d698ad9b499d174902bf2529a8ca8e0ccce99121bca5d38", + "blockNumber": "0x37149be", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315219, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/8453/run-1755223059.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/8453/run-1755223059.json new file mode 100644 index 0000000..07d4b1b --- /dev/null +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/8453/run-1755223059.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x41d9e163f6a1f5f3a23a6954411886b00cfeeed371d82325a85347d7dff9e792", + "transactionType": "CREATE2", + "contractName": "UserOpECDSAVerifier", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x830b1", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x45", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x74ab48", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x41d9e163f6a1f5f3a23a6954411886b00cfeeed371d82325a85347d7dff9e792", + "transactionIndex": "0x37", + "blockHash": "0x06de770bfbda689df10c56527c8eb7bb64d275eb8b391a0040a95dced95ea70f", + "blockNumber": "0x20a1b8d", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0x19dffa", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x40f06545c", + "l1GasPrice": "0x1c82761d", + "l1GasUsed": "0x3ebe" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755223059, + "chain": 8453, + "commit": "2d9be2e" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpECDSAVerifier.s.sol/8453/run-latest.json b/broadcast/DeployUserOpECDSAVerifier.s.sol/8453/run-latest.json index ed05df9..07d4b1b 100644 --- a/broadcast/DeployUserOpECDSAVerifier.s.sol/8453/run-latest.json +++ b/broadcast/DeployUserOpECDSAVerifier.s.sol/8453/run-latest.json @@ -1,21 +1,21 @@ { "transactions": [ { - "hash": "0xabe7cc4158b401ee6d8379c33c15cf9eb4728ff2e54a1faf16489fb39b31f523", + "hash": "0x41d9e163f6a1f5f3a23a6954411886b00cfeeed371d82325a85347d7dff9e792", "transactionType": "CREATE2", "contractName": "UserOpECDSAVerifier", - "contractAddress": "0xf5bc4db1cdedf1addd0d6543ba669837d5d0f3b3", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", "function": null, "arguments": [ - "0x18c90BdFc5667D11605ebde82E5E9CDC4D789363" + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" ], "transaction": { "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0x86d14", + "gas": "0x830b1", "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b506040516106bf3803806106bf833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161063c6100835f395f81816063015260c3015261063c5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102d7565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461014e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f76657269666965723a206e6f742066726f6d204b657973746f72650000000000604482015260640160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505082519293505050604110156101a7575f61019e86880188610478565b61010001519150505b6101b187826101ed565b73ffffffffffffffffffffffffffffffffffffffff166101d184866105a1565b60601c146101e05760016101e2565b5f5b979650505050505050565b5f6040518251604081146102095760418114610243575061027e565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610256565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d61028b575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126102a2575f5ffd5b50813567ffffffffffffffff8111156102b9575f5ffd5b6020830191508360208285010111156102d0575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102eb575f5ffd5b85359450602086013567ffffffffffffffff811115610308575f5ffd5b61031488828901610292565b909550935050604086013567ffffffffffffffff811115610333575f5ffd5b61033f88828901610292565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156103a1576103a1610350565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146103ca575f5ffd5b919050565b5f82601f8301126103de575f5ffd5b813567ffffffffffffffff8111156103f8576103f8610350565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561044557610445610350565b60405281815283820160200185101561045c575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610488575f5ffd5b813567ffffffffffffffff81111561049e575f5ffd5b820161012081850312156104b0575f5ffd5b6104b861037d565b6104c1826103a7565b815260208281013590820152604082013567ffffffffffffffff8111156104e6575f5ffd5b6104f2868285016103cf565b604083015250606082013567ffffffffffffffff811115610511575f5ffd5b61051d868285016103cf565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff81111561055a575f5ffd5b610566868285016103cf565b60e08301525061010082013567ffffffffffffffff811115610586575f5ffd5b610592868285016103cf565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff000000000000000000000000811690601484101561028b577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea2646970667358221220083dc813a37b0e8f7e38206c2207077f4a26a284ad7043687db5d6116879350364736f6c634300081c003300000000000000000000000018c90bdfc5667d11605ebde82e5e9cdc4d789363", - "nonce": "0x3e", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b5060405161068b38038061068b833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516106086100835f395f81816063015260c301526106085ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046102a3565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250508251929350505060411015610173575f61016a86880188610444565b61010001519150505b61017d87826101b9565b73ffffffffffffffffffffffffffffffffffffffff1661019d848661056d565b60601c146101ac5760016101ae565b5f5b979650505050505050565b5f6040518251604081146101d5576041811461020f575061024a565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610222565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610257575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f84011261026e575f5ffd5b50813567ffffffffffffffff811115610285575f5ffd5b60208301915083602082850101111561029c575f5ffd5b9250929050565b5f5f5f5f5f606086880312156102b7575f5ffd5b85359450602086013567ffffffffffffffff8111156102d4575f5ffd5b6102e08882890161025e565b909550935050604086013567ffffffffffffffff8111156102ff575f5ffd5b61030b8882890161025e565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff8111828210171561036d5761036d61031c565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610396575f5ffd5b919050565b5f82601f8301126103aa575f5ffd5b813567ffffffffffffffff8111156103c4576103c461031c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff811182821017156104115761041161031c565b604052818152838201602001851015610428575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215610454575f5ffd5b813567ffffffffffffffff81111561046a575f5ffd5b8201610120818503121561047c575f5ffd5b610484610349565b61048d82610373565b815260208281013590820152604082013567ffffffffffffffff8111156104b2575f5ffd5b6104be8682850161039b565b604083015250606082013567ffffffffffffffff8111156104dd575f5ffd5b6104e98682850161039b565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610526575f5ffd5b6105328682850161039b565b60e08301525061010082013567ffffffffffffffff811115610552575f5ffd5b61055e8682850161039b565b61010083015250949350505050565b80357fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008116906014841015610257577fffffffffffffffffffffffffffffffffffffffff000000000000000000000000808560140360031b1b8216169150509291505056fea264697066735822122033e031567a64bdb417aa2298e65c2179a0f003866d87deddfc6edc6cff3163ed64736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x45", "chainId": "0x2105" }, "additionalContracts": [], @@ -25,31 +25,31 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x1e8ff69", + "cumulativeGasUsed": "0x74ab48", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xabe7cc4158b401ee6d8379c33c15cf9eb4728ff2e54a1faf16489fb39b31f523", - "transactionIndex": "0x88", - "blockHash": "0xc71877c922c8b864a92dd1ddd8ecad0b197d9260b22be3a3fbb2922bcae5eb19", - "blockNumber": "0x1e7f707", - "gasUsed": "0x619b0", - "effectiveGasPrice": "0x24e75c", + "transactionHash": "0x41d9e163f6a1f5f3a23a6954411886b00cfeeed371d82325a85347d7dff9e792", + "transactionIndex": "0x37", + "blockHash": "0x06de770bfbda689df10c56527c8eb7bb64d275eb8b391a0040a95dced95ea70f", + "blockNumber": "0x20a1b8d", + "gasUsed": "0x5edf8", + "effectiveGasPrice": "0x19dffa", "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xf5bc4db1cdedf1addd0d6543ba669837d5d0f3b3", + "contractAddress": "0x294cd71960eed5aea11dbbfa5d3c8ea4a1c1ce0f", "l1BaseFeeScalar": "0x8dd", "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0x101c12", - "l1Fee": "0xcdfa573fa", - "l1GasPrice": "0x57054687", - "l1GasUsed": "0x4133" + "l1Fee": "0x40f06545c", + "l1GasPrice": "0x1c82761d", + "l1GasUsed": "0x3ebe" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1750747915, + "timestamp": 1755223059, "chain": 8453, - "commit": "9647c03" + "commit": "2d9be2e" } \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/1/run-1755316854.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/1/run-1755316854.json new file mode 100644 index 0000000..e12dcb1 --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/1/run-1755316854.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xd46f5ce4339ed981e4936249c8ccd9e8320c3e2134e34063015730c2a1576b5d", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7d", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb2978b", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd46f5ce4339ed981e4936249c8ccd9e8320c3e2134e34063015730c2a1576b5d", + "transactionIndex": "0x5e", + "blockHash": "0xebb51f8999a92bce9fa2846d332235dd06dcd95f485a17080c2523f61146bc69", + "blockNumber": "0x16141e5", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x10b31a94", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316854, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/1/run-latest.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/1/run-latest.json new file mode 100644 index 0000000..e12dcb1 --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/1/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xd46f5ce4339ed981e4936249c8ccd9e8320c3e2134e34063015730c2a1576b5d", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7d", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb2978b", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd46f5ce4339ed981e4936249c8ccd9e8320c3e2134e34063015730c2a1576b5d", + "transactionIndex": "0x5e", + "blockHash": "0xebb51f8999a92bce9fa2846d332235dd06dcd95f485a17080c2523f61146bc69", + "blockNumber": "0x16141e5", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x10b31a94", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316854, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/10/run-1755313869.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/10/run-1755313869.json new file mode 100644 index 0000000..d0c3590 --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/10/run-1755313869.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x0bb40f095b92fba76d05ec485d963a65c0c6b55820b47304de7a8d79b58581b2", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x28", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xa301ad", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0bb40f095b92fba76d05ec485d963a65c0c6b55820b47304de7a8d79b58581b2", + "transactionIndex": "0xf", + "blockHash": "0xb14f2c7b3af51fda6caa68577f5f625cdf12bba751b3c7139158bf4476a4c75d", + "blockNumber": "0x8560e81", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x171c", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x9f64c5811", + "l1GasPrice": "0x1067d1f8", + "l1GasUsed": "0x742c" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313869, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/10/run-latest.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/10/run-latest.json new file mode 100644 index 0000000..d0c3590 --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/10/run-latest.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x0bb40f095b92fba76d05ec485d963a65c0c6b55820b47304de7a8d79b58581b2", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x28", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xa301ad", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x0bb40f095b92fba76d05ec485d963a65c0c6b55820b47304de7a8d79b58581b2", + "transactionIndex": "0xf", + "blockHash": "0xb14f2c7b3af51fda6caa68577f5f625cdf12bba751b3c7139158bf4476a4c75d", + "blockNumber": "0x8560e81", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x171c", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x9f64c5811", + "l1GasPrice": "0x1067d1f8", + "l1GasUsed": "0x742c" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313869, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/137/run-1755314670.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/137/run-1755314670.json new file mode 100644 index 0000000..b597d48 --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/137/run-1755314670.json @@ -0,0 +1,66 @@ +{ + "transactions": [ + { + "hash": "0x04c026f7fdcd50b648d838009b7a5a039d56749df835849d56557f3376189616", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4e", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb9596d", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x0000000000000000000000009ead03f7136fc6b4bdb0780b00a1c14ae5a8b6d0" + ], + "data": "0x000000000000000000000000000000000000000000000000004a64afb443533500000000000000000000000000000000000000000000000b874ea595b4a48421000000000000000000000000000000000000000000000f9d3f626cee941bde3d00000000000000000000000000000000000000000000000b870440e6006130ec000000000000000000000000000000000000000000000f9d3facd19e485f3172", + "blockHash": "0xa45866ab9cd114d33f471244df45ae4ca2b83af4bff9f3e739438757d0aea348", + "blockNumber": "0x47c61ad", + "transactionHash": "0x04c026f7fdcd50b648d838009b7a5a039d56749df835849d56557f3376189616", + "transactionIndex": "0x3a", + "logIndex": "0x1b7", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800010008000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000040000000040000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000084000000000000000000001000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x04c026f7fdcd50b648d838009b7a5a039d56749df835849d56557f3376189616", + "transactionIndex": "0x3a", + "blockHash": "0xa45866ab9cd114d33f471244df45ae4ca2b83af4bff9f3e739438757d0aea348", + "blockNumber": "0x47c61ad", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x60db88532", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314670, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/137/run-latest.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/137/run-latest.json new file mode 100644 index 0000000..b597d48 --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/137/run-latest.json @@ -0,0 +1,66 @@ +{ + "transactions": [ + { + "hash": "0x04c026f7fdcd50b648d838009b7a5a039d56749df835849d56557f3376189616", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4e", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb9596d", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x0000000000000000000000009ead03f7136fc6b4bdb0780b00a1c14ae5a8b6d0" + ], + "data": "0x000000000000000000000000000000000000000000000000004a64afb443533500000000000000000000000000000000000000000000000b874ea595b4a48421000000000000000000000000000000000000000000000f9d3f626cee941bde3d00000000000000000000000000000000000000000000000b870440e6006130ec000000000000000000000000000000000000000000000f9d3facd19e485f3172", + "blockHash": "0xa45866ab9cd114d33f471244df45ae4ca2b83af4bff9f3e739438757d0aea348", + "blockNumber": "0x47c61ad", + "transactionHash": "0x04c026f7fdcd50b648d838009b7a5a039d56749df835849d56557f3376189616", + "transactionIndex": "0x3a", + "logIndex": "0x1b7", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800010008000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000040000000040000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000084000000000000000000001000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x04c026f7fdcd50b648d838009b7a5a039d56749df835849d56557f3376189616", + "transactionIndex": "0x3a", + "blockHash": "0xa45866ab9cd114d33f471244df45ae4ca2b83af4bff9f3e739438757d0aea348", + "blockNumber": "0x47c61ad", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x60db88532", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314670, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/42161/run-1755312782.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/42161/run-1755312782.json new file mode 100644 index 0000000..12c339a --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/42161/run-1755312782.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xd26e9ebc42f34bb7999dfa4f0dbc3b64c4d9af56301ba465fc5d400d3e66e752", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1074ed", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x47", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x19c76c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd26e9ebc42f34bb7999dfa4f0dbc3b64c4d9af56301ba465fc5d400d3e66e752", + "transactionIndex": "0x8", + "blockHash": "0x1333d884d41a13e210f72211e66f9aa5789ac63553085fb267ea85315d9c63dc", + "blockNumber": "0x15fccb31", + "gasUsed": "0xc62e9", + "effectiveGasPrice": "0xbf8f10", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "gasUsedForL1": "0x18e6", + "l1BlockNumber": "0x1614093", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312782, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/42161/run-latest.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/42161/run-latest.json new file mode 100644 index 0000000..12c339a --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/42161/run-latest.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xd26e9ebc42f34bb7999dfa4f0dbc3b64c4d9af56301ba465fc5d400d3e66e752", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x1074ed", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x47", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x19c76c", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd26e9ebc42f34bb7999dfa4f0dbc3b64c4d9af56301ba465fc5d400d3e66e752", + "transactionIndex": "0x8", + "blockHash": "0x1333d884d41a13e210f72211e66f9aa5789ac63553085fb267ea85315d9c63dc", + "blockNumber": "0x15fccb31", + "gasUsed": "0xc62e9", + "effectiveGasPrice": "0xbf8f10", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "gasUsedForL1": "0x18e6", + "l1BlockNumber": "0x1614093", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312782, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/43114/run-1755315750.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/43114/run-1755315750.json new file mode 100644 index 0000000..4e98f8d --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/43114/run-1755315750.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x4cdb00114086924607a5ee409e481407555c3dcaf17ed394d501a9cb4d27575c", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x48", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x505500", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4cdb00114086924607a5ee409e481407555c3dcaf17ed394d501a9cb4d27575c", + "transactionIndex": "0x32", + "blockHash": "0x50765a7301ff97cbb280c534d1e1415e2a1146ea30f74b2095900ed5fc72108f", + "blockNumber": "0x4007ea4", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x21bfda9c", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315750, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/43114/run-latest.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/43114/run-latest.json new file mode 100644 index 0000000..4e98f8d --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/43114/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x4cdb00114086924607a5ee409e481407555c3dcaf17ed394d501a9cb4d27575c", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x48", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x505500", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x4cdb00114086924607a5ee409e481407555c3dcaf17ed394d501a9cb4d27575c", + "transactionIndex": "0x32", + "blockHash": "0x50765a7301ff97cbb280c534d1e1415e2a1146ea30f74b2095900ed5fc72108f", + "blockNumber": "0x4007ea4", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x21bfda9c", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315750, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/56/run-1755315246.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/56/run-1755315246.json new file mode 100644 index 0000000..e43757f --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/56/run-1755315246.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xf748f604ed8c599bdc03b9710e626f38f3094d1c9e73506d9ff258f4200f431e", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xac", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x664cbc", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xf748f604ed8c599bdc03b9710e626f38f3094d1c9e73506d9ff258f4200f431e", + "transactionIndex": "0x1d", + "blockHash": "0xd633fee08a73ae78db3d2f6acd98885fed3dd2f4fba5fcc993e081b0afd7c12b", + "blockNumber": "0x37149f6", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315246, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/56/run-latest.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/56/run-latest.json new file mode 100644 index 0000000..e43757f --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/56/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xf748f604ed8c599bdc03b9710e626f38f3094d1c9e73506d9ff258f4200f431e", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xac", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x664cbc", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xf748f604ed8c599bdc03b9710e626f38f3094d1c9e73506d9ff258f4200f431e", + "transactionIndex": "0x1d", + "blockHash": "0xd633fee08a73ae78db3d2f6acd98885fed3dd2f4fba5fcc993e081b0afd7c12b", + "blockNumber": "0x37149f6", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315246, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/8453/run-1755223113.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/8453/run-1755223113.json new file mode 100644 index 0000000..15a3c24 --- /dev/null +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/8453/run-1755223113.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x7691c67cb425233815f5b7b779e8fb2181e5fe29db1ec522daf87eeff6221027", + "transactionType": "CREATE2", + "contractName": "UserOpMultiSigVerifier", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x11f90a", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x46", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x2e46a90", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7691c67cb425233815f5b7b779e8fb2181e5fe29db1ec522daf87eeff6221027", + "transactionIndex": "0x84", + "blockHash": "0x071863b4c236d5d4793edb0a3e434b2d2983ff16dbe395fb14afed8a498e8b41", + "blockNumber": "0x20a1ba7", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0xf35fa", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x821d3aa7d", + "l1GasPrice": "0x1ecb8a24", + "l1GasUsed": "0x7461" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755223113, + "chain": 8453, + "commit": "2d9be2e" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpMultiSigVerifier.s.sol/8453/run-latest.json b/broadcast/DeployUserOpMultiSigVerifier.s.sol/8453/run-latest.json index 0a8e829..15a3c24 100644 --- a/broadcast/DeployUserOpMultiSigVerifier.s.sol/8453/run-latest.json +++ b/broadcast/DeployUserOpMultiSigVerifier.s.sol/8453/run-latest.json @@ -1,21 +1,21 @@ { "transactions": [ { - "hash": "0xf9a8914da21130ac1d88537ca799c9178ff85c665ba6220c33d232a2db3e9497", + "hash": "0x7691c67cb425233815f5b7b779e8fb2181e5fe29db1ec522daf87eeff6221027", "transactionType": "CREATE2", "contractName": "UserOpMultiSigVerifier", - "contractAddress": "0xc498f1f881bdd8a2feb6aabf166cf6e08cf4e559", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", "function": null, "arguments": [ - "0x18c90BdFc5667D11605ebde82E5E9CDC4D789363" + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" ], "transaction": { "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0x1032c9", + "gas": "0x11f90a", "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610ca8380380610ca8833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c246100845f395f818160c601526101260152610c245ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b6100566100513660046104d5565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f76657269666965723a206e6f742066726f6d204b657973746f72650000000000604482015260640160405180910390fd5b5f806101bf84860186610673565b909250905060607fff0000000000000000000000000000000000000000000000000000000000000088885f816101f7576101f7610725565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361024957610235876001818b610752565b810190610242919061080b565b9050610275565b5f610256888a018a61092d565b90508061010001518060200190518101906102719190610a56565b9150505b81515f908190819067ffffffffffffffff8111156102955761029561055f565b6040519080825280602002602001820160405280156102be578160200160208202803683370190505b5090505f5b84518110156103c3575f8582815181106102df576102df610725565b6020026020010151905082815f015160ff168151811061030157610301610725565b602002602001015115801561036d575061031f8e82602001516103eb565b73ffffffffffffffffffffffffffffffffffffffff1687825f015160ff168151811061034d5761034d610725565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b610382578361037b81610bab565b945061038f565b8461038c81610bab565b95505b50600183825f015160ff16815181106103aa576103aa610725565b91151560209283029190910190910152506001016102c3565b508560ff168360ff1610156103d95760016103db565b5f5b9c9b505050505050505050505050565b5f6040518251604081146104075760418114610441575061047c565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610454565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610489575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126104a0575f5ffd5b50813567ffffffffffffffff8111156104b7575f5ffd5b6020830191508360208285010111156104ce575f5ffd5b9250929050565b5f5f5f5f5f606086880312156104e9575f5ffd5b85359450602086013567ffffffffffffffff811115610506575f5ffd5b61051288828901610490565b909550935050604086013567ffffffffffffffff811115610531575f5ffd5b61053d88828901610490565b969995985093965092949392505050565b60ff8116811461055c575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff811182821017156105af576105af61055f565b60405290565b604051610120810167ffffffffffffffff811182821017156105af576105af61055f565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156106205761062061055f565b604052919050565b5f67ffffffffffffffff8211156106415761064161055f565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff8116811461066e575f5ffd5b919050565b5f5f60408385031215610684575f5ffd5b823561068f8161054e565b9150602083013567ffffffffffffffff8111156106aa575f5ffd5b8301601f810185136106ba575f5ffd5b80356106cd6106c882610628565b6105d9565b8082825260208201915060208360051b8501019250878311156106ee575f5ffd5b6020840193505b82841015610717576107068461064b565b8252602093840193909101906106f5565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f85851115610760575f5ffd5b8386111561076c575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156107925761079261055f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126107cd575f5ffd5b81356107db6106c882610779565b8181528460208386010111156107ef575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561081b575f5ffd5b813567ffffffffffffffff811115610831575f5ffd5b8201601f81018413610841575f5ffd5b803561084f6106c882610628565b8082825260208201915060208360051b850101925086831115610870575f5ffd5b602084015b8381101561092257803567ffffffffffffffff811115610893575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00112156108c6575f5ffd5b6108ce61058c565b60208201356108dc8161054e565b8152604082013567ffffffffffffffff8111156108f7575f5ffd5b6109068b6020838601016107be565b6020830152508085525050602083019250602081019050610875565b509695505050505050565b5f6020828403121561093d575f5ffd5b813567ffffffffffffffff811115610953575f5ffd5b82016101208185031215610965575f5ffd5b61096d6105b5565b6109768261064b565b815260208281013590820152604082013567ffffffffffffffff81111561099b575f5ffd5b6109a7868285016107be565b604083015250606082013567ffffffffffffffff8111156109c6575f5ffd5b6109d2868285016107be565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610a0f575f5ffd5b610a1b868285016107be565b60e08301525061010082013567ffffffffffffffff811115610a3b575f5ffd5b610a47868285016107be565b61010083015250949350505050565b5f60208284031215610a66575f5ffd5b815167ffffffffffffffff811115610a7c575f5ffd5b8201601f81018413610a8c575f5ffd5b8051610a9a6106c882610628565b8082825260208201915060208360051b850101925086831115610abb575f5ffd5b602084015b8381101561092257805167ffffffffffffffff811115610ade575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610b11575f5ffd5b610b1961058c565b6020820151610b278161054e565b8152604082015167ffffffffffffffff811115610b42575f5ffd5b60208184010192505089601f830112610b59575f5ffd5b8151610b676106c882610779565b8181528b6020838601011115610b7b575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610ac0565b5f60ff821660ff8103610be5577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6001019291505056fea2646970667358221220622b97a25e7e72cfddac914768a1f27da9ff353c46dcc6ed3a7e05c161fbda6c64736f6c634300081c003300000000000000000000000018c90bdfc5667d11605ebde82e5e9cdc4d789363", - "nonce": "0x3f", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610e1d380380610e1d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610d996100845f395f818160c601526101260152610d995ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b610056610051366004610629565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8061018b848601866107c7565b915091505f8260ff16116101cb576040517f89a9ce1900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160ff168151101580156101e15750805160ff10155b610217576040517f821fffa400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61022081610484565b60607fff0000000000000000000000000000000000000000000000000000000000000088885f8161025357610253610879565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916036102a557610291876001818b6108a6565b81019061029e919061095f565b90506102d1565b5f6102b2888a018a610a81565b90508061010001518060200190518101906102cd9190610baa565b9150505b805160ff81111561030e576040517f97b31d7400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82515f908190819067ffffffffffffffff81111561032e5761032e6106b3565b604051908082528060200260200182016040528015610357578160200160208202803683370190505b5090505f5b8481101561045b575f86828151811061037757610377610879565b6020026020010151905082815f015160ff168151811061039957610399610879565b602002602001015115801561040557506103b78f826020015161053f565b73ffffffffffffffffffffffffffffffffffffffff1688825f015160ff16815181106103e5576103e5610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16145b61041a578361041381610d2c565b9450610427565b8461042481610d2c565b95505b50600183825f015160ff168151811061044257610442610879565b911515602092830291909101909101525060010161035c565b508660ff168360ff161015610471576001610473565b5f5b9d9c50505050505050505050505050565b805160015b8181101561053a578261049d600183610d4a565b815181106104ad576104ad610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168382815181106104dd576104dd610879565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1611610532576040517f895e24e300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600101610489565b505050565b5f60405182516040811461055b576041811461059557506105d0565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff166060526105a8565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6105dd575b638baa579f5f526004601cfd5b5092915050565b5f5f83601f8401126105f4575f5ffd5b50813567ffffffffffffffff81111561060b575f5ffd5b602083019150836020828501011115610622575f5ffd5b9250929050565b5f5f5f5f5f6060868803121561063d575f5ffd5b85359450602086013567ffffffffffffffff81111561065a575f5ffd5b610666888289016105e4565b909550935050604086013567ffffffffffffffff811115610685575f5ffd5b610691888289016105e4565b969995985093965092949392505050565b60ff811681146106b0575f5ffd5b50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715610703576107036106b3565b60405290565b604051610120810167ffffffffffffffff81118282101715610703576107036106b3565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610774576107746106b3565b604052919050565b5f67ffffffffffffffff821115610795576107956106b3565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff811681146107c2575f5ffd5b919050565b5f5f604083850312156107d8575f5ffd5b82356107e3816106a2565b9150602083013567ffffffffffffffff8111156107fe575f5ffd5b8301601f8101851361080e575f5ffd5b803561082161081c8261077c565b61072d565b8082825260208201915060208360051b850101925087831115610842575f5ffd5b6020840193505b8284101561086b5761085a8461079f565b825260209384019390910190610849565b809450505050509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f858511156108b4575f5ffd5b838611156108c0575f5ffd5b5050820193919092039150565b5f67ffffffffffffffff8211156108e6576108e66106b3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610921575f5ffd5b813561092f61081c826108cd565b818152846020838601011115610943575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561096f575f5ffd5b813567ffffffffffffffff811115610985575f5ffd5b8201601f81018413610995575f5ffd5b80356109a361081c8261077c565b8082825260208201915060208360051b8501019250868311156109c4575f5ffd5b602084015b83811015610a7657803567ffffffffffffffff8111156109e7575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610a1a575f5ffd5b610a226106e0565b6020820135610a30816106a2565b8152604082013567ffffffffffffffff811115610a4b575f5ffd5b610a5a8b602083860101610912565b60208301525080855250506020830192506020810190506109c9565b509695505050505050565b5f60208284031215610a91575f5ffd5b813567ffffffffffffffff811115610aa7575f5ffd5b82016101208185031215610ab9575f5ffd5b610ac1610709565b610aca8261079f565b815260208281013590820152604082013567ffffffffffffffff811115610aef575f5ffd5b610afb86828501610912565b604083015250606082013567ffffffffffffffff811115610b1a575f5ffd5b610b2686828501610912565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b63575f5ffd5b610b6f86828501610912565b60e08301525061010082013567ffffffffffffffff811115610b8f575f5ffd5b610b9b86828501610912565b61010083015250949350505050565b5f60208284031215610bba575f5ffd5b815167ffffffffffffffff811115610bd0575f5ffd5b8201601f81018413610be0575f5ffd5b8051610bee61081c8261077c565b8082825260208201915060208360051b850101925086831115610c0f575f5ffd5b602084015b83811015610a7657805167ffffffffffffffff811115610c32575f5ffd5b85016040818a037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0011215610c65575f5ffd5b610c6d6106e0565b6020820151610c7b816106a2565b8152604082015167ffffffffffffffff811115610c96575f5ffd5b60208184010192505089601f830112610cad575f5ffd5b8151610cbb61081c826108cd565b8181528b6020838601011115610ccf575f5ffd5b8160208501602083015e5f6020838301015280602084015250508085525050602083019250602081019050610c14565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f60ff821660ff8103610d4157610d41610cff565b60010192915050565b81810381811115610d5d57610d5d610cff565b9291505056fea2646970667358221220fc59977533c3fadae082dc0ace58d8fbb324fec4d41a9f59fb18d447ca38bae764736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x46", "chainId": "0x2105" }, "additionalContracts": [], @@ -25,31 +25,31 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x313b08f", + "cumulativeGasUsed": "0x2e46a90", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xf9a8914da21130ac1d88537ca799c9178ff85c665ba6220c33d232a2db3e9497", - "transactionIndex": "0x220", - "blockHash": "0x23f5b2b036f08a2fc1777595f57c4febaef2a5ad14f0a1182cea35fd75320158", - "blockNumber": "0x1e7f75e", - "gasUsed": "0xb1369", - "effectiveGasPrice": "0x24c753", + "transactionHash": "0x7691c67cb425233815f5b7b779e8fb2181e5fe29db1ec522daf87eeff6221027", + "transactionIndex": "0x84", + "blockHash": "0x071863b4c236d5d4793edb0a3e434b2d2983ff16dbe395fb14afed8a498e8b41", + "blockNumber": "0x20a1ba7", + "gasUsed": "0xc4a03", + "effectiveGasPrice": "0xf35fa", "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xc498f1f881bdd8a2feb6aabf166cf6e08cf4e559", + "contractAddress": "0x1dbade1e34706f83598ae9acfc63b7f4f928146e", "l1BaseFeeScalar": "0x8dd", "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0x101c12", - "l1Fee": "0x1bed83a02f", - "l1GasPrice": "0x71e49386", - "l1GasUsed": "0x6c11" + "l1Fee": "0x821d3aa7d", + "l1GasPrice": "0x1ecb8a24", + "l1GasUsed": "0x7461" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1750748089, + "timestamp": 1755223113, "chain": 8453, - "commit": "9647c03" + "commit": "2d9be2e" } \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-1755316996.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-1755316996.json new file mode 100644 index 0000000..3d1f673 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-1755316996.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xdde57cacd78bef3bfcbf33301b470002d1b4c8317051123a5e0377af80e4159b", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7f", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb05442", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdde57cacd78bef3bfcbf33301b470002d1b4c8317051123a5e0377af80e4159b", + "transactionIndex": "0x6c", + "blockHash": "0x1499c51da1bd94082e47dcb92b5c9ef3b516d77efcda4f23555740c6c0133694", + "blockNumber": "0x16141f1", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0xedae383", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316996, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-1755317024.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-1755317024.json new file mode 100644 index 0000000..1800368 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-1755317024.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xdde57cacd78bef3bfcbf33301b470002d1b4c8317051123a5e0377af80e4159b", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7f", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb05442", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdde57cacd78bef3bfcbf33301b470002d1b4c8317051123a5e0377af80e4159b", + "transactionIndex": "0x6c", + "blockHash": "0x1499c51da1bd94082e47dcb92b5c9ef3b516d77efcda4f23555740c6c0133694", + "blockNumber": "0x16141f1", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0xedae383", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755317024, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-latest.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-latest.json new file mode 100644 index 0000000..1800368 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/1/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xdde57cacd78bef3bfcbf33301b470002d1b4c8317051123a5e0377af80e4159b", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7f", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb05442", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdde57cacd78bef3bfcbf33301b470002d1b4c8317051123a5e0377af80e4159b", + "transactionIndex": "0x6c", + "blockHash": "0x1499c51da1bd94082e47dcb92b5c9ef3b516d77efcda4f23555740c6c0133694", + "blockNumber": "0x16141f1", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0xedae383", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755317024, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/10/run-1755313964.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/10/run-1755313964.json new file mode 100644 index 0000000..c6cca03 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/10/run-1755313964.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x7549750feac90e1fa274f20d6424c3845276a8a49032b2b4285870b1007c8bcb", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x2a", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x7ad2a8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7549750feac90e1fa274f20d6424c3845276a8a49032b2b4285870b1007c8bcb", + "transactionIndex": "0x10", + "blockHash": "0x14a95f1783fb71082765acca450b24b01f5bf9c7268de9f581c5c1f6b69240d4", + "blockNumber": "0x8560eb0", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0xd352", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x9f08339cb", + "l1GasPrice": "0xf644486", + "l1GasUsed": "0x7b8b" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313964, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/10/run-latest.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/10/run-latest.json new file mode 100644 index 0000000..c6cca03 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/10/run-latest.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x7549750feac90e1fa274f20d6424c3845276a8a49032b2b4285870b1007c8bcb", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x2a", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x7ad2a8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7549750feac90e1fa274f20d6424c3845276a8a49032b2b4285870b1007c8bcb", + "transactionIndex": "0x10", + "blockHash": "0x14a95f1783fb71082765acca450b24b01f5bf9c7268de9f581c5c1f6b69240d4", + "blockNumber": "0x8560eb0", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0xd352", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x9f08339cb", + "l1GasPrice": "0xf644486", + "l1GasUsed": "0x7b8b" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313964, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/137/run-1755314798.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/137/run-1755314798.json new file mode 100644 index 0000000..7c10b43 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/137/run-1755314798.json @@ -0,0 +1,66 @@ +{ + "transactions": [ + { + "hash": "0xb4e98ae77927f7c89cf3d05f42b908ffd55f2ca80c5f80d5ee5555a83cd7a0cb", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x50", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x961ad5", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x00000000000000000000000067b94473d81d0cd00849d563c94d0432ac988b49" + ], + "data": "0x0000000000000000000000000000000000000000000000000044c1b0c1897e7f00000000000000000000000000000000000000000000000b86d0ef754e8ac53b000000000000000000000000000000000000000000000d2ea0c9cedc84b8d38500000000000000000000000000000000000000000000000b868c2dc48d0146bc000000000000000000000000000000000000000000000d2ea10e908d46425204", + "blockHash": "0x460651b5de1b689dfc9ec23377fc94e916484be5e3ef7b3c6eb48cf5ffa752f3", + "blockNumber": "0x47c61e9", + "transactionHash": "0xb4e98ae77927f7c89cf3d05f42b908ffd55f2ca80c5f80d5ee5555a83cd7a0cb", + "transactionIndex": "0x3f", + "logIndex": "0x1a0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800010008000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000084000800000000000000001000000008000000000000000000000100000000000000000020000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0xb4e98ae77927f7c89cf3d05f42b908ffd55f2ca80c5f80d5ee5555a83cd7a0cb", + "transactionIndex": "0x3f", + "blockHash": "0x460651b5de1b689dfc9ec23377fc94e916484be5e3ef7b3c6eb48cf5ffa752f3", + "blockNumber": "0x47c61e9", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0x60fa86d94", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314798, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/137/run-latest.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/137/run-latest.json new file mode 100644 index 0000000..7c10b43 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/137/run-latest.json @@ -0,0 +1,66 @@ +{ + "transactions": [ + { + "hash": "0xb4e98ae77927f7c89cf3d05f42b908ffd55f2ca80c5f80d5ee5555a83cd7a0cb", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x50", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x961ad5", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x00000000000000000000000067b94473d81d0cd00849d563c94d0432ac988b49" + ], + "data": "0x0000000000000000000000000000000000000000000000000044c1b0c1897e7f00000000000000000000000000000000000000000000000b86d0ef754e8ac53b000000000000000000000000000000000000000000000d2ea0c9cedc84b8d38500000000000000000000000000000000000000000000000b868c2dc48d0146bc000000000000000000000000000000000000000000000d2ea10e908d46425204", + "blockHash": "0x460651b5de1b689dfc9ec23377fc94e916484be5e3ef7b3c6eb48cf5ffa752f3", + "blockNumber": "0x47c61e9", + "transactionHash": "0xb4e98ae77927f7c89cf3d05f42b908ffd55f2ca80c5f80d5ee5555a83cd7a0cb", + "transactionIndex": "0x3f", + "logIndex": "0x1a0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000800010008000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000084000800000000000000001000000008000000000000000000000100000000000000000020000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0xb4e98ae77927f7c89cf3d05f42b908ffd55f2ca80c5f80d5ee5555a83cd7a0cb", + "transactionIndex": "0x3f", + "blockHash": "0x460651b5de1b689dfc9ec23377fc94e916484be5e3ef7b3c6eb48cf5ffa752f3", + "blockNumber": "0x47c61e9", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0x60fa86d94", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314798, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/42161/run-1755312971.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/42161/run-1755312971.json new file mode 100644 index 0000000..c26cc8d --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/42161/run-1755312971.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xd23122c87826b9f3688df0c58560d1a1df6c1d1e6d85a3e81edcd27b93b70684", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xf39ed", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x49", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xff53e", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd23122c87826b9f3688df0c58560d1a1df6c1d1e6d85a3e81edcd27b93b70684", + "transactionIndex": "0x4", + "blockHash": "0xae94ae092c2ad66f31717ad552836762c5b0b415c170faff898e830719b11bf6", + "blockNumber": "0x15fccde8", + "gasUsed": "0xb79b7", + "effectiveGasPrice": "0x9bab90", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "gasUsedForL1": "0x21b4", + "l1BlockNumber": "0x16140a2", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312971, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/42161/run-latest.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/42161/run-latest.json new file mode 100644 index 0000000..c26cc8d --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/42161/run-latest.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xd23122c87826b9f3688df0c58560d1a1df6c1d1e6d85a3e81edcd27b93b70684", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xf39ed", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x49", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xff53e", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd23122c87826b9f3688df0c58560d1a1df6c1d1e6d85a3e81edcd27b93b70684", + "transactionIndex": "0x4", + "blockHash": "0xae94ae092c2ad66f31717ad552836762c5b0b415c170faff898e830719b11bf6", + "blockNumber": "0x15fccde8", + "gasUsed": "0xb79b7", + "effectiveGasPrice": "0x9bab90", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "gasUsedForL1": "0x21b4", + "l1BlockNumber": "0x16140a2", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312971, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-1755315837.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-1755315837.json new file mode 100644 index 0000000..e36c557 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-1755315837.json @@ -0,0 +1,34 @@ +{ + "transactions": [ + { + "hash": "0xf7b690183d11c996a9adac806e551cf763fb6a3796a0fd7bfe48cc6b322297c6", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4a", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [], + "libraries": [], + "pending": [ + "0xf7b690183d11c996a9adac806e551cf763fb6a3796a0fd7bfe48cc6b322297c6" + ], + "returns": {}, + "timestamp": 1755315837, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-1755316403.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-1755316403.json new file mode 100644 index 0000000..296b7c6 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-1755316403.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xf7b690183d11c996a9adac806e551cf763fb6a3796a0fd7bfe48cc6b322297c6", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4a", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x2f6440", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf7b690183d11c996a9adac806e551cf763fb6a3796a0fd7bfe48cc6b322297c6", + "transactionIndex": "0x11", + "blockHash": "0xedcf97a85fef69f99cf88cc269459b7c75d4f7545d57e34c0640cbf8310cb4d1", + "blockNumber": "0x4007eda", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0x227894db", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316403, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-latest.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-latest.json new file mode 100644 index 0000000..296b7c6 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/43114/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xf7b690183d11c996a9adac806e551cf763fb6a3796a0fd7bfe48cc6b322297c6", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4a", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x2f6440", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf7b690183d11c996a9adac806e551cf763fb6a3796a0fd7bfe48cc6b322297c6", + "transactionIndex": "0x11", + "blockHash": "0xedcf97a85fef69f99cf88cc269459b7c75d4f7545d57e34c0640cbf8310cb4d1", + "blockNumber": "0x4007eda", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0x227894db", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316403, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/56/run-1755315355.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/56/run-1755315355.json new file mode 100644 index 0000000..09cb7ea --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/56/run-1755315355.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xfe4325d41a453813a11f5090484785512ff22c9e89928a78a17e67d9c7cc40a0", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xae", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xec96d3", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xfe4325d41a453813a11f5090484785512ff22c9e89928a78a17e67d9c7cc40a0", + "transactionIndex": "0x4f", + "blockHash": "0x551fbc773fbaa1854d5df414aafb24c855e1e7af6432fc77cda08e662db957a7", + "blockNumber": "0x3714a71", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315355, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/56/run-latest.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/56/run-latest.json new file mode 100644 index 0000000..09cb7ea --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/56/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xfe4325d41a453813a11f5090484785512ff22c9e89928a78a17e67d9c7cc40a0", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xae", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xec96d3", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xfe4325d41a453813a11f5090484785512ff22c9e89928a78a17e67d9c7cc40a0", + "transactionIndex": "0x4f", + "blockHash": "0x551fbc773fbaa1854d5df414aafb24c855e1e7af6432fc77cda08e662db957a7", + "blockNumber": "0x3714a71", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315355, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/8453/run-1755223221.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/8453/run-1755223221.json new file mode 100644 index 0000000..6acbbae --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/8453/run-1755223221.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x1d88f61ba2eb6f097b9cb5e3826d7125f251cd9e5b7523006f447df79448a051", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnCosignVerifier", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0x10971d", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x48", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x780316", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x1d88f61ba2eb6f097b9cb5e3826d7125f251cd9e5b7523006f447df79448a051", + "transactionIndex": "0x15", + "blockHash": "0x93e58d8a65c97f518d7023ef4cb58581384d6b95c91b5e4cee411cf4ee430623", + "blockNumber": "0x20a1bdd", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0x16bf73", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x80434d6a2", + "l1GasPrice": "0x1c8c74c8", + "l1GasUsed": "0x7bc1" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755223221, + "chain": 8453, + "commit": "2d9be2e" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/8453/run-latest.json b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/8453/run-latest.json index d0c829a..6acbbae 100644 --- a/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/8453/run-latest.json +++ b/broadcast/DeployUserOpWebAuthnCosignVerifier.s.sol/8453/run-latest.json @@ -1,21 +1,21 @@ { "transactions": [ { - "hash": "0xc2191a27fb5c53c283b59bbae0818ad8acd42f6d2de836c422206882a696cbe4", + "hash": "0x1d88f61ba2eb6f097b9cb5e3826d7125f251cd9e5b7523006f447df79448a051", "transactionType": "CREATE2", "contractName": "UserOpWebAuthnCosignVerifier", - "contractAddress": "0x36674817e050a37da325d66b6dbd1a93063dc6b9", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", "function": null, "arguments": [ - "0x18c90BdFc5667D11605ebde82E5E9CDC4D789363" + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" ], "transaction": { "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0x10d72e", + "gas": "0x10971d", "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610d2f380380610d2f833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610cab6100845f395f818160c601526101260152610cab5ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b6100566100513660046107cf565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f76657269666965723a206e6f742066726f6d204b657973746f72650000000000604482015260640160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101e5576101e5610848565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19160361023a57610223866001818a610875565b81019061023091906109d9565b9092509050610269565b5f61024787890189610a72565b90508061010001518060200190518101906102629190610be8565b9093509150505b5f808061027887890189610c43565b9250925092505f61028885610320565b90505f6102958d88610408565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102f58e6040516020016102dc91815260200190565b60405160208183030381529060405260018588886104ad565b90508180156103015750805b61030c57600161030e565b5f5b9e9d5050505050505050505050505050565b6103556040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106104025760208301818101818251018281108260c0830111171561038157505050610402565b80815101925080602082015101818110838211178285108486111717156103ab5750505050610402565b82815160208301011183855160208701011117156103cc5750505050610402565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f604051825160408114610424576041811461045e5750610499565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16606052610471565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d6104a6575b638baa579f5f526004601cfd5b5092915050565b5f5f5f6104bc886001806105e4565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156105b857602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506105b857fe5b50505082156105d9576105d68287608001518860a0015188886106f1565b92505b505095945050505050565b6060835180156106e9576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061065f5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610755576d1ab2e8006fd8b71907bf06a5bdee3b6107555760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61075557fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f84011261079a575f5ffd5b50813567ffffffffffffffff8111156107b1575f5ffd5b6020830191508360208285010111156107c8575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107e3575f5ffd5b85359450602086013567ffffffffffffffff811115610800575f5ffd5b61080c8882890161078a565b909550935050604086013567ffffffffffffffff81111561082b575f5ffd5b6108378882890161078a565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f85851115610883575f5ffd5b8386111561088f575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108ed576108ed61089c565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561093a5761093a61089c565b604052919050565b5f67ffffffffffffffff82111561095b5761095b61089c565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610996575f5ffd5b81356109a96109a482610942565b6108f3565b8181528460208386010111156109bd575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109ea575f5ffd5b823567ffffffffffffffff811115610a00575f5ffd5b610a0c85828601610987565b925050602083013567ffffffffffffffff811115610a28575f5ffd5b610a3485828601610987565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a5f575f5ffd5b50565b8035610a6d81610a3e565b919050565b5f60208284031215610a82575f5ffd5b813567ffffffffffffffff811115610a98575f5ffd5b82016101208185031215610aaa575f5ffd5b610ab26108c9565b610abb82610a62565b815260208281013590820152604082013567ffffffffffffffff811115610ae0575f5ffd5b610aec86828501610987565b604083015250606082013567ffffffffffffffff811115610b0b575f5ffd5b610b1786828501610987565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b54575f5ffd5b610b6086828501610987565b60e08301525061010082013567ffffffffffffffff811115610b80575f5ffd5b610b8c86828501610987565b61010083015250949350505050565b5f82601f830112610baa575f5ffd5b8151610bb86109a482610942565b818152846020838601011115610bcc575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bf9575f5ffd5b825167ffffffffffffffff811115610c0f575f5ffd5b610c1b85828601610b9b565b925050602083015167ffffffffffffffff811115610c37575f5ffd5b610a3485828601610b9b565b5f5f5f60608486031215610c55575f5ffd5b8335610c6081610a3e565b9560208501359550604090940135939250505056fea264697066735822122030125e673d156149f1ec6e7f5c462f2f09bf9982dc2b80d49e21729afc0eaca064736f6c634300081c003300000000000000000000000018c90bdfc5667d11605ebde82e5e9cdc4d789363", - "nonce": "0x42", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610cfb380380610cfb833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610c776100845f395f818160c601526101260152610c775ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806304b073c51461004357806325a1c24e14610069578063772a0001146100c1575b5f5ffd5b61005661005136600461079b565b61010d565b6040519081526020015b60405180910390f35b6100907fff0000000000000000000000000000000000000000000000000000000000000081565b6040517fff000000000000000000000000000000000000000000000000000000000000009091168152602001610060565b6100e87f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610060565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461017d576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060807fff0000000000000000000000000000000000000000000000000000000000000087875f816101b1576101b1610814565b9050013560f81c60f81b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191603610206576101ef866001818a610841565b8101906101fc91906109a5565b9092509050610235565b5f61021387890189610a3e565b905080610100015180602001905181019061022e9190610bb4565b9093509150505b5f808061024487890189610c0f565b9250925092505f610254856102ec565b90505f6102618d886103d4565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161490505f6102c18e6040516020016102a891815260200190565b6040516020818303038152906040526001858888610479565b90508180156102cd5750805b6102d85760016102da565b5f5b9e9d5050505050505050505050505050565b6103216040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106103ce5760208301818101818251018281108260c0830111171561034d575050506103ce565b808151019250806020820151018181108382111782851084861117171561037757505050506103ce565b828151602083010111838551602087010111171561039857505050506103ce565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f6040518251604081146103f0576041811461042a5750610465565b604084015160ff81901c601b016020527f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1660605261043d565b60608401515f1a60205260408401516060525b50835f5260208301516040526020600160805f60015afa5191505f606052806040523d610472575b638baa579f5f526004601cfd5b5092915050565b5f5f5f610488886001806105b0565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561058457602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061058457fe5b50505082156105a5576105a28287608001518860a0015188886106bd565b92505b505095945050505050565b6060835180156106b5576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061062b5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610721576d1ab2e8006fd8b71907bf06a5bdee3b6107215760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61072157fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f840112610766575f5ffd5b50813567ffffffffffffffff81111561077d575f5ffd5b602083019150836020828501011115610794575f5ffd5b9250929050565b5f5f5f5f5f606086880312156107af575f5ffd5b85359450602086013567ffffffffffffffff8111156107cc575f5ffd5b6107d888828901610756565b909550935050604086013567ffffffffffffffff8111156107f7575f5ffd5b61080388828901610756565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f5f8585111561084f575f5ffd5b8386111561085b575f5ffd5b5050820193919092039150565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156108b9576108b9610868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561090657610906610868565b604052919050565b5f67ffffffffffffffff82111561092757610927610868565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112610962575f5ffd5b81356109756109708261090e565b6108bf565b818152846020838601011115610989575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156109b6575f5ffd5b823567ffffffffffffffff8111156109cc575f5ffd5b6109d885828601610953565b925050602083013567ffffffffffffffff8111156109f4575f5ffd5b610a0085828601610953565b9150509250929050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a2b575f5ffd5b50565b8035610a3981610a0a565b919050565b5f60208284031215610a4e575f5ffd5b813567ffffffffffffffff811115610a64575f5ffd5b82016101208185031215610a76575f5ffd5b610a7e610895565b610a8782610a2e565b815260208281013590820152604082013567ffffffffffffffff811115610aac575f5ffd5b610ab886828501610953565b604083015250606082013567ffffffffffffffff811115610ad7575f5ffd5b610ae386828501610953565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610b20575f5ffd5b610b2c86828501610953565b60e08301525061010082013567ffffffffffffffff811115610b4c575f5ffd5b610b5886828501610953565b61010083015250949350505050565b5f82601f830112610b76575f5ffd5b8151610b846109708261090e565b818152846020838601011115610b98575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f60408385031215610bc5575f5ffd5b825167ffffffffffffffff811115610bdb575f5ffd5b610be785828601610b67565b925050602083015167ffffffffffffffff811115610c03575f5ffd5b610a0085828601610b67565b5f5f5f60608486031215610c21575f5ffd5b8335610c2c81610a0a565b9560208501359550604090940135939250505056fea2646970667358221220385f57880e2e6ea2f85749972364c4a9abd217fbe6f391d8b3e92c37bc11392364736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x48", "chainId": "0x2105" }, "additionalContracts": [], @@ -25,31 +25,31 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x2394bd4", + "cumulativeGasUsed": "0x780316", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xc2191a27fb5c53c283b59bbae0818ad8acd42f6d2de836c422206882a696cbe4", - "transactionIndex": "0xa3", - "blockHash": "0xeda8857a552042cd3d5ec9768d3fdd32e397f90d7e632a49fbce5392b8b58f13", - "blockNumber": "0x1fada83", - "gasUsed": "0xb83d1", - "effectiveGasPrice": "0x54d9b6", + "transactionHash": "0x1d88f61ba2eb6f097b9cb5e3826d7125f251cd9e5b7523006f447df79448a051", + "transactionIndex": "0x15", + "blockHash": "0x93e58d8a65c97f518d7023ef4cb58581384d6b95c91b5e4cee411cf4ee430623", + "blockNumber": "0x20a1bdd", + "gasUsed": "0xb5803", + "effectiveGasPrice": "0x16bf73", "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x36674817e050a37da325d66b6dbd1a93063dc6b9", + "contractAddress": "0x7cd0d83c0c33aac9cef88c75f3edec80f4175252", "l1BaseFeeScalar": "0x8dd", "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0x101c12", - "l1Fee": "0x78e0a1c12", - "l1GasPrice": "0x1a69f093", - "l1GasUsed": "0x7e0e" + "l1Fee": "0x80434d6a2", + "l1GasPrice": "0x1c8c74c8", + "l1GasUsed": "0x7bc1" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1753223681, + "timestamp": 1755223221, "chain": 8453, - "commit": "d9c91da" + "commit": "2d9be2e" } \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/1/run-1755316925.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/1/run-1755316925.json new file mode 100644 index 0000000..f2c7355 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/1/run-1755316925.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x15e1bf579bbfa106506a35ac56d373a3dcf4183e5bd81254e746a7e2af50803a", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7e", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x9ce7c9", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x15e1bf579bbfa106506a35ac56d373a3dcf4183e5bd81254e746a7e2af50803a", + "transactionIndex": "0x5f", + "blockHash": "0x5c6d8a85eab60b8c0361d444a0c1c68938660e51678602cd8e385966876bf45d", + "blockNumber": "0x16141eb", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x1022d5de", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316925, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/1/run-latest.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/1/run-latest.json new file mode 100644 index 0000000..f2c7355 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/1/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0x15e1bf579bbfa106506a35ac56d373a3dcf4183e5bd81254e746a7e2af50803a", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x7e", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x9ce7c9", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x15e1bf579bbfa106506a35ac56d373a3dcf4183e5bd81254e746a7e2af50803a", + "transactionIndex": "0x5f", + "blockHash": "0x5c6d8a85eab60b8c0361d444a0c1c68938660e51678602cd8e385966876bf45d", + "blockNumber": "0x16141eb", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x1022d5de", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755316925, + "chain": 1, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/10/run-1755313914.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/10/run-1755313914.json new file mode 100644 index 0000000..aba4064 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/10/run-1755313914.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0xd370c404447e96ab7a51100ecef5ad415fc7f56c7ca6ebd848db4e7688f0b2fa", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x29", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xc59aa7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd370c404447e96ab7a51100ecef5ad415fc7f56c7ca6ebd848db4e7688f0b2fa", + "transactionIndex": "0x1b", + "blockHash": "0xa1a51af5dbc0942e69ae949f8ddc47b03d1b6b4c67aa0badafc2afe356984a55", + "blockNumber": "0x8560e97", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x144f", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x7d3719f30", + "l1GasPrice": "0xee63637", + "l1GasUsed": "0x647d" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313914, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/10/run-latest.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/10/run-latest.json new file mode 100644 index 0000000..aba4064 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/10/run-latest.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0xd370c404447e96ab7a51100ecef5ad415fc7f56c7ca6ebd848db4e7688f0b2fa", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x29", + "chainId": "0xa" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xc59aa7", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd370c404447e96ab7a51100ecef5ad415fc7f56c7ca6ebd848db4e7688f0b2fa", + "transactionIndex": "0x1b", + "blockHash": "0xa1a51af5dbc0942e69ae949f8ddc47b03d1b6b4c67aa0badafc2afe356984a55", + "blockNumber": "0x8560e97", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x144f", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "l1BaseFeeScalar": "0x146b", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xf79c5", + "l1Fee": "0x7d3719f30", + "l1GasPrice": "0xee63637", + "l1GasUsed": "0x647d" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755313914, + "chain": 10, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/137/run-1755314742.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/137/run-1755314742.json new file mode 100644 index 0000000..1cbf92d --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/137/run-1755314742.json @@ -0,0 +1,66 @@ +{ + "transactions": [ + { + "hash": "0x224c8d4e749839e1e29a5f11bbd5aa83f2aec51b2d2e972d6d155c16564d83b0", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4f", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xe3283f", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x0000000000000000000000001efecb61a2f80aa34d3b9218b564a64d05946290" + ], + "data": "0x00000000000000000000000000000000000000000000000000335170a180c00000000000000000000000000000000000000000000000000b870440e5f6a2808b000000000000000000000000000000000000000000000392c2b05133abc7921600000000000000000000000000000000000000000000000b86d0ef755521c08b000000000000000000000000000000000000000000000392c2e3a2a44d485216", + "blockHash": "0xbbcbae487de66b4be28008d155c8d766d6dff9bd0d2afda3655e08ca72bdaea5", + "blockNumber": "0x47c61cf", + "transactionHash": "0x224c8d4e749839e1e29a5f11bbd5aa83f2aec51b2d2e972d6d155c16564d83b0", + "transactionIndex": "0x39", + "logIndex": "0x32c", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000200000000000000000000000000000800010008000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000084000000100000000000001000000000000000000000000000000100000000000002000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x224c8d4e749839e1e29a5f11bbd5aa83f2aec51b2d2e972d6d155c16564d83b0", + "transactionIndex": "0x39", + "blockHash": "0xbbcbae487de66b4be28008d155c8d766d6dff9bd0d2afda3655e08ca72bdaea5", + "blockNumber": "0x47c61cf", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x60db884c7", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314742, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/137/run-latest.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/137/run-latest.json new file mode 100644 index 0000000..1cbf92d --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/137/run-latest.json @@ -0,0 +1,66 @@ +{ + "transactions": [ + { + "hash": "0x224c8d4e749839e1e29a5f11bbd5aa83f2aec51b2d2e972d6d155c16564d83b0", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x4f", + "chainId": "0x89" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xe3283f", + "logs": [ + { + "address": "0x0000000000000000000000000000000000001010", + "topics": [ + "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63", + "0x0000000000000000000000000000000000000000000000000000000000001010", + "0x000000000000000000000000f6731de143cd04d7e9aebe3b1b00adbbd4710249", + "0x0000000000000000000000001efecb61a2f80aa34d3b9218b564a64d05946290" + ], + "data": "0x00000000000000000000000000000000000000000000000000335170a180c00000000000000000000000000000000000000000000000000b870440e5f6a2808b000000000000000000000000000000000000000000000392c2b05133abc7921600000000000000000000000000000000000000000000000b86d0ef755521c08b000000000000000000000000000000000000000000000392c2e3a2a44d485216", + "blockHash": "0xbbcbae487de66b4be28008d155c8d766d6dff9bd0d2afda3655e08ca72bdaea5", + "blockNumber": "0x47c61cf", + "transactionHash": "0x224c8d4e749839e1e29a5f11bbd5aa83f2aec51b2d2e972d6d155c16564d83b0", + "transactionIndex": "0x39", + "logIndex": "0x32c", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000200000000000000000000000000000800010008000000000000100000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000084000000100000000000001000000000000000000000000000000100000000000002000000000000000000000000000000000000000000000000000000000100000", + "type": "0x2", + "transactionHash": "0x224c8d4e749839e1e29a5f11bbd5aa83f2aec51b2d2e972d6d155c16564d83b0", + "transactionIndex": "0x39", + "blockHash": "0xbbcbae487de66b4be28008d155c8d766d6dff9bd0d2afda3655e08ca72bdaea5", + "blockNumber": "0x47c61cf", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x60db884c7", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755314742, + "chain": 137, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/42161/run-1755312927.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/42161/run-1755312927.json new file mode 100644 index 0000000..af3dd66 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/42161/run-1755312927.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x44d95f6aa8092b7f066fc3d274c1772dd29ea9d11b8e66dd2f3f7095bbbe4756", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xb6679", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x48", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x118a69", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x44d95f6aa8092b7f066fc3d274c1772dd29ea9d11b8e66dd2f3f7095bbbe4756", + "transactionIndex": "0x5", + "blockHash": "0xd6e6c2a0e56b7fd40f76f494a8efd249879eece33160feb027b6c83c5614e520", + "blockNumber": "0x15fccd65", + "gasUsed": "0x892cb", + "effectiveGasPrice": "0xb08768", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "gasUsedForL1": "0x189b", + "l1BlockNumber": "0x161409e", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312927, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/42161/run-latest.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/42161/run-latest.json new file mode 100644 index 0000000..af3dd66 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/42161/run-latest.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x44d95f6aa8092b7f066fc3d274c1772dd29ea9d11b8e66dd2f3f7095bbbe4756", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xb6679", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x48", + "chainId": "0xa4b1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x118a69", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x44d95f6aa8092b7f066fc3d274c1772dd29ea9d11b8e66dd2f3f7095bbbe4756", + "transactionIndex": "0x5", + "blockHash": "0xd6e6c2a0e56b7fd40f76f494a8efd249879eece33160feb027b6c83c5614e520", + "blockNumber": "0x15fccd65", + "gasUsed": "0x892cb", + "effectiveGasPrice": "0xb08768", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "gasUsedForL1": "0x189b", + "l1BlockNumber": "0x161409e", + "timeboosted": false + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755312927, + "chain": 42161, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/43114/run-1755315819.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/43114/run-1755315819.json new file mode 100644 index 0000000..bd4fff9 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/43114/run-1755315819.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xbd0332d18afa6870557e6afc2db11897f474c0390c015f0598d633faaef98da7", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x49", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1984d3", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbd0332d18afa6870557e6afc2db11897f474c0390c015f0598d633faaef98da7", + "transactionIndex": "0xb", + "blockHash": "0x34c339ff09413fa77cf0889d3be6c479317733b5c93a2733aa67f9523f077ff7", + "blockNumber": "0x4007ebe", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x220e0883", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315819, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/43114/run-latest.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/43114/run-latest.json new file mode 100644 index 0000000..bd4fff9 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/43114/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xbd0332d18afa6870557e6afc2db11897f474c0390c015f0598d633faaef98da7", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x49", + "chainId": "0xa86a" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1984d3", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xbd0332d18afa6870557e6afc2db11897f474c0390c015f0598d633faaef98da7", + "transactionIndex": "0xb", + "blockHash": "0x34c339ff09413fa77cf0889d3be6c479317733b5c93a2733aa67f9523f077ff7", + "blockNumber": "0x4007ebe", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x220e0883", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315819, + "chain": 43114, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/56/run-1755315295.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/56/run-1755315295.json new file mode 100644 index 0000000..d72e6f8 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/56/run-1755315295.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xed6066623c665e4f1db659701ca386806813e8d1a9687734c69314874c100d4c", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xad", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x71bcba", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xed6066623c665e4f1db659701ca386806813e8d1a9687734c69314874c100d4c", + "transactionIndex": "0x29", + "blockHash": "0x1283f17c5776dcec70849860620c4a74de18031fd259fe2fa0b59854c6f0dad9", + "blockNumber": "0x3714a24", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315295, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/56/run-latest.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/56/run-latest.json new file mode 100644 index 0000000..d72e6f8 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/56/run-latest.json @@ -0,0 +1,49 @@ +{ + "transactions": [ + { + "hash": "0xed6066623c665e4f1db659701ca386806813e8d1a9687734c69314874c100d4c", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0xad", + "chainId": "0x38" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x71bcba", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x0", + "transactionHash": "0xed6066623c665e4f1db659701ca386806813e8d1a9687734c69314874c100d4c", + "transactionIndex": "0x29", + "blockHash": "0x1283f17c5776dcec70849860620c4a74de18031fd259fe2fa0b59854c6f0dad9", + "blockNumber": "0x3714a24", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x5f5e100", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755315295, + "chain": 56, + "commit": "a30abbb" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/8453/run-1755223163.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/8453/run-1755223163.json new file mode 100644 index 0000000..6617058 --- /dev/null +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/8453/run-1755223163.json @@ -0,0 +1,55 @@ +{ + "transactions": [ + { + "hash": "0x77d5361322ec90a14ffe3c0ce24ffce227d870704bd33691f752f541f0e354b9", + "transactionType": "CREATE2", + "contractName": "UserOpWebAuthnVerifier", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "function": null, + "arguments": [ + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" + ], + "transaction": { + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "gas": "0xbb592", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x47", + "chainId": "0x2105" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x37cd957", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x77d5361322ec90a14ffe3c0ce24ffce227d870704bd33691f752f541f0e354b9", + "transactionIndex": "0x7f", + "blockHash": "0xf6bba610695056280cc243b2e9031847611466e54a794fedb8a35c359ba1aaa5", + "blockNumber": "0x20a1bc0", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x168c63", + "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", + "l1BaseFeeScalar": "0x8dd", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0x101c12", + "l1Fee": "0x6e8873ae6", + "l1GasPrice": "0x1e3c3f06", + "l1GasUsed": "0x64b2" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1755223163, + "chain": 8453, + "commit": "2d9be2e" +} \ No newline at end of file diff --git a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/8453/run-latest.json b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/8453/run-latest.json index 1bd6047..6617058 100644 --- a/broadcast/DeployUserOpWebAuthnVerifier.s.sol/8453/run-latest.json +++ b/broadcast/DeployUserOpWebAuthnVerifier.s.sol/8453/run-latest.json @@ -1,21 +1,21 @@ { "transactions": [ { - "hash": "0x6dd0ece1c49c30ff7de01f92eb525ca0949ed714f213234c361ca754f2794dc6", + "hash": "0x77d5361322ec90a14ffe3c0ce24ffce227d870704bd33691f752f541f0e354b9", "transactionType": "CREATE2", "contractName": "UserOpWebAuthnVerifier", - "contractAddress": "0xecb9be3dbb737ed13a768b2b7d030b483bf5c9f2", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", "function": null, "arguments": [ - "0x18c90BdFc5667D11605ebde82E5E9CDC4D789363" + "0x69C9F626b5Bd934C0F9806346682eD407FB978d3" ], "transaction": { "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "gas": "0xbf211", + "gas": "0xbb592", "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b506040516109c43803806109c4833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516109416100835f395f81816063015260c301526109415ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b610046366004610621565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461014e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f76657269666965723a206e6f742066726f6d204b657973746f72650000000000604482015260640160405180910390fd5b5f61018d86868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061021792505050565b90508060200151515f036101bc575f6101a8868801886107c2565b90506101b8816101000151610217565b9150505b5f806101ca858701876108eb565b915091506101fd896040516020016101e491815260200190565b60405160208183030381529060405260018585856102ff565b61020857600161020a565b5f5b9998505050505050505050565b61024c6040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102f95760208301818101818251018281108260c08301111715610278575050506102f9565b80815101925080602082015101818110838211178285108486111717156102a257505050506102f9565b82815160208301011183855160208701011117156102c357505050506102f9565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f61030e88600180610436565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c510151161460208311881616965050851561040a57602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d905061040a57fe5b505050821561042b576104288287608001518860a001518888610543565b92505b505095945050505050565b60608351801561053b576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f5184526004840193508284106104b15790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d6105a7576d1ab2e8006fd8b71907bf06a5bdee3b6105a75760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa6105a757fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105ec575f5ffd5b50813567ffffffffffffffff811115610603575f5ffd5b60208301915083602082850101111561061a575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610635575f5ffd5b85359450602086013567ffffffffffffffff811115610652575f5ffd5b61065e888289016105dc565b909550935050604086013567ffffffffffffffff81111561067d575f5ffd5b610689888289016105dc565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106eb576106eb61069a565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff81168114610714575f5ffd5b919050565b5f82601f830112610728575f5ffd5b813567ffffffffffffffff8111156107425761074261069a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561078f5761078f61069a565b6040528181528382016020018510156107a6575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156107d2575f5ffd5b813567ffffffffffffffff8111156107e8575f5ffd5b820161012081850312156107fa575f5ffd5b6108026106c7565b61080b826106f1565b815260208281013590820152604082013567ffffffffffffffff811115610830575f5ffd5b61083c86828501610719565b604083015250606082013567ffffffffffffffff81111561085b575f5ffd5b61086786828501610719565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff8111156108a4575f5ffd5b6108b086828501610719565b60e08301525061010082013567ffffffffffffffff8111156108d0575f5ffd5b6108dc86828501610719565b61010083015250949350505050565b5f5f604083850312156108fc575f5ffd5b5050803592602090910135915056fea264697066735822122007878d8a52504d5546d587ce9acdf6951f9571e48d4856348ecc6111d356286164736f6c634300081c003300000000000000000000000018c90bdfc5667d11605ebde82e5e9cdc4d789363", - "nonce": "0x40", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052348015600e575f5ffd5b50604051610990380380610990833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b60805161090d6100835f395f81816063015260c3015261090d5ff3fe608060405234801561000f575f5ffd5b5060043610610034575f3560e01c806304b073c514610038578063772a00011461005e575b5f5ffd5b61004b6100463660046105ed565b6100aa565b6040519081526020015b60405180910390f35b6100857f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610055565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461011a576040517f4333e8ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61015986868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506101e392505050565b90508060200151515f03610188575f6101748688018861078e565b90506101848161010001516101e3565b9150505b5f80610196858701876108b7565b915091506101c9896040516020016101b091815260200190565b60405160208183030381529060405260018585856102cb565b6101d45760016101d6565b5f5b9998505050505050505050565b6102186040518060c0016040528060608152602001606081526020015f81526020015f81526020015f81526020015f81525090565b815160c081106102c55760208301818101818251018281108260c08301111715610244575050506102c5565b808151019250806020820151018181108382111782851084861117171561026e57505050506102c5565b828151602083010111838551602087010111171561028f57505050506102c5565b8386528060208701525060408101516040860152606081015160608601526080810151608086015260a081015160a08601525050505b50919050565b5f5f5f6102da88600180610402565b905060208601518051602082019150604088015160608901518451600d81017f226368616c6c656e6765223a220000000000000000000000000000000000000060981c8752848482011060228286890101515f1a14168160138901208286890120141685846014011085851760801c107f2274797065223a22776562617574686e2e67657422000000000000000000000060581c8589015160581c14161698505080865250505087515189151560021b600117808160218c51015116146020831188161696505085156103d657602089510181810180516020600160208601856020868a8c60025afa60011b5afa51915295503d90506103d657fe5b50505082156103f7576103f48287608001518860a00151888861050f565b92505b505095945050505050565b606083518015610507576003600282010460021b60405192507f4142434445464748494a4b4c4d4e4f505152535455565758595a616263646566601f526106708515027f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392d5f18603f526020830181810183886020010180515f82525b60038a0199508951603f8160121c16515f53603f81600c1c1651600153603f8160061c1651600253603f811651600353505f51845260048401935082841061047d5790526020016040527f3d3d00000000000000000000000000000000000000000000000000000000000060038406600204808303919091525f8615159091029182900352900382525b509392505050565b5f6040518681528560208201528460408201528360608201528260808201525f5f5260205f60a0836101005afa503d610573576d1ab2e8006fd8b71907bf06a5bdee3b6105735760205f60a0836dd01ea45f9efd5c54f037fa57ea1a5afa61057357fe5b505f516001147f7fffffff800000007fffffffffffffffde737d56d38bcf4279dce5617e3192a8851110905095945050505050565b5f5f83601f8401126105b8575f5ffd5b50813567ffffffffffffffff8111156105cf575f5ffd5b6020830191508360208285010111156105e6575f5ffd5b9250929050565b5f5f5f5f5f60608688031215610601575f5ffd5b85359450602086013567ffffffffffffffff81111561061e575f5ffd5b61062a888289016105a8565b909550935050604086013567ffffffffffffffff811115610649575f5ffd5b610655888289016105a8565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610120810167ffffffffffffffff811182821017156106b7576106b7610666565b60405290565b803573ffffffffffffffffffffffffffffffffffffffff811681146106e0575f5ffd5b919050565b5f82601f8301126106f4575f5ffd5b813567ffffffffffffffff81111561070e5761070e610666565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff8111828210171561075b5761075b610666565b604052818152838201602001851015610772575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f6020828403121561079e575f5ffd5b813567ffffffffffffffff8111156107b4575f5ffd5b820161012081850312156107c6575f5ffd5b6107ce610693565b6107d7826106bd565b815260208281013590820152604082013567ffffffffffffffff8111156107fc575f5ffd5b610808868285016106e5565b604083015250606082013567ffffffffffffffff811115610827575f5ffd5b610833868285016106e5565b6060830152506080828101359082015260a0808301359082015260c0808301359082015260e082013567ffffffffffffffff811115610870575f5ffd5b61087c868285016106e5565b60e08301525061010082013567ffffffffffffffff81111561089c575f5ffd5b6108a8868285016106e5565b61010083015250949350505050565b5f5f604083850312156108c8575f5ffd5b5050803592602090910135915056fea2646970667358221220657adfd49e4846cc8f3c5ae84b44eb0fbbc0d94d8b9e491ae075620f95747e9064736f6c634300081c003300000000000000000000000069c9f626b5bd934c0f9806346682ed407fb978d3", + "nonce": "0x47", "chainId": "0x2105" }, "additionalContracts": [], @@ -25,31 +25,31 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x1f1e21f", + "cumulativeGasUsed": "0x37cd957", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x6dd0ece1c49c30ff7de01f92eb525ca0949ed714f213234c361ca754f2794dc6", - "transactionIndex": "0x94", - "blockHash": "0xc62836543ed34695851111144b9e2499cef58c2128580efd2d34cbc52dc9941d", - "blockNumber": "0x1e7f79d", - "gasUsed": "0x8a5fd", - "effectiveGasPrice": "0x26dea8", + "transactionHash": "0x77d5361322ec90a14ffe3c0ce24ffce227d870704bd33691f752f541f0e354b9", + "transactionIndex": "0x7f", + "blockHash": "0xf6bba610695056280cc243b2e9031847611466e54a794fedb8a35c359ba1aaa5", + "blockNumber": "0x20a1bc0", + "gasUsed": "0x87a30", + "effectiveGasPrice": "0x168c63", "from": "0xf6731de143cd04d7e9aebe3b1b00adbbd4710249", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xecb9be3dbb737ed13a768b2b7d030b483bf5c9f2", + "contractAddress": "0xe19620169a26aebc4fe229a073639da6b009bf1a", "l1BaseFeeScalar": "0x8dd", "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0x101c12", - "l1Fee": "0x1afda8546b", - "l1GasPrice": "0x73240aea", - "l1GasUsed": "0x674f" + "l1Fee": "0x6e8873ae6", + "l1GasPrice": "0x1e3c3f06", + "l1GasUsed": "0x64b2" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1750748208, + "timestamp": 1755223163, "chain": 8453, - "commit": "9647c03" + "commit": "2d9be2e" } \ No newline at end of file From 55b1cd67c1a28e8a61fba4498770f1e529ca6570 Mon Sep 17 00:00:00 2001 From: hazim-j Date: Tue, 19 Aug 2025 07:59:25 +1000 Subject: [PATCH 42/42] Add Spearbit audit --- audits/spearbit-july2025.pdf | Bin 0 -> 216355 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 audits/spearbit-july2025.pdf diff --git a/audits/spearbit-july2025.pdf b/audits/spearbit-july2025.pdf new file mode 100644 index 0000000000000000000000000000000000000000..14c9b57c9f8b479ac973fa689906242d8f27d39d GIT binary patch literal 216355 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

b?GS#rB9eS(KY?76YA^AiYy*hwZOr2O&6ctIe5% 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

wJtmRLjtKyw_$B2(Dvlprdz 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%0ANva%iE=vd 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 z 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

X)rP5MNQ3FTOWlv_)WbO2 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 M7&0<3d2yKk2LOc(!~g&Q literal 0 HcmV?d00001