@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.
Files changed (31) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/SKILLS.md +51 -0
  4. package/deployments/nana-address-registry/arbitrum/JBAddressRegistry.json +177 -0
  5. package/deployments/nana-address-registry/arbitrum_sepolia/JBAddressRegistry.json +177 -0
  6. package/deployments/nana-address-registry/base/JBAddressRegistry.json +181 -0
  7. package/deployments/nana-address-registry/base_sepolia/JBAddressRegistry.json +181 -0
  8. package/deployments/nana-address-registry/ethereum/JBAddressRegistry.json +181 -0
  9. package/deployments/nana-address-registry/optimism/JBAddressRegistry.json +177 -0
  10. package/deployments/nana-address-registry/optimism_sepolia/JBAddressRegistry.json +181 -0
  11. package/deployments/nana-address-registry/sepolia/JBAddressRegistry.json +181 -0
  12. package/docs/book.css +13 -0
  13. package/docs/book.toml +12 -0
  14. package/docs/solidity.min.js +74 -0
  15. package/docs/src/README.md +164 -0
  16. package/docs/src/SUMMARY.md +6 -0
  17. package/docs/src/src/JBAddressRegistry.sol/contract.JBAddressRegistry.md +106 -0
  18. package/docs/src/src/README.md +5 -0
  19. package/docs/src/src/interfaces/IJBAddressRegistry.sol/interface.IJBAddressRegistry.md +33 -0
  20. package/docs/src/src/interfaces/README.md +4 -0
  21. package/foundry.toml +29 -0
  22. package/package.json +20 -0
  23. package/remappings.txt +1 -0
  24. package/script/Deploy.s.sol +37 -0
  25. package/script/helpers/AddressRegistryDeploymentLib.sol +68 -0
  26. package/slither-ci.config.json +10 -0
  27. package/sphinx.lock +476 -0
  28. package/src/JBAddressRegistry.sol +96 -0
  29. package/src/interfaces/IJBAddressRegistry.sol +22 -0
  30. package/test/JBAddressRegistry.t.sol +104 -0
  31. 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
+ }