@bananapus/address-registry-v6 0.0.1
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/LICENSE +21 -0
- package/README.md +44 -0
- package/SKILLS.md +51 -0
- package/deployments/nana-address-registry/arbitrum/JBAddressRegistry.json +177 -0
- package/deployments/nana-address-registry/arbitrum_sepolia/JBAddressRegistry.json +177 -0
- package/deployments/nana-address-registry/base/JBAddressRegistry.json +181 -0
- package/deployments/nana-address-registry/base_sepolia/JBAddressRegistry.json +181 -0
- package/deployments/nana-address-registry/ethereum/JBAddressRegistry.json +181 -0
- package/deployments/nana-address-registry/optimism/JBAddressRegistry.json +177 -0
- package/deployments/nana-address-registry/optimism_sepolia/JBAddressRegistry.json +181 -0
- package/deployments/nana-address-registry/sepolia/JBAddressRegistry.json +181 -0
- package/docs/book.css +13 -0
- package/docs/book.toml +12 -0
- package/docs/solidity.min.js +74 -0
- package/docs/src/README.md +164 -0
- package/docs/src/SUMMARY.md +6 -0
- package/docs/src/src/JBAddressRegistry.sol/contract.JBAddressRegistry.md +106 -0
- package/docs/src/src/README.md +5 -0
- package/docs/src/src/interfaces/IJBAddressRegistry.sol/interface.IJBAddressRegistry.md +33 -0
- package/docs/src/src/interfaces/README.md +4 -0
- package/foundry.toml +29 -0
- package/package.json +20 -0
- package/remappings.txt +1 -0
- package/script/Deploy.s.sol +37 -0
- package/script/helpers/AddressRegistryDeploymentLib.sol +68 -0
- package/slither-ci.config.json +10 -0
- package/sphinx.lock +476 -0
- package/src/JBAddressRegistry.sol +96 -0
- package/src/interfaces/IJBAddressRegistry.sol +22 -0
- package/test/JBAddressRegistry.t.sol +104 -0
- package/test/JBAddressRegistry_Fork.t.sol +78 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Bananapus
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# nana-address-registry-v5
|
|
2
|
+
|
|
3
|
+
Registry that maps contract addresses to their deployers for frontend trust verification. Supports both `create` (nonce-based) and `create2` (salt+bytecode) deployment verification.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
| Contract | Description |
|
|
8
|
+
|----------|-------------|
|
|
9
|
+
| `JBAddressRegistry` | Standalone registry. Computes deployed addresses deterministically from deployer parameters and stores the deployer in `deployerOf`. |
|
|
10
|
+
|
|
11
|
+
### Supporting Types
|
|
12
|
+
|
|
13
|
+
| Type | Description |
|
|
14
|
+
|------|-------------|
|
|
15
|
+
| `IJBAddressRegistry` | Interface exposing `deployerOf`, and both `registerAddress` overloads. |
|
|
16
|
+
|
|
17
|
+
### How It Works
|
|
18
|
+
|
|
19
|
+
Anyone can register a contract by providing its deployer and deployment parameters (`nonce` for `create`, or `salt` + `bytecode` for `create2`). The registry computes the expected address from these parameters and stores the deployer in `deployerOf[computedAddress]`. Frontend clients can then look up any contract's deployer to verify trust.
|
|
20
|
+
|
|
21
|
+
No access control is needed -- only the correct deployer+parameters can produce a given address, so registrations cannot be faked.
|
|
22
|
+
|
|
23
|
+
### Risks
|
|
24
|
+
|
|
25
|
+
Hooks have token minting access, making malicious hooks dangerous. Clients should warn project owners and users about any potential for unintended or adversarial behavior, especially for unknown hooks.
|
|
26
|
+
|
|
27
|
+
Deployers can be exploited. Clients should still communicate risk to users even when the deployer is registered.
|
|
28
|
+
|
|
29
|
+
## Install
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm install
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Develop
|
|
36
|
+
|
|
37
|
+
| Command | Description |
|
|
38
|
+
|---------|-------------|
|
|
39
|
+
| `forge build` | Compile contracts |
|
|
40
|
+
| `forge test` | Run unit tests |
|
|
41
|
+
| `FOUNDRY_PROFILE=CI forge test` | Run fork tests |
|
|
42
|
+
| `forge coverage --match-path "./src/*.sol" --report lcov --report summary` | Generate coverage report |
|
|
43
|
+
| `npm run deploy:mainnets` | Propose mainnet deployment via Sphinx |
|
|
44
|
+
| `npm run deploy:testnets` | Propose testnet deployment via Sphinx |
|
package/SKILLS.md
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# nana-address-registry-v5
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
Allows anyone to register the deployer of a contract so that frontend clients can verify trust -- primarily for Juicebox pay/cash-out hooks, but works for any contract deployed via `create` or `create2`.
|
|
6
|
+
|
|
7
|
+
## Contracts
|
|
8
|
+
|
|
9
|
+
| Contract | Role |
|
|
10
|
+
|----------|------|
|
|
11
|
+
| `JBAddressRegistry` | Standalone registry with no constructor arguments, no access control, and no external dependencies. |
|
|
12
|
+
|
|
13
|
+
## Key Functions
|
|
14
|
+
|
|
15
|
+
| Function | Contract | What it does |
|
|
16
|
+
|----------|----------|--------------|
|
|
17
|
+
| `registerAddress(address deployer, uint256 nonce)` | `JBAddressRegistry` | Registers a contract deployed via `create`. Computes address from deployer+nonce using RLP encoding. |
|
|
18
|
+
| `registerAddress(address deployer, bytes32 salt, bytes calldata bytecode)` | `JBAddressRegistry` | Registers a contract deployed via `create2`. Computes `keccak256(0xff ++ deployer ++ salt ++ keccak256(bytecode))`. |
|
|
19
|
+
| `deployerOf(address)` | `JBAddressRegistry` | Returns the registered deployer of a given address. Returns `address(0)` if not registered. |
|
|
20
|
+
|
|
21
|
+
## Integration Points
|
|
22
|
+
|
|
23
|
+
| Dependency | Import | Used For |
|
|
24
|
+
|------------|--------|----------|
|
|
25
|
+
| None | -- | This contract is fully standalone with no external dependencies. |
|
|
26
|
+
|
|
27
|
+
## Key Types
|
|
28
|
+
|
|
29
|
+
| Struct/Enum | Key Fields | Used In |
|
|
30
|
+
|-------------|------------|---------|
|
|
31
|
+
| N/A | -- | No custom types. Uses a plain `mapping(address => address)` for storage. |
|
|
32
|
+
|
|
33
|
+
## Gotchas
|
|
34
|
+
|
|
35
|
+
- The `_addressFrom` function for `create` addresses only supports nonces up to `2^32`. Higher nonces produce incorrect addresses.
|
|
36
|
+
- No overwrite protection: calling `registerAddress` with different parameters that compute to the same address will overwrite the deployer. This is safe because only the correct deployer+parameters can produce a given address.
|
|
37
|
+
- Registration is permissionless -- anyone can call `registerAddress`, not just the deployer. Security relies on deterministic address computation, not access control.
|
|
38
|
+
|
|
39
|
+
## Example Integration
|
|
40
|
+
|
|
41
|
+
```solidity
|
|
42
|
+
import {IJBAddressRegistry} from "@bananapus/address-registry-v6/src/interfaces/IJBAddressRegistry.sol";
|
|
43
|
+
|
|
44
|
+
// After deploying a hook
|
|
45
|
+
address hook = new MyPayHook();
|
|
46
|
+
registry.registerAddress(address(this), deployerNonce);
|
|
47
|
+
|
|
48
|
+
// Frontend can verify
|
|
49
|
+
address deployer = registry.deployerOf(address(hook));
|
|
50
|
+
bool trusted = deployer == KNOWN_DEPLOYER;
|
|
51
|
+
```
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "sphinx-sol-ct-artifact-1",
|
|
3
|
+
"merkleRoot": "0x73645f6fb745400c627c587b527553de94ee8472b637350f6d00ced9f9a780a6",
|
|
4
|
+
"address": "0x2d9b78cb37ca724cfb9b32cd8e9a5dc1c88bc7bb",
|
|
5
|
+
"sourceName": "src/JBAddressRegistry.sol",
|
|
6
|
+
"contractName": "JBAddressRegistry",
|
|
7
|
+
"chainId": "0xa4b1",
|
|
8
|
+
"abi": [
|
|
9
|
+
{
|
|
10
|
+
"inputs": [
|
|
11
|
+
{
|
|
12
|
+
"internalType": "address",
|
|
13
|
+
"name": "addr",
|
|
14
|
+
"type": "address"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"name": "deployerOf",
|
|
18
|
+
"outputs": [
|
|
19
|
+
{
|
|
20
|
+
"internalType": "address",
|
|
21
|
+
"name": "deployer",
|
|
22
|
+
"type": "address"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"stateMutability": "view",
|
|
26
|
+
"type": "function"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"internalType": "address",
|
|
32
|
+
"name": "deployer",
|
|
33
|
+
"type": "address"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"internalType": "uint256",
|
|
37
|
+
"name": "nonce",
|
|
38
|
+
"type": "uint256"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"name": "registerAddress",
|
|
42
|
+
"outputs": [],
|
|
43
|
+
"stateMutability": "nonpayable",
|
|
44
|
+
"type": "function"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"inputs": [
|
|
48
|
+
{
|
|
49
|
+
"internalType": "address",
|
|
50
|
+
"name": "deployer",
|
|
51
|
+
"type": "address"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"internalType": "bytes32",
|
|
55
|
+
"name": "salt",
|
|
56
|
+
"type": "bytes32"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"internalType": "bytes",
|
|
60
|
+
"name": "bytecode",
|
|
61
|
+
"type": "bytes"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"name": "registerAddress",
|
|
65
|
+
"outputs": [],
|
|
66
|
+
"stateMutability": "nonpayable",
|
|
67
|
+
"type": "function"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"anonymous": false,
|
|
71
|
+
"inputs": [
|
|
72
|
+
{
|
|
73
|
+
"indexed": true,
|
|
74
|
+
"internalType": "address",
|
|
75
|
+
"name": "addr",
|
|
76
|
+
"type": "address"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"indexed": true,
|
|
80
|
+
"internalType": "address",
|
|
81
|
+
"name": "deployer",
|
|
82
|
+
"type": "address"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"indexed": false,
|
|
86
|
+
"internalType": "address",
|
|
87
|
+
"name": "caller",
|
|
88
|
+
"type": "address"
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"name": "AddressRegistered",
|
|
92
|
+
"type": "event"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"args": [],
|
|
96
|
+
"solcInputHash": "8b17a7bbb5daaf8f633d28603c43b156",
|
|
97
|
+
"receipt": {
|
|
98
|
+
"type": "0x2",
|
|
99
|
+
"status": "0x1",
|
|
100
|
+
"cumulativeGasUsed": "0x97a63",
|
|
101
|
+
"logs": [
|
|
102
|
+
{
|
|
103
|
+
"address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
|
|
104
|
+
"topics": [
|
|
105
|
+
"0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
|
|
106
|
+
"0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
|
|
107
|
+
"0x000000000000000000000000647b5cbcca959a5b3f85d513faa2ba015576d8e9",
|
|
108
|
+
"0xba95fe9027aea09c07c844485d5aeb3f09b4a104b4e73a6d478df375e86551fa"
|
|
109
|
+
],
|
|
110
|
+
"data": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
111
|
+
"blockHash": "0x75e79bb45a2aa4e154db46e942dc249729cbcb785237473b454d394681da1e8b",
|
|
112
|
+
"blockNumber": "0x124ac98a",
|
|
113
|
+
"transactionHash": "0xda43fa76303262dbf1bf737b537e70d597e4c4c588c58b550c5150dc7f0cab61",
|
|
114
|
+
"transactionIndex": "0x1",
|
|
115
|
+
"logIndex": "0x0",
|
|
116
|
+
"removed": false
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"address": "0x14293560a2dde4ffa136a647b7a2f927b0774ab6",
|
|
120
|
+
"topics": [
|
|
121
|
+
"0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
|
|
122
|
+
"0x000000000000000000000000647b5cbcca959a5b3f85d513faa2ba015576d8e9"
|
|
123
|
+
],
|
|
124
|
+
"data": "0x",
|
|
125
|
+
"blockHash": "0x75e79bb45a2aa4e154db46e942dc249729cbcb785237473b454d394681da1e8b",
|
|
126
|
+
"blockNumber": "0x124ac98a",
|
|
127
|
+
"transactionHash": "0xda43fa76303262dbf1bf737b537e70d597e4c4c588c58b550c5150dc7f0cab61",
|
|
128
|
+
"transactionIndex": "0x1",
|
|
129
|
+
"logIndex": "0x1",
|
|
130
|
+
"removed": false
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"address": "0x647b5cbcca959a5b3f85d513faa2ba015576d8e9",
|
|
134
|
+
"topics": [
|
|
135
|
+
"0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
|
|
136
|
+
"0x73645f6fb745400c627c587b527553de94ee8472b637350f6d00ced9f9a780a6"
|
|
137
|
+
],
|
|
138
|
+
"data": "0x0000000000000000000000000000000000000000000000000000000000000001",
|
|
139
|
+
"blockHash": "0x75e79bb45a2aa4e154db46e942dc249729cbcb785237473b454d394681da1e8b",
|
|
140
|
+
"blockNumber": "0x124ac98a",
|
|
141
|
+
"transactionHash": "0xda43fa76303262dbf1bf737b537e70d597e4c4c588c58b550c5150dc7f0cab61",
|
|
142
|
+
"transactionIndex": "0x1",
|
|
143
|
+
"logIndex": "0x2",
|
|
144
|
+
"removed": false
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"address": "0x647b5cbcca959a5b3f85d513faa2ba015576d8e9",
|
|
148
|
+
"topics": [
|
|
149
|
+
"0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63",
|
|
150
|
+
"0x73645f6fb745400c627c587b527553de94ee8472b637350f6d00ced9f9a780a6"
|
|
151
|
+
],
|
|
152
|
+
"data": "0x",
|
|
153
|
+
"blockHash": "0x75e79bb45a2aa4e154db46e942dc249729cbcb785237473b454d394681da1e8b",
|
|
154
|
+
"blockNumber": "0x124ac98a",
|
|
155
|
+
"transactionHash": "0xda43fa76303262dbf1bf737b537e70d597e4c4c588c58b550c5150dc7f0cab61",
|
|
156
|
+
"transactionIndex": "0x1",
|
|
157
|
+
"logIndex": "0x3",
|
|
158
|
+
"removed": false
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"logsBloom": "0x00000000000010000040000000080000020004000000000000000000000000000000000400000000000000000040000000000000000000000000000000000000000000000000200000000000000040000000000000000000000000000000000080000000000000000800000000000000000000000000000000000000000800000800000000000100000104000000000000000000000000000020000000000000004800840000000000000000000000002200000001400000000000000004000000000002000000100000000000000000000000000000000000000000000200000000000000000008000000000000000200000000000080000000000008000000",
|
|
162
|
+
"transactionHash": "0xda43fa76303262dbf1bf737b537e70d597e4c4c588c58b550c5150dc7f0cab61",
|
|
163
|
+
"transactionIndex": "0x1",
|
|
164
|
+
"blockHash": "0x75e79bb45a2aa4e154db46e942dc249729cbcb785237473b454d394681da1e8b",
|
|
165
|
+
"blockNumber": "0x124ac98a",
|
|
166
|
+
"gasUsed": "0x97a63",
|
|
167
|
+
"effectiveGasPrice": "0xb23130",
|
|
168
|
+
"from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
|
|
169
|
+
"to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
|
|
170
|
+
"contractAddress": null
|
|
171
|
+
},
|
|
172
|
+
"bytecode": "0x608060405234801561000f575f80fd5b506108668061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063416dc73214610043578063b94417ab146100a1578063da3c8b0a146100b6575b5f80fd5b610078610051366004610759565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46100af366004610779565b6100c9565b005b6100b46100c43660046107a1565b6100e5565b5f6100d4838361019f565b90506100e081846106aa565b505050565b5f60ff60f81b858585856040516100fd929190610821565b604051908190038120610174949392916020017fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604051602081830303815290604052805190602001205f1c905061019881866106aa565b5050505050565b5f6060825f03610264576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529050610697565b607f831161031b576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602282015260f884901b7fff0000000000000000000000000000000000000000000000000000000000000016603682015260370161024e565b60ff83116103f8576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f884901b7fff0000000000000000000000000000000000000000000000000000000000000016603782015260380161024e565b61ffff83116104d6576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f085901b16603782015260390161024e565b62ffffff83116105b5576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e885901b166037820152603a0161024e565b6040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b166037820152603b0160405160208183030381529060405290505b80516020909101205f8190529392505050565b73ffffffffffffffffffffffffffffffffffffffff8281165f818152602081815260409182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948616948517905590513381527f7d6162a71c5021da669d43dd6f106854635e56ebf51a7d028ade33473c69c0fc910160405180910390a35050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610754575f80fd5b919050565b5f60208284031215610769575f80fd5b61077282610731565b9392505050565b5f806040838503121561078a575f80fd5b61079383610731565b946020939093013593505050565b5f805f80606085870312156107b4575f80fd5b6107bd85610731565b935060208501359250604085013567ffffffffffffffff808211156107e0575f80fd5b818701915087601f8301126107f3575f80fd5b813581811115610801575f80fd5b886020828501011115610812575f80fd5b95989497505060200194505050565b818382375f910190815291905056fea26469706673582212206f07b6cd7dfc40d2e815caedc2f50b5053bc3afd965325d21fc2ffeb3044113d64736f6c63430008170033",
|
|
173
|
+
"deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063416dc73214610043578063b94417ab146100a1578063da3c8b0a146100b6575b5f80fd5b610078610051366004610759565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46100af366004610779565b6100c9565b005b6100b46100c43660046107a1565b6100e5565b5f6100d4838361019f565b90506100e081846106aa565b505050565b5f60ff60f81b858585856040516100fd929190610821565b604051908190038120610174949392916020017fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604051602081830303815290604052805190602001205f1c905061019881866106aa565b5050505050565b5f6060825f03610264576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529050610697565b607f831161031b576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602282015260f884901b7fff0000000000000000000000000000000000000000000000000000000000000016603682015260370161024e565b60ff83116103f8576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f884901b7fff0000000000000000000000000000000000000000000000000000000000000016603782015260380161024e565b61ffff83116104d6576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f085901b16603782015260390161024e565b62ffffff83116105b5576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e885901b166037820152603a0161024e565b6040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b166037820152603b0160405160208183030381529060405290505b80516020909101205f8190529392505050565b73ffffffffffffffffffffffffffffffffffffffff8281165f818152602081815260409182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948616948517905590513381527f7d6162a71c5021da669d43dd6f106854635e56ebf51a7d028ade33473c69c0fc910160405180910390a35050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610754575f80fd5b919050565b5f60208284031215610769575f80fd5b61077282610731565b9392505050565b5f806040838503121561078a575f80fd5b61079383610731565b946020939093013593505050565b5f805f80606085870312156107b4575f80fd5b6107bd85610731565b935060208501359250604085013567ffffffffffffffff808211156107e0575f80fd5b818701915087601f8301126107f3575f80fd5b813581811115610801575f80fd5b886020828501011115610812575f80fd5b95989497505060200194505050565b818382375f910190815291905056fea26469706673582212206f07b6cd7dfc40d2e815caedc2f50b5053bc3afd965325d21fc2ffeb3044113d64736f6c63430008170033",
|
|
174
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AddressRegistered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"deployerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"registerAddress\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"name\":\"registerAddress\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"registerAddress(address,bytes32,bytes)\":{\"details\":\"The contract must be deployed using `create2`.The `create2` salt is determined by the deployer's logic. The deployment bytecode can be retrieved offchain (from the deployment transaction) or onchain (with `abi.encodePacked(type(deployedContract).creationCode, abi.encode(constructorArguments))`).\",\"params\":{\"bytecode\":\"The contract's deployment bytecode, including the constructor arguments.\",\"deployer\":\"The address of the contract's deployer.\",\"salt\":\"The `create2` salt used to deploy the contract.\"}},\"registerAddress(address,uint256)\":{\"details\":\"The contract must be deployed using `create`.\",\"params\":{\"deployer\":\"The address of the contract's deployer.\",\"nonce\":\"The nonce used to deploy the contract.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deployerOf(address)\":{\"notice\":\"Returns the deployer of a given contract which has been registered.\"},\"registerAddress(address,bytes32,bytes)\":{\"notice\":\"Register a deployed contract's address.\"},\"registerAddress(address,uint256)\":{\"notice\":\"Register a deployed contract's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/JBAddressRegistry.sol\":\"JBAddressRegistry\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000000},\"remappings\":[\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/packages/contracts/contracts/forge-std/src/\"]},\"sources\":{\"src/JBAddressRegistry.sol\":{\"keccak256\":\"0x938e275702ab7077760775dbadb528e18614547863daf131d9561cf6a675c7ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aae0e7665c7e284c9ff8e20ea5a03f75a25d69e28bec28596617a37fba68274b\",\"dweb:/ipfs/QmTy4UP1neJ81D8uENk5TwBcMc7c9yXw7QZ2S7ij1jcVzH\"]},\"src/interfaces/IJBAddressRegistry.sol\":{\"keccak256\":\"0x984b1f4a0301ee5a5fe44d6d228aa0a60161e0ff69509ef3d5f829c4b154e423\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c1e46de177797b8585c8030377f470ac6737ddf3496f0a3a6b16e01ad7712dab\",\"dweb:/ipfs/QmW771SQMskbmJG9GHJPMhzJGTFpU3JVj2YxFtLSaAb3Xk\"]}},\"version\":1}",
|
|
175
|
+
"gitCommit": "922b48185d8a792b44854cf6d3257339a9d73eaa",
|
|
176
|
+
"history": []
|
|
177
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
{
|
|
2
|
+
"format": "sphinx-sol-ct-artifact-1",
|
|
3
|
+
"merkleRoot": "0x77a78f2f9d08ef0cfff52c5bd2782efa240738cc07884a1541c5fbd24fb50e60",
|
|
4
|
+
"address": "0x2d9b78cb37ca724cfb9b32cd8e9a5dc1c88bc7bb",
|
|
5
|
+
"sourceName": "src/JBAddressRegistry.sol",
|
|
6
|
+
"contractName": "JBAddressRegistry",
|
|
7
|
+
"chainId": "0x66eee",
|
|
8
|
+
"abi": [
|
|
9
|
+
{
|
|
10
|
+
"inputs": [
|
|
11
|
+
{
|
|
12
|
+
"internalType": "address",
|
|
13
|
+
"name": "addr",
|
|
14
|
+
"type": "address"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"name": "deployerOf",
|
|
18
|
+
"outputs": [
|
|
19
|
+
{
|
|
20
|
+
"internalType": "address",
|
|
21
|
+
"name": "deployer",
|
|
22
|
+
"type": "address"
|
|
23
|
+
}
|
|
24
|
+
],
|
|
25
|
+
"stateMutability": "view",
|
|
26
|
+
"type": "function"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"internalType": "address",
|
|
32
|
+
"name": "deployer",
|
|
33
|
+
"type": "address"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"internalType": "uint256",
|
|
37
|
+
"name": "nonce",
|
|
38
|
+
"type": "uint256"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"name": "registerAddress",
|
|
42
|
+
"outputs": [],
|
|
43
|
+
"stateMutability": "nonpayable",
|
|
44
|
+
"type": "function"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"inputs": [
|
|
48
|
+
{
|
|
49
|
+
"internalType": "address",
|
|
50
|
+
"name": "deployer",
|
|
51
|
+
"type": "address"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"internalType": "bytes32",
|
|
55
|
+
"name": "salt",
|
|
56
|
+
"type": "bytes32"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"internalType": "bytes",
|
|
60
|
+
"name": "bytecode",
|
|
61
|
+
"type": "bytes"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"name": "registerAddress",
|
|
65
|
+
"outputs": [],
|
|
66
|
+
"stateMutability": "nonpayable",
|
|
67
|
+
"type": "function"
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"anonymous": false,
|
|
71
|
+
"inputs": [
|
|
72
|
+
{
|
|
73
|
+
"indexed": true,
|
|
74
|
+
"internalType": "address",
|
|
75
|
+
"name": "addr",
|
|
76
|
+
"type": "address"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"indexed": true,
|
|
80
|
+
"internalType": "address",
|
|
81
|
+
"name": "deployer",
|
|
82
|
+
"type": "address"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"indexed": false,
|
|
86
|
+
"internalType": "address",
|
|
87
|
+
"name": "caller",
|
|
88
|
+
"type": "address"
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"name": "AddressRegistered",
|
|
92
|
+
"type": "event"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"args": [],
|
|
96
|
+
"solcInputHash": "8b17a7bbb5daaf8f633d28603c43b156",
|
|
97
|
+
"receipt": {
|
|
98
|
+
"type": "0x2",
|
|
99
|
+
"status": "0x1",
|
|
100
|
+
"cumulativeGasUsed": "0xa5b5a",
|
|
101
|
+
"logs": [
|
|
102
|
+
{
|
|
103
|
+
"address": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
|
|
104
|
+
"topics": [
|
|
105
|
+
"0x572f161235911da04685a68c06adf558fc7e4a36909dca394650e0adc19cc93d",
|
|
106
|
+
"0x000000000000000000000000755ff2f75a0a586ecfa2b9a3c959cb662458a105",
|
|
107
|
+
"0x000000000000000000000000647b5cbcca959a5b3f85d513faa2ba015576d8e9",
|
|
108
|
+
"0xd44a65c2a0e2e4870c724829b1aedff222d9eedc1309218262007dc8169cd480"
|
|
109
|
+
],
|
|
110
|
+
"data": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
111
|
+
"blockHash": "0xc7c470624755fd67d3ee96a976fc6a4bfdfa5538bb71d1144143fbff5fc37cfb",
|
|
112
|
+
"blockNumber": "0x76bd046",
|
|
113
|
+
"transactionHash": "0x66b7fff4db496fba6ca302980ed1f8046c41502d130b2f0c4ccd6078f6f9827b",
|
|
114
|
+
"transactionIndex": "0x2",
|
|
115
|
+
"logIndex": "0x1",
|
|
116
|
+
"removed": false
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"address": "0x14293560a2dde4ffa136a647b7a2f927b0774ab6",
|
|
120
|
+
"topics": [
|
|
121
|
+
"0x6895c13664aa4f67288b25d7a21d7aaa34916e355fb9b6fae0a139a9085becb8",
|
|
122
|
+
"0x000000000000000000000000647b5cbcca959a5b3f85d513faa2ba015576d8e9"
|
|
123
|
+
],
|
|
124
|
+
"data": "0x",
|
|
125
|
+
"blockHash": "0xc7c470624755fd67d3ee96a976fc6a4bfdfa5538bb71d1144143fbff5fc37cfb",
|
|
126
|
+
"blockNumber": "0x76bd046",
|
|
127
|
+
"transactionHash": "0x66b7fff4db496fba6ca302980ed1f8046c41502d130b2f0c4ccd6078f6f9827b",
|
|
128
|
+
"transactionIndex": "0x2",
|
|
129
|
+
"logIndex": "0x2",
|
|
130
|
+
"removed": false
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"address": "0x647b5cbcca959a5b3f85d513faa2ba015576d8e9",
|
|
134
|
+
"topics": [
|
|
135
|
+
"0xa65fb05c5808f5f389d72edeaf719ce38f4cc55c1f69ca3cbfb31c21501caa07",
|
|
136
|
+
"0x77a78f2f9d08ef0cfff52c5bd2782efa240738cc07884a1541c5fbd24fb50e60"
|
|
137
|
+
],
|
|
138
|
+
"data": "0x0000000000000000000000000000000000000000000000000000000000000001",
|
|
139
|
+
"blockHash": "0xc7c470624755fd67d3ee96a976fc6a4bfdfa5538bb71d1144143fbff5fc37cfb",
|
|
140
|
+
"blockNumber": "0x76bd046",
|
|
141
|
+
"transactionHash": "0x66b7fff4db496fba6ca302980ed1f8046c41502d130b2f0c4ccd6078f6f9827b",
|
|
142
|
+
"transactionIndex": "0x2",
|
|
143
|
+
"logIndex": "0x3",
|
|
144
|
+
"removed": false
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"address": "0x647b5cbcca959a5b3f85d513faa2ba015576d8e9",
|
|
148
|
+
"topics": [
|
|
149
|
+
"0x4383d976757d67ca920616be0b6430a681ea9d3dcce8d6d61d4603ca4a9bff63",
|
|
150
|
+
"0x77a78f2f9d08ef0cfff52c5bd2782efa240738cc07884a1541c5fbd24fb50e60"
|
|
151
|
+
],
|
|
152
|
+
"data": "0x",
|
|
153
|
+
"blockHash": "0xc7c470624755fd67d3ee96a976fc6a4bfdfa5538bb71d1144143fbff5fc37cfb",
|
|
154
|
+
"blockNumber": "0x76bd046",
|
|
155
|
+
"transactionHash": "0x66b7fff4db496fba6ca302980ed1f8046c41502d130b2f0c4ccd6078f6f9827b",
|
|
156
|
+
"transactionIndex": "0x2",
|
|
157
|
+
"logIndex": "0x4",
|
|
158
|
+
"removed": false
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"logsBloom": "0x00000000000010000000000000080000020000000000000000000000000000000000000000002000000000000040000000000000000000000010000000000000000000000000200000000000000000000000000000000000000000000000000080000000000000000800000000000000000000000000000000000000000000000840000000000000000104000000000000000000000000000020000000000000004800840000000000000000000000002200000001400000000000000004000000000002000000100000000000000000000000000000010400000000000200000000000000000008000000000000000200000000000080020000000008000000",
|
|
162
|
+
"transactionHash": "0x66b7fff4db496fba6ca302980ed1f8046c41502d130b2f0c4ccd6078f6f9827b",
|
|
163
|
+
"transactionIndex": "0x2",
|
|
164
|
+
"blockHash": "0xc7c470624755fd67d3ee96a976fc6a4bfdfa5538bb71d1144143fbff5fc37cfb",
|
|
165
|
+
"blockNumber": "0x76bd046",
|
|
166
|
+
"gasUsed": "0x91462",
|
|
167
|
+
"effectiveGasPrice": "0x5f5e100",
|
|
168
|
+
"from": "0x755ff2f75a0a586ecfa2b9a3c959cb662458a105",
|
|
169
|
+
"to": "0xa2ea7657440875bf916cbfc0cfa88f13e38ad463",
|
|
170
|
+
"contractAddress": null
|
|
171
|
+
},
|
|
172
|
+
"bytecode": "0x608060405234801561000f575f80fd5b506108668061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063416dc73214610043578063b94417ab146100a1578063da3c8b0a146100b6575b5f80fd5b610078610051366004610759565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46100af366004610779565b6100c9565b005b6100b46100c43660046107a1565b6100e5565b5f6100d4838361019f565b90506100e081846106aa565b505050565b5f60ff60f81b858585856040516100fd929190610821565b604051908190038120610174949392916020017fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604051602081830303815290604052805190602001205f1c905061019881866106aa565b5050505050565b5f6060825f03610264576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529050610697565b607f831161031b576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602282015260f884901b7fff0000000000000000000000000000000000000000000000000000000000000016603682015260370161024e565b60ff83116103f8576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f884901b7fff0000000000000000000000000000000000000000000000000000000000000016603782015260380161024e565b61ffff83116104d6576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f085901b16603782015260390161024e565b62ffffff83116105b5576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e885901b166037820152603a0161024e565b6040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b166037820152603b0160405160208183030381529060405290505b80516020909101205f8190529392505050565b73ffffffffffffffffffffffffffffffffffffffff8281165f818152602081815260409182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948616948517905590513381527f7d6162a71c5021da669d43dd6f106854635e56ebf51a7d028ade33473c69c0fc910160405180910390a35050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610754575f80fd5b919050565b5f60208284031215610769575f80fd5b61077282610731565b9392505050565b5f806040838503121561078a575f80fd5b61079383610731565b946020939093013593505050565b5f805f80606085870312156107b4575f80fd5b6107bd85610731565b935060208501359250604085013567ffffffffffffffff808211156107e0575f80fd5b818701915087601f8301126107f3575f80fd5b813581811115610801575f80fd5b886020828501011115610812575f80fd5b95989497505060200194505050565b818382375f910190815291905056fea26469706673582212206f07b6cd7dfc40d2e815caedc2f50b5053bc3afd965325d21fc2ffeb3044113d64736f6c63430008170033",
|
|
173
|
+
"deployedBytecode": "0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c8063416dc73214610043578063b94417ab146100a1578063da3c8b0a146100b6575b5f80fd5b610078610051366004610759565b5f6020819052908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100b46100af366004610779565b6100c9565b005b6100b46100c43660046107a1565b6100e5565b5f6100d4838361019f565b90506100e081846106aa565b505050565b5f60ff60f81b858585856040516100fd929190610821565b604051908190038120610174949392916020017fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018401526015830152603582015260550190565b604051602081830303815290604052805190602001205f1c905061019881866106aa565b5050505050565b5f6060825f03610264576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f800000000000000000000000000000000000000000000000000000000000000060368201526037015b6040516020818303038152906040529050610697565b607f831161031b576040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b16602282015260f884901b7fff0000000000000000000000000000000000000000000000000000000000000016603682015260370161024e565b60ff83116103f8576040517fd70000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f8100000000000000000000000000000000000000000000000000000000000000603682015260f884901b7fff0000000000000000000000000000000000000000000000000000000000000016603782015260380161024e565b61ffff83116104d6576040517fd80000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f820000000000000000000000000000000000000000000000000000000000000060368201527fffff00000000000000000000000000000000000000000000000000000000000060f085901b16603782015260390161024e565b62ffffff83116105b5576040517fd90000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f830000000000000000000000000000000000000000000000000000000000000060368201527fffffff000000000000000000000000000000000000000000000000000000000060e885901b166037820152603a0161024e565b6040517fda0000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606086901b1660228201527f840000000000000000000000000000000000000000000000000000000000000060368201527fffffffff0000000000000000000000000000000000000000000000000000000060e085901b166037820152603b0160405160208183030381529060405290505b80516020909101205f8190529392505050565b73ffffffffffffffffffffffffffffffffffffffff8281165f818152602081815260409182902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948616948517905590513381527f7d6162a71c5021da669d43dd6f106854635e56ebf51a7d028ade33473c69c0fc910160405180910390a35050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610754575f80fd5b919050565b5f60208284031215610769575f80fd5b61077282610731565b9392505050565b5f806040838503121561078a575f80fd5b61079383610731565b946020939093013593505050565b5f805f80606085870312156107b4575f80fd5b6107bd85610731565b935060208501359250604085013567ffffffffffffffff808211156107e0575f80fd5b818701915087601f8301126107f3575f80fd5b813581811115610801575f80fd5b886020828501011115610812575f80fd5b95989497505060200194505050565b818382375f910190815291905056fea26469706673582212206f07b6cd7dfc40d2e815caedc2f50b5053bc3afd965325d21fc2ffeb3044113d64736f6c63430008170033",
|
|
174
|
+
"metadata": "{\"compiler\":{\"version\":\"0.8.23+commit.f704f362\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AddressRegistered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"deployerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"registerAddress\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"deployer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"bytecode\",\"type\":\"bytes\"}],\"name\":\"registerAddress\",\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"registerAddress(address,bytes32,bytes)\":{\"details\":\"The contract must be deployed using `create2`.The `create2` salt is determined by the deployer's logic. The deployment bytecode can be retrieved offchain (from the deployment transaction) or onchain (with `abi.encodePacked(type(deployedContract).creationCode, abi.encode(constructorArguments))`).\",\"params\":{\"bytecode\":\"The contract's deployment bytecode, including the constructor arguments.\",\"deployer\":\"The address of the contract's deployer.\",\"salt\":\"The `create2` salt used to deploy the contract.\"}},\"registerAddress(address,uint256)\":{\"details\":\"The contract must be deployed using `create`.\",\"params\":{\"deployer\":\"The address of the contract's deployer.\",\"nonce\":\"The nonce used to deploy the contract.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deployerOf(address)\":{\"notice\":\"Returns the deployer of a given contract which has been registered.\"},\"registerAddress(address,bytes32,bytes)\":{\"notice\":\"Register a deployed contract's address.\"},\"registerAddress(address,uint256)\":{\"notice\":\"Register a deployed contract's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/JBAddressRegistry.sol\":\"JBAddressRegistry\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000000},\"remappings\":[\"@eth-optimism/=node_modules/@eth-optimism/\",\"@openzeppelin/=node_modules/@openzeppelin/\",\"@sphinx-labs/contracts/=lib/sphinx/packages/contracts/contracts/foundry/\",\"ds-test/=lib/forge-std/lib/ds-test/src/\",\"forge-std/=lib/forge-std/src/\",\"hardhat/=node_modules/hardhat/\",\"solmate/=node_modules/solmate/\",\"sphinx/=lib/sphinx/packages/contracts/contracts/forge-std/src/\"]},\"sources\":{\"src/JBAddressRegistry.sol\":{\"keccak256\":\"0x938e275702ab7077760775dbadb528e18614547863daf131d9561cf6a675c7ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://aae0e7665c7e284c9ff8e20ea5a03f75a25d69e28bec28596617a37fba68274b\",\"dweb:/ipfs/QmTy4UP1neJ81D8uENk5TwBcMc7c9yXw7QZ2S7ij1jcVzH\"]},\"src/interfaces/IJBAddressRegistry.sol\":{\"keccak256\":\"0x984b1f4a0301ee5a5fe44d6d228aa0a60161e0ff69509ef3d5f829c4b154e423\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c1e46de177797b8585c8030377f470ac6737ddf3496f0a3a6b16e01ad7712dab\",\"dweb:/ipfs/QmW771SQMskbmJG9GHJPMhzJGTFpU3JVj2YxFtLSaAb3Xk\"]}},\"version\":1}",
|
|
175
|
+
"gitCommit": "922b48185d8a792b44854cf6d3257339a9d73eaa",
|
|
176
|
+
"history": []
|
|
177
|
+
}
|