@layerzerolabs/create3-factory 2.3.41 → 2.3.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deployments/bevm-testnet/.chainId +1 -0
- package/deployments/bevm-testnet/CREATE3Factory.json +120 -0
- package/deployments/bitlayer-mainnet/.chainId +1 -0
- package/deployments/bitlayer-mainnet/CREATE3Factory.json +120 -0
- package/deployments/dm2verse-mainnet/.chainId +1 -0
- package/deployments/dm2verse-mainnet/CREATE3Factory.json +120 -0
- package/deployments/hedera-mainnet/.chainId +1 -0
- package/deployments/hedera-mainnet/CREATE3Factory.json +120 -0
- package/deployments/morph-testnet/.chainId +1 -1
- package/deployments/morph-testnet/CREATE3Factory.json +9 -9
- package/deployments/ozean-testnet/.chainId +1 -0
- package/deployments/ozean-testnet/CREATE3Factory.json +120 -0
- package/package.json +12 -12
- package/CHANGELOG.md +0 -342
|
@@ -0,0 +1 @@
|
|
|
1
|
+
11503
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"address": "0x3aCAAf60502791D199a5a5F0B173D78229eBFe32",
|
|
3
|
+
"abi": [
|
|
4
|
+
{
|
|
5
|
+
"inputs": [
|
|
6
|
+
{
|
|
7
|
+
"internalType": "bytes32",
|
|
8
|
+
"name": "salt",
|
|
9
|
+
"type": "bytes32"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"internalType": "bytes",
|
|
13
|
+
"name": "creationCode",
|
|
14
|
+
"type": "bytes"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"name": "deploy",
|
|
18
|
+
"outputs": [
|
|
19
|
+
{
|
|
20
|
+
"internalType": "address",
|
|
21
|
+
"name": "deployed",
|
|
22
|
+
"type": "address"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"stateMutability": "payable",
|
|
26
|
+
"type": "function"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"internalType": "address",
|
|
32
|
+
"name": "deployer",
|
|
33
|
+
"type": "address"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"internalType": "bytes32",
|
|
37
|
+
"name": "salt",
|
|
38
|
+
"type": "bytes32"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"name": "getDeployed",
|
|
42
|
+
"outputs": [
|
|
43
|
+
{
|
|
44
|
+
"internalType": "address",
|
|
45
|
+
"name": "deployed",
|
|
46
|
+
"type": "address"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"stateMutability": "view",
|
|
50
|
+
"type": "function"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"transactionHash": "0x7bd1b2cdbc495d78e00c7d3636b8c5deaed605c25f52f9507c9edb5728ae7598",
|
|
54
|
+
"receipt": {
|
|
55
|
+
"to": null,
|
|
56
|
+
"from": "0xc13b65f7c53Cd6db2EA205a4b574b4a0858720A6",
|
|
57
|
+
"contractAddress": "0x3aCAAf60502791D199a5a5F0B173D78229eBFe32",
|
|
58
|
+
"transactionIndex": 1,
|
|
59
|
+
"gasUsed": "400382",
|
|
60
|
+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
61
|
+
"blockHash": "0xa3c53143ac9b2037815c7543aa415c4154f461ff5a0da225e339133b7ea5e8ae",
|
|
62
|
+
"transactionHash": "0x7bd1b2cdbc495d78e00c7d3636b8c5deaed605c25f52f9507c9edb5728ae7598",
|
|
63
|
+
"logs": [],
|
|
64
|
+
"blockNumber": 2819000,
|
|
65
|
+
"cumulativeGasUsed": "504216",
|
|
66
|
+
"status": 1,
|
|
67
|
+
"byzantium": true
|
|
68
|
+
},
|
|
69
|
+
"args": [],
|
|
70
|
+
"numDeployments": 1,
|
|
71
|
+
"solcInputHash": "38b0c9933807d1cf29142f846a11b5fb",
|
|
72
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"creationCode\",\"type\":\"bytes\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeployed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"zefram.eth\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes32,bytes)\":{\"details\":\"The provided salt is hashed together with msg.sender to generate the final salt\",\"params\":{\"creationCode\":\"The creation code of the contract to deploy\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the deployed contract\"}},\"getDeployed(address,bytes32)\":{\"details\":\"The provided salt is hashed together with the deployer address to generate the final salt\",\"params\":{\"deployer\":\"The deployer account that will call deploy()\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the contract that will be deployed\"}}},\"title\":\"Factory for deploying contracts to deterministic addresses via CREATE3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes32,bytes)\":{\"notice\":\"Deploys a contract using CREATE3\"},\"getDeployed(address,bytes32)\":{\"notice\":\"Predicts the address of a deployed contract\"}},\"notice\":\"Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CREATE3Factory.sol\":\"CREATE3Factory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":30000},\"remappings\":[]},\"sources\":{\"contracts/Bytes32AddressLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\n/// @notice Library for converting between addresses and bytes32 values.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/Bytes32AddressLib.sol)\\nlibrary Bytes32AddressLib {\\n function fromLast20Bytes(bytes32 bytesValue) internal pure returns (address) {\\n return address(uint160(uint256(bytesValue)));\\n }\\n\\n function fillLast12Bytes(address addressValue) internal pure returns (bytes32) {\\n return bytes32(bytes20(addressValue));\\n }\\n}\\n\",\"keccak256\":\"0x1fef64595d11ea4363319297e8d0e751968b6f0cd23cfd9a1046cfe80fa3c1a1\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\nimport { Bytes32AddressLib } from \\\"./Bytes32AddressLib.sol\\\";\\n\\n/// @notice Deploy to deterministic addresses without an initcode factor.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol)\\n/// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol)\\nlibrary CREATE3 {\\n using Bytes32AddressLib for bytes32;\\n\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 0 size //\\n // 0x37 | 0x37 | CALLDATACOPY | //\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x34 | 0x34 | CALLVALUE | value 0 size //\\n // 0xf0 | 0xf0 | CREATE | newContract //\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x67 | 0x67XXXXXXXXXXXXXXXX | PUSH8 bytecode | bytecode //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 bytecode //\\n // 0x52 | 0x52 | MSTORE | //\\n // 0x60 | 0x6008 | PUSH1 08 | 8 //\\n // 0x60 | 0x6018 | PUSH1 18 | 24 8 //\\n // 0xf3 | 0xf3 | RETURN | //\\n //--------------------------------------------------------------------------------//\\n bytes internal constant PROXY_BYTECODE = hex\\\"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3\\\";\\n\\n bytes32 internal constant PROXY_BYTECODE_HASH = keccak256(PROXY_BYTECODE);\\n\\n function deploy(bytes32 salt, bytes memory creationCode, uint256 value) internal returns (address deployed) {\\n bytes memory proxyChildBytecode = PROXY_BYTECODE;\\n\\n address proxy;\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Deploy a new contract with our pre-made bytecode via CREATE2.\\n // We start 32 bytes into the code to avoid copying the byte length.\\n proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), salt)\\n }\\n require(proxy != address(0), \\\"DEPLOYMENT_FAILED\\\");\\n\\n deployed = getDeployed(salt);\\n (bool success, ) = proxy.call{ value: value }(creationCode);\\n require(success && deployed.code.length != 0, \\\"INITIALIZATION_FAILED\\\");\\n }\\n\\n function getDeployed(bytes32 salt) internal view returns (address) {\\n return getDeployed(salt, address(this));\\n }\\n\\n function getDeployed(bytes32 salt, address creator) internal pure returns (address) {\\n address proxy = keccak256(\\n abi.encodePacked(\\n // Prefix:\\n bytes1(0xFF),\\n // Creator:\\n creator,\\n // Salt:\\n salt,\\n // Bytecode hash:\\n PROXY_BYTECODE_HASH\\n )\\n ).fromLast20Bytes();\\n\\n return\\n keccak256(\\n abi.encodePacked(\\n // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01)\\n // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex)\\n hex\\\"d6_94\\\",\\n proxy,\\n hex\\\"01\\\" // Nonce of the proxy contract (1)\\n )\\n ).fromLast20Bytes();\\n }\\n}\\n\",\"keccak256\":\"0xf39b6e7200f8debc79f7e17317d38416d915fa555de667867c2649497991dd4c\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity ^0.8.13;\\n\\nimport { CREATE3 } from \\\"./CREATE3.sol\\\";\\n\\nimport { ICREATE3Factory } from \\\"./ICREATE3Factory.sol\\\";\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ncontract CREATE3Factory is ICREATE3Factory {\\n /// @inheritdoc\\tICREATE3Factory\\n function deploy(bytes32 salt, bytes memory creationCode) external payable override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(msg.sender, salt));\\n return CREATE3.deploy(salt, creationCode, msg.value);\\n }\\n\\n /// @inheritdoc\\tICREATE3Factory\\n function getDeployed(address deployer, bytes32 salt) external view override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(deployer, salt));\\n return CREATE3.getDeployed(salt);\\n }\\n}\\n\",\"keccak256\":\"0xcd8982e1f03dc675e0730899ae03a6dd57784305fb58b0be29bcd43b3f63aea9\",\"license\":\"AGPL-3.0\"},\"contracts/ICREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.6.0;\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ninterface ICREATE3Factory {\\n /// @notice Deploys a contract using CREATE3\\n /// @dev The provided salt is hashed together with msg.sender to generate the final salt\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @param creationCode The creation code of the contract to deploy\\n /// @return deployed The address of the deployed contract\\n function deploy(bytes32 salt, bytes memory creationCode) external payable returns (address deployed);\\n\\n /// @notice Predicts the address of a deployed contract\\n /// @dev The provided salt is hashed together with the deployer address to generate the final salt\\n /// @param deployer The deployer account that will call deploy()\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @return deployed The address of the contract that will be deployed\\n function getDeployed(address deployer, bytes32 salt) external view returns (address deployed);\\n}\\n\",\"keccak256\":\"0x562e0200ed0c86ccaea5f7f0b948281ed4baa82ad278f7a53060dcdc63acc11a\",\"license\":\"AGPL-3.0\"}},\"version\":1}",
|
|
73
|
+
"bytecode": "0x608060405234801561001057600080fd5b50610656806100206000396000f3fe6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
74
|
+
"deployedBytecode": "0x6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
75
|
+
"devdoc": {
|
|
76
|
+
"author": "zefram.eth",
|
|
77
|
+
"kind": "dev",
|
|
78
|
+
"methods": {
|
|
79
|
+
"deploy(bytes32,bytes)": {
|
|
80
|
+
"details": "The provided salt is hashed together with msg.sender to generate the final salt",
|
|
81
|
+
"params": {
|
|
82
|
+
"creationCode": "The creation code of the contract to deploy",
|
|
83
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
84
|
+
},
|
|
85
|
+
"returns": {
|
|
86
|
+
"deployed": "The address of the deployed contract"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"getDeployed(address,bytes32)": {
|
|
90
|
+
"details": "The provided salt is hashed together with the deployer address to generate the final salt",
|
|
91
|
+
"params": {
|
|
92
|
+
"deployer": "The deployer account that will call deploy()",
|
|
93
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
94
|
+
},
|
|
95
|
+
"returns": {
|
|
96
|
+
"deployed": "The address of the contract that will be deployed"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"title": "Factory for deploying contracts to deterministic addresses via CREATE3",
|
|
101
|
+
"version": 1
|
|
102
|
+
},
|
|
103
|
+
"userdoc": {
|
|
104
|
+
"kind": "user",
|
|
105
|
+
"methods": {
|
|
106
|
+
"deploy(bytes32,bytes)": {
|
|
107
|
+
"notice": "Deploys a contract using CREATE3"
|
|
108
|
+
},
|
|
109
|
+
"getDeployed(address,bytes32)": {
|
|
110
|
+
"notice": "Predicts the address of a deployed contract"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"notice": "Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.",
|
|
114
|
+
"version": 1
|
|
115
|
+
},
|
|
116
|
+
"storageLayout": {
|
|
117
|
+
"storage": [],
|
|
118
|
+
"types": null
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
200901
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"address": "0x83c73Da98cf733B03315aFa8758834b36a195b87",
|
|
3
|
+
"abi": [
|
|
4
|
+
{
|
|
5
|
+
"inputs": [
|
|
6
|
+
{
|
|
7
|
+
"internalType": "bytes32",
|
|
8
|
+
"name": "salt",
|
|
9
|
+
"type": "bytes32"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"internalType": "bytes",
|
|
13
|
+
"name": "creationCode",
|
|
14
|
+
"type": "bytes"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"name": "deploy",
|
|
18
|
+
"outputs": [
|
|
19
|
+
{
|
|
20
|
+
"internalType": "address",
|
|
21
|
+
"name": "deployed",
|
|
22
|
+
"type": "address"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"stateMutability": "payable",
|
|
26
|
+
"type": "function"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"internalType": "address",
|
|
32
|
+
"name": "deployer",
|
|
33
|
+
"type": "address"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"internalType": "bytes32",
|
|
37
|
+
"name": "salt",
|
|
38
|
+
"type": "bytes32"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"name": "getDeployed",
|
|
42
|
+
"outputs": [
|
|
43
|
+
{
|
|
44
|
+
"internalType": "address",
|
|
45
|
+
"name": "deployed",
|
|
46
|
+
"type": "address"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"stateMutability": "view",
|
|
50
|
+
"type": "function"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"transactionHash": "0xc91c636e58c33f6a4f08300af9903a0e0914f0c3a8ed7abbcd0337cb194ff0e4",
|
|
54
|
+
"receipt": {
|
|
55
|
+
"to": null,
|
|
56
|
+
"from": "0xc13b65f7c53Cd6db2EA205a4b574b4a0858720A6",
|
|
57
|
+
"contractAddress": "0x83c73Da98cf733B03315aFa8758834b36a195b87",
|
|
58
|
+
"transactionIndex": 0,
|
|
59
|
+
"gasUsed": "400382",
|
|
60
|
+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
61
|
+
"blockHash": "0xc324123ae7707cf6c011a224277665f4f655ff52f403849c9cd1abf1bb287a1c",
|
|
62
|
+
"transactionHash": "0xc91c636e58c33f6a4f08300af9903a0e0914f0c3a8ed7abbcd0337cb194ff0e4",
|
|
63
|
+
"logs": [],
|
|
64
|
+
"blockNumber": 4568702,
|
|
65
|
+
"cumulativeGasUsed": "400382",
|
|
66
|
+
"status": 1,
|
|
67
|
+
"byzantium": true
|
|
68
|
+
},
|
|
69
|
+
"args": [],
|
|
70
|
+
"numDeployments": 1,
|
|
71
|
+
"solcInputHash": "38b0c9933807d1cf29142f846a11b5fb",
|
|
72
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"creationCode\",\"type\":\"bytes\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeployed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"zefram.eth\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes32,bytes)\":{\"details\":\"The provided salt is hashed together with msg.sender to generate the final salt\",\"params\":{\"creationCode\":\"The creation code of the contract to deploy\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the deployed contract\"}},\"getDeployed(address,bytes32)\":{\"details\":\"The provided salt is hashed together with the deployer address to generate the final salt\",\"params\":{\"deployer\":\"The deployer account that will call deploy()\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the contract that will be deployed\"}}},\"title\":\"Factory for deploying contracts to deterministic addresses via CREATE3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes32,bytes)\":{\"notice\":\"Deploys a contract using CREATE3\"},\"getDeployed(address,bytes32)\":{\"notice\":\"Predicts the address of a deployed contract\"}},\"notice\":\"Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CREATE3Factory.sol\":\"CREATE3Factory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":30000},\"remappings\":[]},\"sources\":{\"contracts/Bytes32AddressLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\n/// @notice Library for converting between addresses and bytes32 values.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/Bytes32AddressLib.sol)\\nlibrary Bytes32AddressLib {\\n function fromLast20Bytes(bytes32 bytesValue) internal pure returns (address) {\\n return address(uint160(uint256(bytesValue)));\\n }\\n\\n function fillLast12Bytes(address addressValue) internal pure returns (bytes32) {\\n return bytes32(bytes20(addressValue));\\n }\\n}\\n\",\"keccak256\":\"0x1fef64595d11ea4363319297e8d0e751968b6f0cd23cfd9a1046cfe80fa3c1a1\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\nimport { Bytes32AddressLib } from \\\"./Bytes32AddressLib.sol\\\";\\n\\n/// @notice Deploy to deterministic addresses without an initcode factor.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol)\\n/// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol)\\nlibrary CREATE3 {\\n using Bytes32AddressLib for bytes32;\\n\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 0 size //\\n // 0x37 | 0x37 | CALLDATACOPY | //\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x34 | 0x34 | CALLVALUE | value 0 size //\\n // 0xf0 | 0xf0 | CREATE | newContract //\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x67 | 0x67XXXXXXXXXXXXXXXX | PUSH8 bytecode | bytecode //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 bytecode //\\n // 0x52 | 0x52 | MSTORE | //\\n // 0x60 | 0x6008 | PUSH1 08 | 8 //\\n // 0x60 | 0x6018 | PUSH1 18 | 24 8 //\\n // 0xf3 | 0xf3 | RETURN | //\\n //--------------------------------------------------------------------------------//\\n bytes internal constant PROXY_BYTECODE = hex\\\"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3\\\";\\n\\n bytes32 internal constant PROXY_BYTECODE_HASH = keccak256(PROXY_BYTECODE);\\n\\n function deploy(bytes32 salt, bytes memory creationCode, uint256 value) internal returns (address deployed) {\\n bytes memory proxyChildBytecode = PROXY_BYTECODE;\\n\\n address proxy;\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Deploy a new contract with our pre-made bytecode via CREATE2.\\n // We start 32 bytes into the code to avoid copying the byte length.\\n proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), salt)\\n }\\n require(proxy != address(0), \\\"DEPLOYMENT_FAILED\\\");\\n\\n deployed = getDeployed(salt);\\n (bool success, ) = proxy.call{ value: value }(creationCode);\\n require(success && deployed.code.length != 0, \\\"INITIALIZATION_FAILED\\\");\\n }\\n\\n function getDeployed(bytes32 salt) internal view returns (address) {\\n return getDeployed(salt, address(this));\\n }\\n\\n function getDeployed(bytes32 salt, address creator) internal pure returns (address) {\\n address proxy = keccak256(\\n abi.encodePacked(\\n // Prefix:\\n bytes1(0xFF),\\n // Creator:\\n creator,\\n // Salt:\\n salt,\\n // Bytecode hash:\\n PROXY_BYTECODE_HASH\\n )\\n ).fromLast20Bytes();\\n\\n return\\n keccak256(\\n abi.encodePacked(\\n // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01)\\n // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex)\\n hex\\\"d6_94\\\",\\n proxy,\\n hex\\\"01\\\" // Nonce of the proxy contract (1)\\n )\\n ).fromLast20Bytes();\\n }\\n}\\n\",\"keccak256\":\"0xf39b6e7200f8debc79f7e17317d38416d915fa555de667867c2649497991dd4c\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity ^0.8.13;\\n\\nimport { CREATE3 } from \\\"./CREATE3.sol\\\";\\n\\nimport { ICREATE3Factory } from \\\"./ICREATE3Factory.sol\\\";\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ncontract CREATE3Factory is ICREATE3Factory {\\n /// @inheritdoc\\tICREATE3Factory\\n function deploy(bytes32 salt, bytes memory creationCode) external payable override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(msg.sender, salt));\\n return CREATE3.deploy(salt, creationCode, msg.value);\\n }\\n\\n /// @inheritdoc\\tICREATE3Factory\\n function getDeployed(address deployer, bytes32 salt) external view override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(deployer, salt));\\n return CREATE3.getDeployed(salt);\\n }\\n}\\n\",\"keccak256\":\"0xcd8982e1f03dc675e0730899ae03a6dd57784305fb58b0be29bcd43b3f63aea9\",\"license\":\"AGPL-3.0\"},\"contracts/ICREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.6.0;\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ninterface ICREATE3Factory {\\n /// @notice Deploys a contract using CREATE3\\n /// @dev The provided salt is hashed together with msg.sender to generate the final salt\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @param creationCode The creation code of the contract to deploy\\n /// @return deployed The address of the deployed contract\\n function deploy(bytes32 salt, bytes memory creationCode) external payable returns (address deployed);\\n\\n /// @notice Predicts the address of a deployed contract\\n /// @dev The provided salt is hashed together with the deployer address to generate the final salt\\n /// @param deployer The deployer account that will call deploy()\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @return deployed The address of the contract that will be deployed\\n function getDeployed(address deployer, bytes32 salt) external view returns (address deployed);\\n}\\n\",\"keccak256\":\"0x562e0200ed0c86ccaea5f7f0b948281ed4baa82ad278f7a53060dcdc63acc11a\",\"license\":\"AGPL-3.0\"}},\"version\":1}",
|
|
73
|
+
"bytecode": "0x608060405234801561001057600080fd5b50610656806100206000396000f3fe6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
74
|
+
"deployedBytecode": "0x6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
75
|
+
"devdoc": {
|
|
76
|
+
"author": "zefram.eth",
|
|
77
|
+
"kind": "dev",
|
|
78
|
+
"methods": {
|
|
79
|
+
"deploy(bytes32,bytes)": {
|
|
80
|
+
"details": "The provided salt is hashed together with msg.sender to generate the final salt",
|
|
81
|
+
"params": {
|
|
82
|
+
"creationCode": "The creation code of the contract to deploy",
|
|
83
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
84
|
+
},
|
|
85
|
+
"returns": {
|
|
86
|
+
"deployed": "The address of the deployed contract"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"getDeployed(address,bytes32)": {
|
|
90
|
+
"details": "The provided salt is hashed together with the deployer address to generate the final salt",
|
|
91
|
+
"params": {
|
|
92
|
+
"deployer": "The deployer account that will call deploy()",
|
|
93
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
94
|
+
},
|
|
95
|
+
"returns": {
|
|
96
|
+
"deployed": "The address of the contract that will be deployed"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"title": "Factory for deploying contracts to deterministic addresses via CREATE3",
|
|
101
|
+
"version": 1
|
|
102
|
+
},
|
|
103
|
+
"userdoc": {
|
|
104
|
+
"kind": "user",
|
|
105
|
+
"methods": {
|
|
106
|
+
"deploy(bytes32,bytes)": {
|
|
107
|
+
"notice": "Deploys a contract using CREATE3"
|
|
108
|
+
},
|
|
109
|
+
"getDeployed(address,bytes32)": {
|
|
110
|
+
"notice": "Predicts the address of a deployed contract"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"notice": "Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.",
|
|
114
|
+
"version": 1
|
|
115
|
+
},
|
|
116
|
+
"storageLayout": {
|
|
117
|
+
"storage": [],
|
|
118
|
+
"types": null
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
68770
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"address": "0xae92d5aD7583AD66E49A0c67BAd18F6ba52dDDc1",
|
|
3
|
+
"abi": [
|
|
4
|
+
{
|
|
5
|
+
"inputs": [
|
|
6
|
+
{
|
|
7
|
+
"internalType": "bytes32",
|
|
8
|
+
"name": "salt",
|
|
9
|
+
"type": "bytes32"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"internalType": "bytes",
|
|
13
|
+
"name": "creationCode",
|
|
14
|
+
"type": "bytes"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"name": "deploy",
|
|
18
|
+
"outputs": [
|
|
19
|
+
{
|
|
20
|
+
"internalType": "address",
|
|
21
|
+
"name": "deployed",
|
|
22
|
+
"type": "address"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"stateMutability": "payable",
|
|
26
|
+
"type": "function"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"internalType": "address",
|
|
32
|
+
"name": "deployer",
|
|
33
|
+
"type": "address"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"internalType": "bytes32",
|
|
37
|
+
"name": "salt",
|
|
38
|
+
"type": "bytes32"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"name": "getDeployed",
|
|
42
|
+
"outputs": [
|
|
43
|
+
{
|
|
44
|
+
"internalType": "address",
|
|
45
|
+
"name": "deployed",
|
|
46
|
+
"type": "address"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"stateMutability": "view",
|
|
50
|
+
"type": "function"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"transactionHash": "0x48cfcf6e6cecbb6069dea591bcf3157854ddc0f21b624f4963c3e0e87b976192",
|
|
54
|
+
"receipt": {
|
|
55
|
+
"to": null,
|
|
56
|
+
"from": "0xc13b65f7c53Cd6db2EA205a4b574b4a0858720A6",
|
|
57
|
+
"contractAddress": "0xae92d5aD7583AD66E49A0c67BAd18F6ba52dDDc1",
|
|
58
|
+
"transactionIndex": 0,
|
|
59
|
+
"gasUsed": "400278",
|
|
60
|
+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
61
|
+
"blockHash": "0x2d1050e9f778569b688e5b2644bdcf9456b15fc8d0777cc4bcd4c8c1ae1a7599",
|
|
62
|
+
"transactionHash": "0x48cfcf6e6cecbb6069dea591bcf3157854ddc0f21b624f4963c3e0e87b976192",
|
|
63
|
+
"logs": [],
|
|
64
|
+
"blockNumber": 7378,
|
|
65
|
+
"cumulativeGasUsed": "400278",
|
|
66
|
+
"status": 1,
|
|
67
|
+
"byzantium": true
|
|
68
|
+
},
|
|
69
|
+
"args": [],
|
|
70
|
+
"numDeployments": 1,
|
|
71
|
+
"solcInputHash": "38b0c9933807d1cf29142f846a11b5fb",
|
|
72
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"creationCode\",\"type\":\"bytes\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeployed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"zefram.eth\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes32,bytes)\":{\"details\":\"The provided salt is hashed together with msg.sender to generate the final salt\",\"params\":{\"creationCode\":\"The creation code of the contract to deploy\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the deployed contract\"}},\"getDeployed(address,bytes32)\":{\"details\":\"The provided salt is hashed together with the deployer address to generate the final salt\",\"params\":{\"deployer\":\"The deployer account that will call deploy()\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the contract that will be deployed\"}}},\"title\":\"Factory for deploying contracts to deterministic addresses via CREATE3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes32,bytes)\":{\"notice\":\"Deploys a contract using CREATE3\"},\"getDeployed(address,bytes32)\":{\"notice\":\"Predicts the address of a deployed contract\"}},\"notice\":\"Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CREATE3Factory.sol\":\"CREATE3Factory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":30000},\"remappings\":[]},\"sources\":{\"contracts/Bytes32AddressLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\n/// @notice Library for converting between addresses and bytes32 values.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/Bytes32AddressLib.sol)\\nlibrary Bytes32AddressLib {\\n function fromLast20Bytes(bytes32 bytesValue) internal pure returns (address) {\\n return address(uint160(uint256(bytesValue)));\\n }\\n\\n function fillLast12Bytes(address addressValue) internal pure returns (bytes32) {\\n return bytes32(bytes20(addressValue));\\n }\\n}\\n\",\"keccak256\":\"0x1fef64595d11ea4363319297e8d0e751968b6f0cd23cfd9a1046cfe80fa3c1a1\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\nimport { Bytes32AddressLib } from \\\"./Bytes32AddressLib.sol\\\";\\n\\n/// @notice Deploy to deterministic addresses without an initcode factor.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol)\\n/// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol)\\nlibrary CREATE3 {\\n using Bytes32AddressLib for bytes32;\\n\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 0 size //\\n // 0x37 | 0x37 | CALLDATACOPY | //\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x34 | 0x34 | CALLVALUE | value 0 size //\\n // 0xf0 | 0xf0 | CREATE | newContract //\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x67 | 0x67XXXXXXXXXXXXXXXX | PUSH8 bytecode | bytecode //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 bytecode //\\n // 0x52 | 0x52 | MSTORE | //\\n // 0x60 | 0x6008 | PUSH1 08 | 8 //\\n // 0x60 | 0x6018 | PUSH1 18 | 24 8 //\\n // 0xf3 | 0xf3 | RETURN | //\\n //--------------------------------------------------------------------------------//\\n bytes internal constant PROXY_BYTECODE = hex\\\"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3\\\";\\n\\n bytes32 internal constant PROXY_BYTECODE_HASH = keccak256(PROXY_BYTECODE);\\n\\n function deploy(bytes32 salt, bytes memory creationCode, uint256 value) internal returns (address deployed) {\\n bytes memory proxyChildBytecode = PROXY_BYTECODE;\\n\\n address proxy;\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Deploy a new contract with our pre-made bytecode via CREATE2.\\n // We start 32 bytes into the code to avoid copying the byte length.\\n proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), salt)\\n }\\n require(proxy != address(0), \\\"DEPLOYMENT_FAILED\\\");\\n\\n deployed = getDeployed(salt);\\n (bool success, ) = proxy.call{ value: value }(creationCode);\\n require(success && deployed.code.length != 0, \\\"INITIALIZATION_FAILED\\\");\\n }\\n\\n function getDeployed(bytes32 salt) internal view returns (address) {\\n return getDeployed(salt, address(this));\\n }\\n\\n function getDeployed(bytes32 salt, address creator) internal pure returns (address) {\\n address proxy = keccak256(\\n abi.encodePacked(\\n // Prefix:\\n bytes1(0xFF),\\n // Creator:\\n creator,\\n // Salt:\\n salt,\\n // Bytecode hash:\\n PROXY_BYTECODE_HASH\\n )\\n ).fromLast20Bytes();\\n\\n return\\n keccak256(\\n abi.encodePacked(\\n // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01)\\n // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex)\\n hex\\\"d6_94\\\",\\n proxy,\\n hex\\\"01\\\" // Nonce of the proxy contract (1)\\n )\\n ).fromLast20Bytes();\\n }\\n}\\n\",\"keccak256\":\"0xf39b6e7200f8debc79f7e17317d38416d915fa555de667867c2649497991dd4c\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity ^0.8.13;\\n\\nimport { CREATE3 } from \\\"./CREATE3.sol\\\";\\n\\nimport { ICREATE3Factory } from \\\"./ICREATE3Factory.sol\\\";\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ncontract CREATE3Factory is ICREATE3Factory {\\n /// @inheritdoc\\tICREATE3Factory\\n function deploy(bytes32 salt, bytes memory creationCode) external payable override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(msg.sender, salt));\\n return CREATE3.deploy(salt, creationCode, msg.value);\\n }\\n\\n /// @inheritdoc\\tICREATE3Factory\\n function getDeployed(address deployer, bytes32 salt) external view override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(deployer, salt));\\n return CREATE3.getDeployed(salt);\\n }\\n}\\n\",\"keccak256\":\"0xcd8982e1f03dc675e0730899ae03a6dd57784305fb58b0be29bcd43b3f63aea9\",\"license\":\"AGPL-3.0\"},\"contracts/ICREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.6.0;\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ninterface ICREATE3Factory {\\n /// @notice Deploys a contract using CREATE3\\n /// @dev The provided salt is hashed together with msg.sender to generate the final salt\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @param creationCode The creation code of the contract to deploy\\n /// @return deployed The address of the deployed contract\\n function deploy(bytes32 salt, bytes memory creationCode) external payable returns (address deployed);\\n\\n /// @notice Predicts the address of a deployed contract\\n /// @dev The provided salt is hashed together with the deployer address to generate the final salt\\n /// @param deployer The deployer account that will call deploy()\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @return deployed The address of the contract that will be deployed\\n function getDeployed(address deployer, bytes32 salt) external view returns (address deployed);\\n}\\n\",\"keccak256\":\"0x562e0200ed0c86ccaea5f7f0b948281ed4baa82ad278f7a53060dcdc63acc11a\",\"license\":\"AGPL-3.0\"}},\"version\":1}",
|
|
73
|
+
"bytecode": "0x608060405234801561001057600080fd5b50610656806100206000396000f3fe6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
74
|
+
"deployedBytecode": "0x6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
75
|
+
"devdoc": {
|
|
76
|
+
"author": "zefram.eth",
|
|
77
|
+
"kind": "dev",
|
|
78
|
+
"methods": {
|
|
79
|
+
"deploy(bytes32,bytes)": {
|
|
80
|
+
"details": "The provided salt is hashed together with msg.sender to generate the final salt",
|
|
81
|
+
"params": {
|
|
82
|
+
"creationCode": "The creation code of the contract to deploy",
|
|
83
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
84
|
+
},
|
|
85
|
+
"returns": {
|
|
86
|
+
"deployed": "The address of the deployed contract"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"getDeployed(address,bytes32)": {
|
|
90
|
+
"details": "The provided salt is hashed together with the deployer address to generate the final salt",
|
|
91
|
+
"params": {
|
|
92
|
+
"deployer": "The deployer account that will call deploy()",
|
|
93
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
94
|
+
},
|
|
95
|
+
"returns": {
|
|
96
|
+
"deployed": "The address of the contract that will be deployed"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"title": "Factory for deploying contracts to deterministic addresses via CREATE3",
|
|
101
|
+
"version": 1
|
|
102
|
+
},
|
|
103
|
+
"userdoc": {
|
|
104
|
+
"kind": "user",
|
|
105
|
+
"methods": {
|
|
106
|
+
"deploy(bytes32,bytes)": {
|
|
107
|
+
"notice": "Deploys a contract using CREATE3"
|
|
108
|
+
},
|
|
109
|
+
"getDeployed(address,bytes32)": {
|
|
110
|
+
"notice": "Predicts the address of a deployed contract"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"notice": "Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.",
|
|
114
|
+
"version": 1
|
|
115
|
+
},
|
|
116
|
+
"storageLayout": {
|
|
117
|
+
"storage": [],
|
|
118
|
+
"types": null
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
295
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"address": "0xcb566e3B6934Fa77258d68ea18E931fa75e1aaAa",
|
|
3
|
+
"abi": [
|
|
4
|
+
{
|
|
5
|
+
"inputs": [
|
|
6
|
+
{
|
|
7
|
+
"internalType": "bytes32",
|
|
8
|
+
"name": "salt",
|
|
9
|
+
"type": "bytes32"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"internalType": "bytes",
|
|
13
|
+
"name": "creationCode",
|
|
14
|
+
"type": "bytes"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"name": "deploy",
|
|
18
|
+
"outputs": [
|
|
19
|
+
{
|
|
20
|
+
"internalType": "address",
|
|
21
|
+
"name": "deployed",
|
|
22
|
+
"type": "address"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"stateMutability": "payable",
|
|
26
|
+
"type": "function"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"internalType": "address",
|
|
32
|
+
"name": "deployer",
|
|
33
|
+
"type": "address"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"internalType": "bytes32",
|
|
37
|
+
"name": "salt",
|
|
38
|
+
"type": "bytes32"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"name": "getDeployed",
|
|
42
|
+
"outputs": [
|
|
43
|
+
{
|
|
44
|
+
"internalType": "address",
|
|
45
|
+
"name": "deployed",
|
|
46
|
+
"type": "address"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"stateMutability": "view",
|
|
50
|
+
"type": "function"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"transactionHash": "0x599e47f999d42a8d8c38d3e7bcbb707ceb01849af6cd7abe0751c4959b89a8ea",
|
|
54
|
+
"receipt": {
|
|
55
|
+
"to": "0xcb566e3B6934Fa77258d68ea18E931fa75e1aaAa",
|
|
56
|
+
"from": "0x9F403140Bc0574D7d36eA472b82DAa1Bbd4eF327",
|
|
57
|
+
"contractAddress": "0xcb566e3B6934Fa77258d68ea18E931fa75e1aaAa",
|
|
58
|
+
"transactionIndex": 2037,
|
|
59
|
+
"gasUsed": "75878",
|
|
60
|
+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
61
|
+
"blockHash": "0x19d7fec1e2f01c15cfb569f9e0e1b0ac965f3527a3fed48362ea4320a77f8e9f",
|
|
62
|
+
"transactionHash": "0x599e47f999d42a8d8c38d3e7bcbb707ceb01849af6cd7abe0751c4959b89a8ea",
|
|
63
|
+
"logs": [],
|
|
64
|
+
"blockNumber": 69537845,
|
|
65
|
+
"cumulativeGasUsed": "75878",
|
|
66
|
+
"status": 1,
|
|
67
|
+
"byzantium": true
|
|
68
|
+
},
|
|
69
|
+
"args": [],
|
|
70
|
+
"numDeployments": 1,
|
|
71
|
+
"solcInputHash": "38b0c9933807d1cf29142f846a11b5fb",
|
|
72
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"creationCode\",\"type\":\"bytes\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeployed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"zefram.eth\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes32,bytes)\":{\"details\":\"The provided salt is hashed together with msg.sender to generate the final salt\",\"params\":{\"creationCode\":\"The creation code of the contract to deploy\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the deployed contract\"}},\"getDeployed(address,bytes32)\":{\"details\":\"The provided salt is hashed together with the deployer address to generate the final salt\",\"params\":{\"deployer\":\"The deployer account that will call deploy()\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the contract that will be deployed\"}}},\"title\":\"Factory for deploying contracts to deterministic addresses via CREATE3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes32,bytes)\":{\"notice\":\"Deploys a contract using CREATE3\"},\"getDeployed(address,bytes32)\":{\"notice\":\"Predicts the address of a deployed contract\"}},\"notice\":\"Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CREATE3Factory.sol\":\"CREATE3Factory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":30000},\"remappings\":[]},\"sources\":{\"contracts/Bytes32AddressLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\n/// @notice Library for converting between addresses and bytes32 values.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/Bytes32AddressLib.sol)\\nlibrary Bytes32AddressLib {\\n function fromLast20Bytes(bytes32 bytesValue) internal pure returns (address) {\\n return address(uint160(uint256(bytesValue)));\\n }\\n\\n function fillLast12Bytes(address addressValue) internal pure returns (bytes32) {\\n return bytes32(bytes20(addressValue));\\n }\\n}\\n\",\"keccak256\":\"0x1fef64595d11ea4363319297e8d0e751968b6f0cd23cfd9a1046cfe80fa3c1a1\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\nimport { Bytes32AddressLib } from \\\"./Bytes32AddressLib.sol\\\";\\n\\n/// @notice Deploy to deterministic addresses without an initcode factor.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol)\\n/// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol)\\nlibrary CREATE3 {\\n using Bytes32AddressLib for bytes32;\\n\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 0 size //\\n // 0x37 | 0x37 | CALLDATACOPY | //\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x34 | 0x34 | CALLVALUE | value 0 size //\\n // 0xf0 | 0xf0 | CREATE | newContract //\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x67 | 0x67XXXXXXXXXXXXXXXX | PUSH8 bytecode | bytecode //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 bytecode //\\n // 0x52 | 0x52 | MSTORE | //\\n // 0x60 | 0x6008 | PUSH1 08 | 8 //\\n // 0x60 | 0x6018 | PUSH1 18 | 24 8 //\\n // 0xf3 | 0xf3 | RETURN | //\\n //--------------------------------------------------------------------------------//\\n bytes internal constant PROXY_BYTECODE = hex\\\"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3\\\";\\n\\n bytes32 internal constant PROXY_BYTECODE_HASH = keccak256(PROXY_BYTECODE);\\n\\n function deploy(bytes32 salt, bytes memory creationCode, uint256 value) internal returns (address deployed) {\\n bytes memory proxyChildBytecode = PROXY_BYTECODE;\\n\\n address proxy;\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Deploy a new contract with our pre-made bytecode via CREATE2.\\n // We start 32 bytes into the code to avoid copying the byte length.\\n proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), salt)\\n }\\n require(proxy != address(0), \\\"DEPLOYMENT_FAILED\\\");\\n\\n deployed = getDeployed(salt);\\n (bool success, ) = proxy.call{ value: value }(creationCode);\\n require(success && deployed.code.length != 0, \\\"INITIALIZATION_FAILED\\\");\\n }\\n\\n function getDeployed(bytes32 salt) internal view returns (address) {\\n return getDeployed(salt, address(this));\\n }\\n\\n function getDeployed(bytes32 salt, address creator) internal pure returns (address) {\\n address proxy = keccak256(\\n abi.encodePacked(\\n // Prefix:\\n bytes1(0xFF),\\n // Creator:\\n creator,\\n // Salt:\\n salt,\\n // Bytecode hash:\\n PROXY_BYTECODE_HASH\\n )\\n ).fromLast20Bytes();\\n\\n return\\n keccak256(\\n abi.encodePacked(\\n // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01)\\n // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex)\\n hex\\\"d6_94\\\",\\n proxy,\\n hex\\\"01\\\" // Nonce of the proxy contract (1)\\n )\\n ).fromLast20Bytes();\\n }\\n}\\n\",\"keccak256\":\"0xf39b6e7200f8debc79f7e17317d38416d915fa555de667867c2649497991dd4c\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity ^0.8.13;\\n\\nimport { CREATE3 } from \\\"./CREATE3.sol\\\";\\n\\nimport { ICREATE3Factory } from \\\"./ICREATE3Factory.sol\\\";\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ncontract CREATE3Factory is ICREATE3Factory {\\n /// @inheritdoc\\tICREATE3Factory\\n function deploy(bytes32 salt, bytes memory creationCode) external payable override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(msg.sender, salt));\\n return CREATE3.deploy(salt, creationCode, msg.value);\\n }\\n\\n /// @inheritdoc\\tICREATE3Factory\\n function getDeployed(address deployer, bytes32 salt) external view override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(deployer, salt));\\n return CREATE3.getDeployed(salt);\\n }\\n}\\n\",\"keccak256\":\"0xcd8982e1f03dc675e0730899ae03a6dd57784305fb58b0be29bcd43b3f63aea9\",\"license\":\"AGPL-3.0\"},\"contracts/ICREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.6.0;\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ninterface ICREATE3Factory {\\n /// @notice Deploys a contract using CREATE3\\n /// @dev The provided salt is hashed together with msg.sender to generate the final salt\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @param creationCode The creation code of the contract to deploy\\n /// @return deployed The address of the deployed contract\\n function deploy(bytes32 salt, bytes memory creationCode) external payable returns (address deployed);\\n\\n /// @notice Predicts the address of a deployed contract\\n /// @dev The provided salt is hashed together with the deployer address to generate the final salt\\n /// @param deployer The deployer account that will call deploy()\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @return deployed The address of the contract that will be deployed\\n function getDeployed(address deployer, bytes32 salt) external view returns (address deployed);\\n}\\n\",\"keccak256\":\"0x562e0200ed0c86ccaea5f7f0b948281ed4baa82ad278f7a53060dcdc63acc11a\",\"license\":\"AGPL-3.0\"}},\"version\":1}",
|
|
73
|
+
"bytecode": "0x608060405234801561001057600080fd5b50610656806100206000396000f3fe6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
74
|
+
"deployedBytecode": "0x6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
75
|
+
"devdoc": {
|
|
76
|
+
"author": "zefram.eth",
|
|
77
|
+
"kind": "dev",
|
|
78
|
+
"methods": {
|
|
79
|
+
"deploy(bytes32,bytes)": {
|
|
80
|
+
"details": "The provided salt is hashed together with msg.sender to generate the final salt",
|
|
81
|
+
"params": {
|
|
82
|
+
"creationCode": "The creation code of the contract to deploy",
|
|
83
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
84
|
+
},
|
|
85
|
+
"returns": {
|
|
86
|
+
"deployed": "The address of the deployed contract"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"getDeployed(address,bytes32)": {
|
|
90
|
+
"details": "The provided salt is hashed together with the deployer address to generate the final salt",
|
|
91
|
+
"params": {
|
|
92
|
+
"deployer": "The deployer account that will call deploy()",
|
|
93
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
94
|
+
},
|
|
95
|
+
"returns": {
|
|
96
|
+
"deployed": "The address of the contract that will be deployed"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"title": "Factory for deploying contracts to deterministic addresses via CREATE3",
|
|
101
|
+
"version": 1
|
|
102
|
+
},
|
|
103
|
+
"userdoc": {
|
|
104
|
+
"kind": "user",
|
|
105
|
+
"methods": {
|
|
106
|
+
"deploy(bytes32,bytes)": {
|
|
107
|
+
"notice": "Deploys a contract using CREATE3"
|
|
108
|
+
},
|
|
109
|
+
"getDeployed(address,bytes32)": {
|
|
110
|
+
"notice": "Predicts the address of a deployed contract"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"notice": "Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.",
|
|
114
|
+
"version": 1
|
|
115
|
+
},
|
|
116
|
+
"storageLayout": {
|
|
117
|
+
"storage": [],
|
|
118
|
+
"types": null
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2810
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"address": "
|
|
2
|
+
"address": "0x3aCAAf60502791D199a5a5F0B173D78229eBFe32",
|
|
3
3
|
"abi": [
|
|
4
4
|
{
|
|
5
5
|
"inputs": [
|
|
@@ -50,19 +50,19 @@
|
|
|
50
50
|
"type": "function"
|
|
51
51
|
}
|
|
52
52
|
],
|
|
53
|
-
"transactionHash": "
|
|
53
|
+
"transactionHash": "0x11255ef000807525f6ece715e73568566ce6460ffa1c06c4666d223a9c0923a0",
|
|
54
54
|
"receipt": {
|
|
55
55
|
"to": null,
|
|
56
|
-
"from": "
|
|
57
|
-
"contractAddress": "
|
|
58
|
-
"transactionIndex":
|
|
56
|
+
"from": "0xc13b65f7c53Cd6db2EA205a4b574b4a0858720A6",
|
|
57
|
+
"contractAddress": "0x3aCAAf60502791D199a5a5F0B173D78229eBFe32",
|
|
58
|
+
"transactionIndex": 4,
|
|
59
59
|
"gasUsed": "400382",
|
|
60
60
|
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
61
|
-
"blockHash": "
|
|
62
|
-
"transactionHash": "
|
|
61
|
+
"blockHash": "0x74c074996bedb8e68d6a649fd428d34c287fc5c73dc774a3f22355cbfc33b8b0",
|
|
62
|
+
"transactionHash": "0x11255ef000807525f6ece715e73568566ce6460ffa1c06c4666d223a9c0923a0",
|
|
63
63
|
"logs": [],
|
|
64
|
-
"blockNumber":
|
|
65
|
-
"cumulativeGasUsed": "
|
|
64
|
+
"blockNumber": 8082704,
|
|
65
|
+
"cumulativeGasUsed": "621860",
|
|
66
66
|
"status": 1,
|
|
67
67
|
"byzantium": true
|
|
68
68
|
},
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
7849306
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
{
|
|
2
|
+
"address": "0x6Ac7bdc07A0583A362F1497252872AE6c0A5F5B8",
|
|
3
|
+
"abi": [
|
|
4
|
+
{
|
|
5
|
+
"inputs": [
|
|
6
|
+
{
|
|
7
|
+
"internalType": "bytes32",
|
|
8
|
+
"name": "salt",
|
|
9
|
+
"type": "bytes32"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"internalType": "bytes",
|
|
13
|
+
"name": "creationCode",
|
|
14
|
+
"type": "bytes"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"name": "deploy",
|
|
18
|
+
"outputs": [
|
|
19
|
+
{
|
|
20
|
+
"internalType": "address",
|
|
21
|
+
"name": "deployed",
|
|
22
|
+
"type": "address"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"stateMutability": "payable",
|
|
26
|
+
"type": "function"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"internalType": "address",
|
|
32
|
+
"name": "deployer",
|
|
33
|
+
"type": "address"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"internalType": "bytes32",
|
|
37
|
+
"name": "salt",
|
|
38
|
+
"type": "bytes32"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"name": "getDeployed",
|
|
42
|
+
"outputs": [
|
|
43
|
+
{
|
|
44
|
+
"internalType": "address",
|
|
45
|
+
"name": "deployed",
|
|
46
|
+
"type": "address"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"stateMutability": "view",
|
|
50
|
+
"type": "function"
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
"transactionHash": "0x05bdb6e726be0a5e836641a3a1257c6e34909cced98a2d0e0b11894ae2b30cbf",
|
|
54
|
+
"receipt": {
|
|
55
|
+
"to": null,
|
|
56
|
+
"from": "0xc13b65f7c53Cd6db2EA205a4b574b4a0858720A6",
|
|
57
|
+
"contractAddress": "0x6Ac7bdc07A0583A362F1497252872AE6c0A5F5B8",
|
|
58
|
+
"transactionIndex": 1,
|
|
59
|
+
"gasUsed": "400382",
|
|
60
|
+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
61
|
+
"blockHash": "0x33250c6fcb8e9501ae4da06c2b00b17a5e615eff124481010de15b707dedd0b2",
|
|
62
|
+
"transactionHash": "0x05bdb6e726be0a5e836641a3a1257c6e34909cced98a2d0e0b11894ae2b30cbf",
|
|
63
|
+
"logs": [],
|
|
64
|
+
"blockNumber": 587515,
|
|
65
|
+
"cumulativeGasUsed": "444272",
|
|
66
|
+
"status": 1,
|
|
67
|
+
"byzantium": true
|
|
68
|
+
},
|
|
69
|
+
"args": [],
|
|
70
|
+
"numDeployments": 1,
|
|
71
|
+
"solcInputHash": "38b0c9933807d1cf29142f846a11b5fb",
|
|
72
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.18+commit.87f61d96\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"creationCode\",\"type\":\"bytes\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"getDeployed\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployed\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"zefram.eth\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes32,bytes)\":{\"details\":\"The provided salt is hashed together with msg.sender to generate the final salt\",\"params\":{\"creationCode\":\"The creation code of the contract to deploy\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the deployed contract\"}},\"getDeployed(address,bytes32)\":{\"details\":\"The provided salt is hashed together with the deployer address to generate the final salt\",\"params\":{\"deployer\":\"The deployer account that will call deploy()\",\"salt\":\"The deployer-specific salt for determining the deployed contract's address\"},\"returns\":{\"deployed\":\"The address of the contract that will be deployed\"}}},\"title\":\"Factory for deploying contracts to deterministic addresses via CREATE3\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes32,bytes)\":{\"notice\":\"Deploys a contract using CREATE3\"},\"getDeployed(address,bytes32)\":{\"notice\":\"Predicts the address of a deployed contract\"}},\"notice\":\"Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/CREATE3Factory.sol\":\"CREATE3Factory\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":30000},\"remappings\":[]},\"sources\":{\"contracts/Bytes32AddressLib.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\n/// @notice Library for converting between addresses and bytes32 values.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/Bytes32AddressLib.sol)\\nlibrary Bytes32AddressLib {\\n function fromLast20Bytes(bytes32 bytesValue) internal pure returns (address) {\\n return address(uint160(uint256(bytesValue)));\\n }\\n\\n function fillLast12Bytes(address addressValue) internal pure returns (bytes32) {\\n return bytes32(bytes20(addressValue));\\n }\\n}\\n\",\"keccak256\":\"0x1fef64595d11ea4363319297e8d0e751968b6f0cd23cfd9a1046cfe80fa3c1a1\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.8.0;\\n\\nimport { Bytes32AddressLib } from \\\"./Bytes32AddressLib.sol\\\";\\n\\n/// @notice Deploy to deterministic addresses without an initcode factor.\\n/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol)\\n/// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol)\\nlibrary CREATE3 {\\n using Bytes32AddressLib for bytes32;\\n\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 0 size //\\n // 0x37 | 0x37 | CALLDATACOPY | //\\n // 0x36 | 0x36 | CALLDATASIZE | size //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 size //\\n // 0x34 | 0x34 | CALLVALUE | value 0 size //\\n // 0xf0 | 0xf0 | CREATE | newContract //\\n //--------------------------------------------------------------------------------//\\n // Opcode | Opcode + Arguments | Description | Stack View //\\n //--------------------------------------------------------------------------------//\\n // 0x67 | 0x67XXXXXXXXXXXXXXXX | PUSH8 bytecode | bytecode //\\n // 0x3d | 0x3d | RETURNDATASIZE | 0 bytecode //\\n // 0x52 | 0x52 | MSTORE | //\\n // 0x60 | 0x6008 | PUSH1 08 | 8 //\\n // 0x60 | 0x6018 | PUSH1 18 | 24 8 //\\n // 0xf3 | 0xf3 | RETURN | //\\n //--------------------------------------------------------------------------------//\\n bytes internal constant PROXY_BYTECODE = hex\\\"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3\\\";\\n\\n bytes32 internal constant PROXY_BYTECODE_HASH = keccak256(PROXY_BYTECODE);\\n\\n function deploy(bytes32 salt, bytes memory creationCode, uint256 value) internal returns (address deployed) {\\n bytes memory proxyChildBytecode = PROXY_BYTECODE;\\n\\n address proxy;\\n /// @solidity memory-safe-assembly\\n assembly {\\n // Deploy a new contract with our pre-made bytecode via CREATE2.\\n // We start 32 bytes into the code to avoid copying the byte length.\\n proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), salt)\\n }\\n require(proxy != address(0), \\\"DEPLOYMENT_FAILED\\\");\\n\\n deployed = getDeployed(salt);\\n (bool success, ) = proxy.call{ value: value }(creationCode);\\n require(success && deployed.code.length != 0, \\\"INITIALIZATION_FAILED\\\");\\n }\\n\\n function getDeployed(bytes32 salt) internal view returns (address) {\\n return getDeployed(salt, address(this));\\n }\\n\\n function getDeployed(bytes32 salt, address creator) internal pure returns (address) {\\n address proxy = keccak256(\\n abi.encodePacked(\\n // Prefix:\\n bytes1(0xFF),\\n // Creator:\\n creator,\\n // Salt:\\n salt,\\n // Bytecode hash:\\n PROXY_BYTECODE_HASH\\n )\\n ).fromLast20Bytes();\\n\\n return\\n keccak256(\\n abi.encodePacked(\\n // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01)\\n // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex)\\n hex\\\"d6_94\\\",\\n proxy,\\n hex\\\"01\\\" // Nonce of the proxy contract (1)\\n )\\n ).fromLast20Bytes();\\n }\\n}\\n\",\"keccak256\":\"0xf39b6e7200f8debc79f7e17317d38416d915fa555de667867c2649497991dd4c\",\"license\":\"AGPL-3.0\"},\"contracts/CREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity ^0.8.13;\\n\\nimport { CREATE3 } from \\\"./CREATE3.sol\\\";\\n\\nimport { ICREATE3Factory } from \\\"./ICREATE3Factory.sol\\\";\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ncontract CREATE3Factory is ICREATE3Factory {\\n /// @inheritdoc\\tICREATE3Factory\\n function deploy(bytes32 salt, bytes memory creationCode) external payable override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(msg.sender, salt));\\n return CREATE3.deploy(salt, creationCode, msg.value);\\n }\\n\\n /// @inheritdoc\\tICREATE3Factory\\n function getDeployed(address deployer, bytes32 salt) external view override returns (address deployed) {\\n // hash salt with the deployer address to give each deployer its own namespace\\n salt = keccak256(abi.encodePacked(deployer, salt));\\n return CREATE3.getDeployed(salt);\\n }\\n}\\n\",\"keccak256\":\"0xcd8982e1f03dc675e0730899ae03a6dd57784305fb58b0be29bcd43b3f63aea9\",\"license\":\"AGPL-3.0\"},\"contracts/ICREATE3Factory.sol\":{\"content\":\"// SPDX-License-Identifier: AGPL-3.0\\npragma solidity >=0.6.0;\\n\\n/// @title Factory for deploying contracts to deterministic addresses via CREATE3\\n/// @author zefram.eth\\n/// @notice Enables deploying contracts using CREATE3. Each deployer (msg.sender) has\\n/// its own namespace for deployed addresses.\\ninterface ICREATE3Factory {\\n /// @notice Deploys a contract using CREATE3\\n /// @dev The provided salt is hashed together with msg.sender to generate the final salt\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @param creationCode The creation code of the contract to deploy\\n /// @return deployed The address of the deployed contract\\n function deploy(bytes32 salt, bytes memory creationCode) external payable returns (address deployed);\\n\\n /// @notice Predicts the address of a deployed contract\\n /// @dev The provided salt is hashed together with the deployer address to generate the final salt\\n /// @param deployer The deployer account that will call deploy()\\n /// @param salt The deployer-specific salt for determining the deployed contract's address\\n /// @return deployed The address of the contract that will be deployed\\n function getDeployed(address deployer, bytes32 salt) external view returns (address deployed);\\n}\\n\",\"keccak256\":\"0x562e0200ed0c86ccaea5f7f0b948281ed4baa82ad278f7a53060dcdc63acc11a\",\"license\":\"AGPL-3.0\"}},\"version\":1}",
|
|
73
|
+
"bytecode": "0x608060405234801561001057600080fd5b50610656806100206000396000f3fe6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
74
|
+
"deployedBytecode": "0x6080604052600436106100295760003560e01c806350f1c4641461002e578063cdcb760a14610077575b600080fd5b34801561003a57600080fd5b5061004e6100493660046104a4565b61008a565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61004e610085366004610518565b6100ee565b6040517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606084901b166020820152603481018290526000906054016040516020818303038152906040528051906020012091506100e78261014c565b9392505050565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b166020820152603481018390526000906054016040516020818303038152906040528051906020012092506100e783833461015e565b60006101588230610335565b92915050565b6000806040518060400160405280601081526020017f67363d3d37363d34f03d5260086018f30000000000000000000000000000000081525090506000858251602084016000f5905073ffffffffffffffffffffffffffffffffffffffff8116610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4445504c4f594d454e545f4641494c454400000000000000000000000000000060448201526064015b60405180910390fd5b6102328661014c565b925060008173ffffffffffffffffffffffffffffffffffffffff16858760405161025c91906105f1565b60006040518083038185875af1925050503d8060008114610299576040519150601f19603f3d011682016040523d82523d6000602084013e61029e565b606091505b505090508080156102c5575073ffffffffffffffffffffffffffffffffffffffff84163b15155b61032b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e495449414c495a4154494f4e5f4641494c454400000000000000000000006044820152606401610220565b5050509392505050565b604080518082018252601081527f67363d3d37363d34f03d5260086018f30000000000000000000000000000000060209182015290517fff00000000000000000000000000000000000000000000000000000000000000918101919091527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201526000908190610412906075015b6040516020818303038152906040528051906020012090565b6040517fd69400000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606083901b1660228201527f0100000000000000000000000000000000000000000000000000000000000000603682015290915061049c906037016103f9565b949350505050565b600080604083850312156104b757600080fd5b823573ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561052b57600080fd5b82359150602083013567ffffffffffffffff8082111561054a57600080fd5b818501915085601f83011261055e57600080fd5b813581811115610570576105706104e9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105b6576105b66104e9565b816040528281528860208487010111156105cf57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561061257602081860181015185830152016105f8565b50600092019182525091905056fea26469706673582212206b6380cfdb8c09de9f5e19deecf088d43d289d060eeea9f3deea2b54d96f56d264736f6c63430008120033",
|
|
75
|
+
"devdoc": {
|
|
76
|
+
"author": "zefram.eth",
|
|
77
|
+
"kind": "dev",
|
|
78
|
+
"methods": {
|
|
79
|
+
"deploy(bytes32,bytes)": {
|
|
80
|
+
"details": "The provided salt is hashed together with msg.sender to generate the final salt",
|
|
81
|
+
"params": {
|
|
82
|
+
"creationCode": "The creation code of the contract to deploy",
|
|
83
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
84
|
+
},
|
|
85
|
+
"returns": {
|
|
86
|
+
"deployed": "The address of the deployed contract"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"getDeployed(address,bytes32)": {
|
|
90
|
+
"details": "The provided salt is hashed together with the deployer address to generate the final salt",
|
|
91
|
+
"params": {
|
|
92
|
+
"deployer": "The deployer account that will call deploy()",
|
|
93
|
+
"salt": "The deployer-specific salt for determining the deployed contract's address"
|
|
94
|
+
},
|
|
95
|
+
"returns": {
|
|
96
|
+
"deployed": "The address of the contract that will be deployed"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"title": "Factory for deploying contracts to deterministic addresses via CREATE3",
|
|
101
|
+
"version": 1
|
|
102
|
+
},
|
|
103
|
+
"userdoc": {
|
|
104
|
+
"kind": "user",
|
|
105
|
+
"methods": {
|
|
106
|
+
"deploy(bytes32,bytes)": {
|
|
107
|
+
"notice": "Deploys a contract using CREATE3"
|
|
108
|
+
},
|
|
109
|
+
"getDeployed(address,bytes32)": {
|
|
110
|
+
"notice": "Predicts the address of a deployed contract"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"notice": "Enables deploying contracts using CREATE3. Each deployer (msg.sender) has its own namespace for deployed addresses.",
|
|
114
|
+
"version": 1
|
|
115
|
+
},
|
|
116
|
+
"storageLayout": {
|
|
117
|
+
"storage": [],
|
|
118
|
+
"types": null
|
|
119
|
+
}
|
|
120
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@layerzerolabs/create3-factory",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.43",
|
|
4
4
|
"license": "AGPL-3.0",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -35,16 +35,16 @@
|
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@ethersproject/abi": "^5.7.0",
|
|
37
37
|
"@ethersproject/providers": "^5.7.0",
|
|
38
|
-
"@layerzerolabs/hardhat-config": "
|
|
39
|
-
"@layerzerolabs/hardhat-tron": "
|
|
40
|
-
"@layerzerolabs/lz-definitions": "
|
|
41
|
-
"@layerzerolabs/lz-utilities": "
|
|
42
|
-
"@layerzerolabs/ops-cli": "
|
|
43
|
-
"@layerzerolabs/ops-core": "
|
|
44
|
-
"@layerzerolabs/ops-plugin-core": "
|
|
45
|
-
"@layerzerolabs/ops-utilities": "
|
|
46
|
-
"@layerzerolabs/tsup-config-next": "
|
|
47
|
-
"@layerzerolabs/typescript-config-next": "
|
|
38
|
+
"@layerzerolabs/hardhat-config": "workspace:^",
|
|
39
|
+
"@layerzerolabs/hardhat-tron": "workspace:^",
|
|
40
|
+
"@layerzerolabs/lz-definitions": "workspace:^",
|
|
41
|
+
"@layerzerolabs/lz-utilities": "workspace:^",
|
|
42
|
+
"@layerzerolabs/ops-cli": "workspace:^",
|
|
43
|
+
"@layerzerolabs/ops-core": "workspace:^",
|
|
44
|
+
"@layerzerolabs/ops-plugin-core": "workspace:^",
|
|
45
|
+
"@layerzerolabs/ops-utilities": "workspace:^",
|
|
46
|
+
"@layerzerolabs/tsup-config-next": "workspace:^",
|
|
47
|
+
"@layerzerolabs/typescript-config-next": "workspace:^",
|
|
48
48
|
"@matterlabs/hardhat-zksync-deploy": "^0.6.5",
|
|
49
49
|
"@matterlabs/hardhat-zksync-solc": "~1.0.3",
|
|
50
50
|
"@nomicfoundation/hardhat-chai-matchers": "^1.0.6",
|
|
@@ -71,4 +71,4 @@
|
|
|
71
71
|
"publishConfig": {
|
|
72
72
|
"access": "public"
|
|
73
73
|
}
|
|
74
|
-
}
|
|
74
|
+
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
# @layerzerolabs/create3-factory
|
|
2
|
-
|
|
3
|
-
## 2.3.41
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- b01c51c: mainnet: Reya
|
|
8
|
-
|
|
9
|
-
## 2.3.40
|
|
10
|
-
|
|
11
|
-
### Patch Changes
|
|
12
|
-
|
|
13
|
-
- c631c6e: mainnet: Ape chain endpoint
|
|
14
|
-
|
|
15
|
-
## 2.3.39
|
|
16
|
-
|
|
17
|
-
### Patch Changes
|
|
18
|
-
|
|
19
|
-
- 01a6cb7: testnets: bitlayer, dm2verse, story
|
|
20
|
-
|
|
21
|
-
## 2.3.38
|
|
22
|
-
|
|
23
|
-
### Patch Changes
|
|
24
|
-
|
|
25
|
-
- 5ddfb3b: remove `OFT_DEFAULT_PROGRAM_ID` from soalan sdk
|
|
26
|
-
|
|
27
|
-
## 2.3.37
|
|
28
|
-
|
|
29
|
-
### Patch Changes
|
|
30
|
-
|
|
31
|
-
- 883c143: mainnet endpoints: Lyra, Codex, testnets: root redeploy, reya
|
|
32
|
-
|
|
33
|
-
## 2.3.36
|
|
34
|
-
|
|
35
|
-
### Patch Changes
|
|
36
|
-
|
|
37
|
-
- 291ef75: fix solana sdk
|
|
38
|
-
|
|
39
|
-
## 2.3.35
|
|
40
|
-
|
|
41
|
-
### Patch Changes
|
|
42
|
-
|
|
43
|
-
- 9913f53: new endpoints
|
|
44
|
-
- 21a267f: testnets: otherworld, abstract, root
|
|
45
|
-
|
|
46
|
-
## 2.3.35-aptos.0
|
|
47
|
-
|
|
48
|
-
### Patch Changes
|
|
49
|
-
|
|
50
|
-
- 7744b25: Add Aptos v1 support in testify, all tests passed.
|
|
51
|
-
|
|
52
|
-
## 2.3.34
|
|
53
|
-
|
|
54
|
-
### Patch Changes
|
|
55
|
-
|
|
56
|
-
- 5a99681: Fix an issue in Solana
|
|
57
|
-
|
|
58
|
-
## 2.3.33
|
|
59
|
-
|
|
60
|
-
### Patch Changes
|
|
61
|
-
|
|
62
|
-
- d9c0c10: testnets: new solana devnet, codex(evm), bahamut (evm)
|
|
63
|
-
- 1099b5f: testnets: lif3,iota,lyra,lightlink
|
|
64
|
-
|
|
65
|
-
## 2.3.32
|
|
66
|
-
|
|
67
|
-
### Patch Changes
|
|
68
|
-
|
|
69
|
-
- e846939: testnets: lif3,iota,lyra,lightlink
|
|
70
|
-
- 334b51e: endpoints, including flare mainnet
|
|
71
|
-
- 334b51e: zklink mainnet, and testnets
|
|
72
|
-
- 334b51e: testnet endpoints
|
|
73
|
-
|
|
74
|
-
## 2.3.31
|
|
75
|
-
|
|
76
|
-
### Patch Changes
|
|
77
|
-
|
|
78
|
-
- 29fecfc: testnets: zksyncsep v2 redeploy, curtis
|
|
79
|
-
|
|
80
|
-
## 2.3.30
|
|
81
|
-
|
|
82
|
-
### Patch Changes
|
|
83
|
-
|
|
84
|
-
- 32f8ebd: peaq,zircuit mainnet, and plume testnet
|
|
85
|
-
- b602b9f: peaq,zircuit mainnet, and plume testnet
|
|
86
|
-
|
|
87
|
-
## 2.3.29
|
|
88
|
-
|
|
89
|
-
### Patch Changes
|
|
90
|
-
|
|
91
|
-
- a42fff0: endpoints, including flare mainnet
|
|
92
|
-
- a42fff0: zklink mainnet, and testnets
|
|
93
|
-
- a42fff0: testnet endpoints
|
|
94
|
-
|
|
95
|
-
## 2.3.28
|
|
96
|
-
|
|
97
|
-
### Patch Changes
|
|
98
|
-
|
|
99
|
-
- 23d7ea0: endpoints, including flare mainnet
|
|
100
|
-
- 23d7ea0: zklink mainnet, and testnets
|
|
101
|
-
- 8a40261: Fix some known issues in Solana
|
|
102
|
-
- 23d7ea0: testnet endpoints
|
|
103
|
-
|
|
104
|
-
## 2.3.27
|
|
105
|
-
|
|
106
|
-
### Patch Changes
|
|
107
|
-
|
|
108
|
-
- e382bef: Update the access property of the `hardhat-tron` package
|
|
109
|
-
- d41cbe9: endpoints, including flare mainnet
|
|
110
|
-
- d41cbe9: testnet endpoints
|
|
111
|
-
|
|
112
|
-
## 2.3.26
|
|
113
|
-
|
|
114
|
-
### Patch Changes
|
|
115
|
-
|
|
116
|
-
- 92a9a2e: upgrade solana mainnet executor/uln
|
|
117
|
-
|
|
118
|
-
## 2.3.25
|
|
119
|
-
|
|
120
|
-
### Patch Changes
|
|
121
|
-
|
|
122
|
-
- 003371b: endpoints, including flare mainnet
|
|
123
|
-
- 003371b: testnet endpoints
|
|
124
|
-
|
|
125
|
-
## 2.3.24
|
|
126
|
-
|
|
127
|
-
### Patch Changes
|
|
128
|
-
|
|
129
|
-
- 255da39: Fix some known issues in the OFT SDK
|
|
130
|
-
|
|
131
|
-
## 2.3.23
|
|
132
|
-
|
|
133
|
-
### Patch Changes
|
|
134
|
-
|
|
135
|
-
- 1e42a63: bump version: default distribution tag is `latest`
|
|
136
|
-
- 43c0e8f: endpoints: bouncebit, gravity ... testnet: bartio bera chain
|
|
137
|
-
|
|
138
|
-
## 2.3.22
|
|
139
|
-
|
|
140
|
-
### Patch Changes
|
|
141
|
-
|
|
142
|
-
- 571e2c2: update oft sdk
|
|
143
|
-
|
|
144
|
-
## 2.3.21
|
|
145
|
-
|
|
146
|
-
### Patch Changes
|
|
147
|
-
|
|
148
|
-
- 2a5e6c8: fix some bugs & public lz-solana-sdk-v2 & upgrade @solana/web3.js
|
|
149
|
-
|
|
150
|
-
## 2.3.20
|
|
151
|
-
|
|
152
|
-
### Patch Changes
|
|
153
|
-
|
|
154
|
-
- 1b332c1: endpoints: taiko,joc,xchain,etherlink, testnet:bouncebit
|
|
155
|
-
|
|
156
|
-
## 2.3.19
|
|
157
|
-
|
|
158
|
-
### Patch Changes
|
|
159
|
-
|
|
160
|
-
- 5fce234: minor update & fix some bugs
|
|
161
|
-
|
|
162
|
-
## 2.3.18
|
|
163
|
-
|
|
164
|
-
### Patch Changes
|
|
165
|
-
|
|
166
|
-
- d7ddb1e: Make `solana-sdk` compatible with browsers
|
|
167
|
-
|
|
168
|
-
## 2.3.17
|
|
169
|
-
|
|
170
|
-
### Patch Changes
|
|
171
|
-
|
|
172
|
-
- 7e1d72a: minor update & fix some bugs
|
|
173
|
-
- a255697: SEI mainnet
|
|
174
|
-
|
|
175
|
-
## 2.3.16
|
|
176
|
-
|
|
177
|
-
### Patch Changes
|
|
178
|
-
|
|
179
|
-
- b0ac3fe: deploy & config oft
|
|
180
|
-
|
|
181
|
-
## 2.3.15
|
|
182
|
-
|
|
183
|
-
### Patch Changes
|
|
184
|
-
|
|
185
|
-
- 66c554b: minor update & fix some bugs
|
|
186
|
-
|
|
187
|
-
## 2.3.14
|
|
188
|
-
|
|
189
|
-
### Patch Changes
|
|
190
|
-
|
|
191
|
-
- minor update
|
|
192
|
-
|
|
193
|
-
## 2.3.13
|
|
194
|
-
|
|
195
|
-
### Patch Changes
|
|
196
|
-
|
|
197
|
-
- c294e0e: add missing artifacts
|
|
198
|
-
|
|
199
|
-
## 2.3.12
|
|
200
|
-
|
|
201
|
-
### Patch Changes
|
|
202
|
-
|
|
203
|
-
- 2761d43: minor update & fix some bugs
|
|
204
|
-
|
|
205
|
-
## 2.3.11
|
|
206
|
-
|
|
207
|
-
### Patch Changes
|
|
208
|
-
|
|
209
|
-
- a7ee3c1: mainnet endpoints, cyber, iota
|
|
210
|
-
|
|
211
|
-
## 2.3.10
|
|
212
|
-
|
|
213
|
-
### Patch Changes
|
|
214
|
-
|
|
215
|
-
- b9804e1: export tron and zksync artifacts to sdk
|
|
216
|
-
|
|
217
|
-
## 2.3.9
|
|
218
|
-
|
|
219
|
-
### Patch Changes
|
|
220
|
-
|
|
221
|
-
- c208955: minor update & fix some bugs
|
|
222
|
-
|
|
223
|
-
## 2.3.8
|
|
224
|
-
|
|
225
|
-
### Patch Changes
|
|
226
|
-
|
|
227
|
-
- e0f5d04: deploy contracts to Ebi mainnet
|
|
228
|
-
|
|
229
|
-
## 2.3.7
|
|
230
|
-
|
|
231
|
-
### Patch Changes
|
|
232
|
-
|
|
233
|
-
- 5fa1b78: fix some solana bugs
|
|
234
|
-
|
|
235
|
-
## 2.3.6
|
|
236
|
-
|
|
237
|
-
### Patch Changes
|
|
238
|
-
|
|
239
|
-
- 4a92ba6: send and receive with ULN on solana
|
|
240
|
-
|
|
241
|
-
## 2.3.5
|
|
242
|
-
|
|
243
|
-
### Patch Changes
|
|
244
|
-
|
|
245
|
-
- 20c33bb: tron v2
|
|
246
|
-
|
|
247
|
-
## 2.3.4
|
|
248
|
-
|
|
249
|
-
### Patch Changes
|
|
250
|
-
|
|
251
|
-
- efcf65d: testnet endpoint deployments: Botanix, xchain, ebi
|
|
252
|
-
|
|
253
|
-
## 2.3.3
|
|
254
|
-
|
|
255
|
-
### Patch Changes
|
|
256
|
-
|
|
257
|
-
- 44f13a2: endpoints (mainnet): Skale, Bob, Sanko
|
|
258
|
-
|
|
259
|
-
## 2.3.2
|
|
260
|
-
|
|
261
|
-
### Patch Changes
|
|
262
|
-
|
|
263
|
-
- bd47f83: testnet endpoints: Bob, Cyber
|
|
264
|
-
|
|
265
|
-
## 2.3.1
|
|
266
|
-
|
|
267
|
-
### Patch Changes
|
|
268
|
-
|
|
269
|
-
- c467a80: update RUST_TOOL version and catch errors when checking if chain is ready
|
|
270
|
-
|
|
271
|
-
## 2.3.0
|
|
272
|
-
|
|
273
|
-
### Minor Changes
|
|
274
|
-
|
|
275
|
-
- 211e282: add solana to belowzero & build solana snapshot image
|
|
276
|
-
|
|
277
|
-
## 2.2.6
|
|
278
|
-
|
|
279
|
-
### Patch Changes
|
|
280
|
-
|
|
281
|
-
- 8ecd2dc: endpoints
|
|
282
|
-
|
|
283
|
-
## 2.2.5
|
|
284
|
-
|
|
285
|
-
### Patch Changes
|
|
286
|
-
|
|
287
|
-
- fc047bc: endpoints
|
|
288
|
-
|
|
289
|
-
## 2.2.4
|
|
290
|
-
|
|
291
|
-
### Patch Changes
|
|
292
|
-
|
|
293
|
-
- f525086: add non-tron chain back to testify
|
|
294
|
-
|
|
295
|
-
## 2.2.3
|
|
296
|
-
|
|
297
|
-
### Patch Changes
|
|
298
|
-
|
|
299
|
-
- 4c53623: empty version
|
|
300
|
-
|
|
301
|
-
## 2.2.2
|
|
302
|
-
|
|
303
|
-
### Patch Changes
|
|
304
|
-
|
|
305
|
-
- b04320e: empty version
|
|
306
|
-
|
|
307
|
-
## 2.2.1
|
|
308
|
-
|
|
309
|
-
### Patch Changes
|
|
310
|
-
|
|
311
|
-
- fb15753: new endpoints. 4 testnets xlayer, form, ll1, mantasep, 2 mainnet Merlin, Degen
|
|
312
|
-
|
|
313
|
-
## 2.2.0
|
|
314
|
-
|
|
315
|
-
### Minor Changes
|
|
316
|
-
|
|
317
|
-
- aa51c78: updated sandbox chain keys for frontend
|
|
318
|
-
|
|
319
|
-
## 2.1.27
|
|
320
|
-
|
|
321
|
-
### Patch Changes
|
|
322
|
-
|
|
323
|
-
- 099e19b: internalize common functions and add public onlyOwner passthroughs
|
|
324
|
-
|
|
325
|
-
## 2.1.25
|
|
326
|
-
|
|
327
|
-
### Patch Changes
|
|
328
|
-
|
|
329
|
-
- 57fe209: wire ulnv2 during snapshot build
|
|
330
|
-
|
|
331
|
-
## 2.1.24
|
|
332
|
-
|
|
333
|
-
### Patch Changes
|
|
334
|
-
|
|
335
|
-
- c663d78: remove duplicate `sleep` func
|
|
336
|
-
|
|
337
|
-
## 2.1.23
|
|
338
|
-
|
|
339
|
-
### Patch Changes
|
|
340
|
-
|
|
341
|
-
- c2fc9fe: - update dvn config on blast chain for some dvn partners
|
|
342
|
-
- update OApp, OFT contracts
|