Skip to content

feat: add Arbitrum GRT bridge (rebased, bridge only) #699

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 104 commits into from
Nov 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
176541c
feat: add Arbitrum GRT bridge
pcarranzav Mar 23, 2022
8e356c0
fix: improve onlyL2Counterpart error message
tmigone Sep 7, 2022
da4619d
chore: remove unused dependency in GraphTokenUpgradeable
pcarranzav Sep 15, 2022
3f6c55e
Sync: l2-testnet > pcv/l2-bridge (#704)
tmigone Sep 22, 2022
e34d54b
chore: syncAllContracts calls in all config files
pcarranzav Aug 11, 2022
41683ec
chore: set gateway pause guardians in config, remove addMinter in fix…
pcarranzav Aug 11, 2022
bd35a9b
fix(config): param name in L2GraphToken initializer
pcarranzav Sep 23, 2022
80ef55a
fix: no minters for L2GraphToken yet
pcarranzav Sep 23, 2022
b13a85f
test: ping local node before continuing
pcarranzav Sep 26, 2022
554e010
test: add timeout for evm instance
pcarranzav Sep 26, 2022
334a82e
ci: run e2e on local nitro node
pcarranzav Sep 9, 2022
30784c8
fix: use localnitrol1
pcarranzav Sep 9, 2022
48df694
fix(e2e): use no-blockscout
pcarranzav Sep 9, 2022
b44d3d0
ci: use pre-built images
tmigone Sep 12, 2022
309d660
ci: add L2 e2e tests
tmigone Sep 12, 2022
78691c2
Update .github/workflows/e2e.yml
tmigone Sep 26, 2022
105b4f0
test(e2e): in L2, GraphToken has no minters for now
pcarranzav Sep 26, 2022
7bd0ab2
fix: add reentrancy guard to L2GraphTokenGateway
pcarranzav Sep 27, 2022
1f32176
fix(L2GraphTokenGateway): only call a specific onTokenTransfer functi…
pcarranzav Sep 28, 2022
394458d
fix: apply suggestions from code review
pcarranzav Sep 28, 2022
126d124
test: add test for calling contracts that don't implement onTokenTran…
pcarranzav Sep 28, 2022
8aa3bd6
test: use codecov action v3
pcarranzav Sep 28, 2022
323bdf8
test: fix race condition in BridgeEscrow tests
pcarranzav Oct 4, 2022
08cddfa
chore: provide sane defaults for graph config (#727)
tmigone Oct 4, 2022
7b38314
test: don't use nc to check if evm is running
pcarranzav Oct 5, 2022
1d5dde2
fix: prevent unpausing gateways if they're not configured (OZ M-01 fr…
pcarranzav Oct 20, 2022
ff11ec2
fix: use separate task to unpause bridge
pcarranzav Oct 20, 2022
6d4a0d7
fix(e2e): gateways start paused
pcarranzav Oct 21, 2022
16dc44e
fix: validate Arbitrum addresses and callhook senders are contracts (…
pcarranzav Oct 20, 2022
2dfacb6
fix: remove unnecessary L2 gas check (OZ N-01 from #700)
pcarranzav Oct 21, 2022
fa52952
fix: add storage gaps to GraphTokenGateway and GraphTokenUpgradeable …
pcarranzav Oct 21, 2022
bcb4802
fix: ensure l2Counterpart is nonzero (C4 M-201)
pcarranzav Oct 21, 2022
85312a0
fix: ensure contracts are only initialized once (C4 M-149)
pcarranzav Oct 21, 2022
2c4ac9d
fix(c4-117-g03): state variables should be cached in stack variables
tmigone Oct 24, 2022
76865a4
fix(c4-117-g05): require()/revert() strings longer than 32 bytes cost…
tmigone Oct 24, 2022
18afb3a
fix(c4-117-g06): keccak256() should only need to be called on a speci…
tmigone Oct 24, 2022
ee5d3cb
fix(c4-117-g11): using > 0 costs more gas than != 0 when used on a ui…
tmigone Oct 24, 2022
71314dd
fix(c4-117-g12): splitting require() statements that use && saves gas
tmigone Oct 24, 2022
d5aece4
fix(c4-117-g15): require() or revert() statements that check input ar…
tmigone Oct 24, 2022
2ad9f4e
fix(c4-6-g07): expressions for constant values such as a call to kecc…
tmigone Oct 24, 2022
e0440a8
fix(c4-6-g08): duplicated require()/revert() checks should be refacto…
tmigone Oct 24, 2022
3805ca9
fix(c4-6-13): use calldata instead of memory for function parameters
tmigone Oct 24, 2022
54157a7
fix(c4-86-g07): emitting or returning storage values
tmigone Oct 24, 2022
7d29d6d
fix(c4-172-g02): set allowance to 0 instead of decreasing allowance b…
tmigone Oct 24, 2022
534d224
fix(c4-287-g01): remove unused local variable
tmigone Oct 24, 2022
0b7ad55
fix(c4-272): remove unnecessary use of safe math
tmigone Oct 24, 2022
d091781
fix(c4-272): remove unnecessary usage of safemath
tmigone Oct 24, 2022
1f85e12
fix: further optimize governed contract
tmigone Oct 24, 2022
27902cc
fix: add visibility to managed immutable vars
tmigone Oct 24, 2022
e3a668e
fix: update e2e tests to new error messages
tmigone Oct 24, 2022
23f9dad
fix: avoid variable shadowing (C4 QA)
pcarranzav Oct 24, 2022
d90a2f3
fix: improve NatSpec and a few other details (C4 QA)
pcarranzav Oct 24, 2022
289f328
fix: typos in L1GraphTokenGateway (C4 QA)
pcarranzav Oct 24, 2022
d89c7a7
fix: make public functions external in GraphProxyAdmin (C4 QA)
pcarranzav Oct 24, 2022
a42bcbc
fix: make nonReentrant the first modifier (C4 QA)
pcarranzav Oct 24, 2022
ba1a870
fix: use underscore for private variables (C4 QA)
pcarranzav Oct 24, 2022
751240d
fix: emit the correct old admin in _setAdmin (C4 QA)
pcarranzav Oct 24, 2022
e789403
fix: prefer the term 'allowlist' for callhook senders
pcarranzav Oct 24, 2022
8d73fc3
fix: check deadline before recovering signature (C4 QA)
pcarranzav Oct 24, 2022
c74885f
fix: add some missing revert strings (C4 QA)
pcarranzav Oct 24, 2022
cc78a5c
fix: dont allow the router to be allowlisted (C4 QA)
pcarranzav Oct 24, 2022
38fa468
fix: mark some non-deployable contracts as abstract (C4 QA)
pcarranzav Oct 24, 2022
db2a17c
fix(Controller): mark a function that was public as external
pcarranzav Oct 24, 2022
dfd0a24
fix: use upgradeable OZ contracts (C4 QA)
pcarranzav Oct 24, 2022
eeb4bd0
fix: use explicit imports (C4 QA)
pcarranzav Oct 24, 2022
ae03579
fix: standardize function order in some contracts (C4 QA)
pcarranzav Oct 24, 2022
19928cc
fix: whitelist to allowlist
tmigone Oct 25, 2022
4bea094
fix: adjust some revert strings
pcarranzav Oct 25, 2022
ce0d0a3
test: fix revert strings
pcarranzav Oct 25, 2022
caf5ab5
fix: remove unneeded empty bytes from callhook data
pcarranzav Oct 31, 2022
598ecc3
chore: update arbitrum sdk to 3.0-rc1
tmigone Sep 26, 2022
a7ba535
fix(task): accept ownership only if pending owner matches
tmigone Sep 26, 2022
0aed5eb
feat(task): split unpause task into protocol and bridge tasks
tmigone Sep 26, 2022
a3fa719
feat(e2e): run L1 and L2 together in e2e tests
tmigone Sep 26, 2022
ad11bdf
feat(e2e): fetch deployment data from testnodes
tmigone Sep 27, 2022
e9cab36
chore: update README.md
tmigone Sep 27, 2022
7eb7ba2
fix(e2e): allow skipping bridge tests
tmigone Sep 27, 2022
1436a0c
fix(e2e): update github action to multi layer e2e tests
tmigone Sep 27, 2022
d9977b5
fix(e2e): bump gas limit for l2 scenario txs
tmigone Sep 28, 2022
6a9a999
chore(e2e): run nitro addressbook setup only on localnitro networks
tmigone Sep 28, 2022
9729f43
fix: allow e2e to run only on L2
tmigone Oct 3, 2022
85c2964
fix(e2e): use fixed gasLimit for CI send to L2
tmigone Oct 3, 2022
ee8c7f3
fix(e2e): use fixed gasLimit for redeem in CI
tmigone Oct 6, 2022
967e085
e2e: add bridge e2e tests (#720)
tmigone Oct 31, 2022
ae1d70b
fix: gateways now unpaused on e2e
tmigone Nov 2, 2022
60afb9e
Merge branch 'dev' into l2-public-testnet
abarmat Nov 2, 2022
b1be78b
chore: fix automerge wrong import
tmigone Oct 31, 2022
ccaf653
fix: remove unused task folder
abarmat Nov 2, 2022
dff1845
fix: wrong imports and params
abarmat Nov 2, 2022
5f1a3c4
fix: additional post merge fixes
tmigone Nov 3, 2022
32fc123
fix: update nitro task for nitro v2.0.8
tmigone Nov 3, 2022
5daa3c1
chore: add deployed addresses for L2 public testnet
abarmat Nov 4, 2022
fb40819
fix: minor tweaks to e2e
tmigone Nov 7, 2022
1dd6f06
chore: bump npm package version to v2.0.0-testnet
tmigone Nov 7, 2022
d8fed24
fix(L1GraphTokenGateway): add a counterpartGateway getter for Router …
pcarranzav Nov 14, 2022
93f6939
Merge branch 'pcv/l2-bridge' into l2-public-testnet
pcarranzav Nov 23, 2022
dcc2cec
fix(e2e): no need to explicitly disable secure accounts
pcarranzav Nov 23, 2022
f45173c
Merge remote-tracking branch 'origin/dev' into l2-public-testnet
pcarranzav Nov 23, 2022
12e54e5
chore: bump @arbitrum/sdk to 3.0.0
pcarranzav Nov 23, 2022
43e719b
chore: bump package version to 2.0.0
pcarranzav Nov 23, 2022
4e2872b
fix: set flat bonding curve in all L2 configs
pcarranzav Nov 23, 2022
51c0441
test(e2e): reenable finalizeInboundTransfer revert check
pcarranzav Nov 23, 2022
aa85104
fix: use correct governance addresses on Arbitrum One
pcarranzav Nov 23, 2022
d35acb6
Merge pull request #751 from graphprotocol/l2-public-testnet
pcarranzav Nov 23, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
- name: Run tests
run: yarn test:coverage
- name: Upload coverage report
uses: codecov/codecov-action@v2
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.json
Expand Down
8 changes: 7 additions & 1 deletion .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,10 @@ jobs:
- name: Install packages
run: yarn install --non-interactive --frozen-lockfile
- name: Run e2e tests
run: ADDRESS_BOOK=addresses.json yarn test:e2e
run: |
git clone https://github.com/edgeandnode/nitro
pushd nitro
git submodule update --init --recursive
./test-node.bash --init --no-blockscout --detach
popd
L1_NETWORK=localnitrol1 L2_NETWORK=localnitrol2 yarn test:e2e
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,11 @@ bin/
/reports
coverage.json

# Local test files
addresses-local.json
localNetwork.json
arbitrum-addresses-local.json
tx-*.log

# Keys
.keystore
2 changes: 1 addition & 1 deletion .solcover.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const skipFiles = ['bancor', 'ens', 'erc1056']
const skipFiles = ['bancor', 'ens', 'erc1056', 'arbitrum', 'tests/arbitrum']

module.exports = {
providerOptions: {
Expand Down
43 changes: 29 additions & 14 deletions TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,37 +33,52 @@ There are several types of e2e tests which can be run separately:
- Read and write interactions with the blockchain. _Requires an account with sufficient balance!_
- Example: a test validating that a user can add signal to a subgraph.

### Hardhat local node
### Hardhat local node (L1)

To run all e2e tests against a hardhat local node run:
It can be useful to run E2E tests against a fresh protocol deployment on L1, this can be done with the following:

```bash
yarn test:e2e
L1_NETWORK=localhost yarn test:e2e
```

The command will perform the following actions:
The command will:
- start a hardhat local node
- deploy the L1 protocol
- configure the new L1 deployment
- Run all L1 e2e tests

- Start a hardhat node (localhost)
- Run `migrate:accounts` hardhat task to create keys for all protocol roles (deployer, governor, arbiter, etc). This currently doesn't support multisig accounts.
- Run `migrate` hardhat task to deploy the protocol
- Run `migrate:ownership` hardhat task to transfer ownership of governed contracts to the governor
- Run `migrate:unpause` to unpause the protocol
- Run `e2e` hardhat task to run all deployment tests (config and init)
- Run `e2e:scenario` hardhat task to run a scenario
### Arbitrum Nitro testnodes (L1/L2)

If you want to test the protocol on an L1/L2 setup, you can run:

```bash
L1_NETWORK=localnitrol1 L2_NETWORK=localnitrol2 yarn test:e2e
```

In this case the command will:
- deploy the L1 protocol
- configure the new L1 deployment
- deploy the L2 protocol
- configure the new L2 deployment
- configure the L1/L2 bridge
- Run all L1 e2e tests
- Run all L2 e2e tests

Note that you'll need to setup the testnodes before running the tests. See [Quick Setup](https://github.com/edgeandnode/nitro#quick-setup) for details on how to do this.

### Other networks

To run tests against a live testnet or even mainnet run:

```bash
# All e2e tests
npx hardhat e2e --network <network> --graph-config config/graph.<network>.yml
ARBITRUM_ADDRESS_BOOK=<arbitrum-address-book> npx hardhat e2e --network <network> --l1-graph-config config/graph.<l1-network>.yml --l2-graph-config config/graph.<l2-network>.yml

# Only deployment config tests
npx hardhat e2e:config --network <network> --graph-config config/graph.<network>.yml
ARBITRUM_ADDRESS_BOOK=<arbitrum-address-book> npx hardhat e2e:config --network <network> --l1-graph-config config/graph.<l1-network>.yml --l2-graph-config config/graph.<l2-network>.yml

# Only deployment init tests
npx hardhat e2e:init --network <network> --graph-config config/graph.<network>.yml
ARBITRUM_ADDRESS_BOOK=<arbitrum-address-book> npx hardhat e2e:init --network <network> --l1-graph-config config/graph.<l1-network>.yml --l2-graph-config config/graph.<l2-network>.yml

# Only a specific scenario
npx hardhat e2e:scenario <scenario> --network <network> --graph-config config/graph.<network>.yml
Expand Down
238 changes: 238 additions & 0 deletions addresses.json
Original file line number Diff line number Diff line change
Expand Up @@ -496,6 +496,34 @@
},
"IEthereumDIDRegistry": {
"address": "0xdCa7EF03e98e0DC2B855bE647C39ABe984fcF21B"
},
"BridgeEscrow": {
"address": "0x8e4145358af77516B886D865e2EcacC0Fd832B75",
"initArgs": ["0x48eD7AfbaB432d1Fc6Ea84EEC70E745d9DAcaF3B"],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0x190ea3c8f731a77a8fd1cbce860f9561f233adeafe559b33201b7d21ccd298cf",
"proxy": true,
"implementation": {
"address": "0xDD569E05D54fBF5d02fE4a26aC03Ea00317A0A2e",
"creationCodeHash": "0x6a1fc897c0130a1c99221cde1938d247de13a0861111ac47ad81c691f323df1a",
"runtimeCodeHash": "0xc8e31a4ebea0c3e43ceece974071ba0b6db2bed6725190795e07a2d369d2a8ab",
"txHash": "0x369038dcc8d8e70d40782dd761a82cc453c7a4f1939284c724a5a72119e3e566"
}
},
"L1GraphTokenGateway": {
"address": "0xc82fF7b51c3e593D709BA3dE1b3a0d233D1DEca1",
"initArgs": ["0x48eD7AfbaB432d1Fc6Ea84EEC70E745d9DAcaF3B"],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0x4a06731591df5c5f77c11bf8df7851234873eb6727fbbc93f5595a223f7cf3fc",
"proxy": true,
"implementation": {
"address": "0x06A7A68d0D0D496693508ad3f50A8EA962333B7D",
"creationCodeHash": "0x9dac8130793923c7f35f3943b755b7a88e2de9a25d0ae5c0b8cb020b6479151a",
"runtimeCodeHash": "0xcd798129b77d26c0b29369138d2d8dd413fcf6cb9b3838c5f95f50d9839a388a",
"txHash": "0xa4d75169094cd8601ec507234695d83042e888ec2ab49b0ce150d7aae908d895"
}
}
},
"1337": {
Expand Down Expand Up @@ -692,5 +720,215 @@
"runtimeCodeHash": "0x07012b5692ec6cbeb7a6986e061fc5026a2f76545b07bfd9182985de002fa281",
"txHash": "0xe3d870434e38ee37142a86e0fc54063df59c02c3b70135f070c3a1025c5e8246"
}
},
"421613": {
"GraphProxyAdmin": {
"address": "0x4037466bb242f51575d32E8B1be693b3E5Cd1386",
"creationCodeHash": "0x68b304ac6bce7380d5e0f6b14a122f628bffebcc75f8205cb60f0baf578b79c3",
"runtimeCodeHash": "0x8d9ba87a745cf82ab407ebabe6c1490197084d320efb6c246d94bcc80e804417",
"txHash": "0x9c4d5f8c0ab5a5bc36b0a063ab1ff04372ce7d917c0b200b94544b5da4f0230d"
},
"BancorFormula": {
"address": "0x71319060b9fdeD6174b6368bE04F9A1b7c9aCe48",
"creationCodeHash": "0x7ae36017eddb326ddd79c7363781366121361d42fdb201cf57c57424eede46f4",
"runtimeCodeHash": "0xed6701e196ad93718e28c2a2a44d110d9e9906085bcfe4faf4f6604b08f0116c",
"txHash": "0x7fe8cabb7a4fe56311591aa8d68d6c82cb0d5c232fc5aaf28bed4d1ece0e42e5"
},
"Controller": {
"address": "0x7f734E995010Aa8d28b912703093d532C37b6EAb",
"creationCodeHash": "0x798f913fbaa1b2547c917e3dc31679089ab27cba442c511c159803acdba28c15",
"runtimeCodeHash": "0x00ae0824f79c4e48d2d23a8d4e6d075f04f44f3ea30a4f4305c345bb98117c62",
"txHash": "0x6213da3e6367ef47cd6e1fe23e4d83296f16153a64236a5c91f865f2ec84c089"
},
"EpochManager": {
"address": "0x8ECedc7631f4616D7f4074f9fC9D0368674794BE",
"initArgs": ["0x7f734E995010Aa8d28b912703093d532C37b6EAb", "554"],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0x62b0d6b8556be9443397ad1f6030fdc47b1a4a3ebcc63f34cdf4091420aec84b",
"proxy": true,
"implementation": {
"address": "0xAaB195Ed1B445A2A0E357494d9036bC746227AE2",
"creationCodeHash": "0x83bc0b08dbe1a9259666ec209f06223863f7bb9cfbf917a2d4b795c771a727fe",
"runtimeCodeHash": "0xed60261c6dc84ebc16830c36f3ee370a92802601d5a2fe1c3c19f5120dcbc2eb",
"txHash": "0xd4f8780490f63432580e3dd5b2b4d9b39e904e8b4ac5cfd23540658cbafe449d"
}
},
"L2GraphToken": {
"address": "0x18C924BD5E8b83b47EFaDD632b7178E2Fd36073D",
"initArgs": ["0xEfc519BEd6a43a14f1BBBbA9e796C4931f7A5540"],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0x7ec14b524141af953959b537c1acbea9b49b12ee906563a6172123b09ab3d1f6",
"proxy": true,
"implementation": {
"address": "0x5dcAcF820D7b9F0640e8a23a5a857675A774C34a",
"creationCodeHash": "0x6c4146427aafa7375a569154be95c8c931bf83aab0315706dd78bdf79c889e4c",
"runtimeCodeHash": "0x004371d1d80011906953dcba17c648503fc94b94e1e0365c8d8c706ff91f93e9",
"txHash": "0xb748498a2ebc90e20dc8da981be832f4e00f08ea9ff289880738705e45d6aeca"
}
},
"GraphCurationToken": {
"address": "0x2B757ad83e4ed51ecaE8D4dC9AdE8E3Fa29F7BdC",
"creationCodeHash": "0x1ee42ee271cefe20c33c0de904501e618ac4b56debca67c634d0564cecea9ff2",
"runtimeCodeHash": "0x340e8f378c0117b300f3ec255bc5c3a273f9ab5bd2940fa8eb3b5065b21f86dc",
"txHash": "0x1aa753cd01fa4505c71f6866dae35faee723d181141ed91b6e5cf3082ee90f9b"
},
"ServiceRegistry": {
"address": "0x07ECDD4278D83Cd2425cA86256634f666b659e53",
"initArgs": ["0x7f734E995010Aa8d28b912703093d532C37b6EAb"],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0x8a13420fdc91139297ab1497fbf5b443c156bbc7b9d2a1ac97fb9f23abde2723",
"proxy": true,
"implementation": {
"address": "0xd18D4B4e84eA4713E04060c93bD079A974BE6C4a",
"creationCodeHash": "0x50808e8cce93cf78a23c9e6dd7984356bd2bd93be30b358982909140dd61f6ff",
"runtimeCodeHash": "0xaef79c87f7e80107c0dc568cf1f8950459b5174ee3aa565ec487556a655e71db",
"txHash": "0x2d6043d89a5f5c4f3d0df0f50264ab7efebc898be0b5d358a00715ba9f657a89"
}
},
"Curation": {
"address": "0x7080AAcC4ADF4b1E72615D6eb24CDdE40a04f6Ca",
"initArgs": [
"0x7f734E995010Aa8d28b912703093d532C37b6EAb",
"0x71319060b9fdeD6174b6368bE04F9A1b7c9aCe48",
"0x2B757ad83e4ed51ecaE8D4dC9AdE8E3Fa29F7BdC",
"1000000",
"10000",
"1000000000000000000"
],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0x2e5744fa4eca56cf6902e27fcc0509487f39bdb0d29b9eb0181db986235289a0",
"proxy": true,
"implementation": {
"address": "0xDA6c9d39b49c3d41CaC2030c6B75b40Efea09817",
"creationCodeHash": "0xa5fa77df71a72c5aadba812345978c291c5fa1a3a23129b6eba3a38ac85d8b5d",
"runtimeCodeHash": "0x1d265e9f658778b48a0247cfef79bfc9304d1faa1f1e085f2fea85629f68e2d5",
"txHash": "0x815eda87a2599d6f2c7458c7b164e7307d05018f0dd72073a50971d424313377"
}
},
"SubgraphNFTDescriptor": {
"address": "0x30545f313bD2eb0F85E4f808Ae4D2C016efE78b2",
"creationCodeHash": "0xf16e8ff11d852eea165195ac9e0dfa00f98e48f6ce3c77c469c7df9bf195b651",
"runtimeCodeHash": "0x39583196f2bcb85789b6e64692d8c0aa56f001c46f0ca3d371abbba2c695860f",
"txHash": "0x060839a09e89cbd47adbb8c04cc76b21a00785600a4e8b44939dd928391777e1"
},
"SubgraphNFT": {
"address": "0x5571D8FE183AD1367dF21eE9968690f0Eabdc593",
"constructorArgs": ["0xEfc519BEd6a43a14f1BBBbA9e796C4931f7A5540"],
"creationCodeHash": "0xc1e58864302084de282dffe54c160e20dd96c6cfff45e00e6ebfc15e04136982",
"runtimeCodeHash": "0x7216e736a8a8754e88688fbf5c0c7e9caf35c55ecc3a0c5a597b951c56cf7458",
"txHash": "0xc11917ffedda6867648fa2cb62cca1df3c0ed485a0a0885284e93a2c5d33455c"
},
"GNS": {
"address": "0x6bf9104e054537301cC23A1023Ca30A6Df79eB21",
"initArgs": [
"0x7f734E995010Aa8d28b912703093d532C37b6EAb",
"0x71319060b9fdeD6174b6368bE04F9A1b7c9aCe48",
"0x5571D8FE183AD1367dF21eE9968690f0Eabdc593"
],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0x3c2509730e06249d970818319bb507185d4fdea13d5600cef87928a718950c19",
"proxy": true,
"implementation": {
"address": "0x7eCb82A9Cf9B370d3fC2Ef66E38F38EDFAeaa125",
"creationCodeHash": "0xb0be24e926bb24420bb5a8d3f7bd0b70a545fdddbf8cb177a42478adf4435aae",
"runtimeCodeHash": "0x4cb62b9def5b691e43ed06808b18efe682fcefb7739909be0d6c87f1eda724cd",
"txHash": "0xf1d41fc99ed716a0c890ea62e13ee108ddcb4ecfc74efb715a4ef05605ce449b"
}
},
"Staking": {
"address": "0xcd549d0C43d915aEB21d3a331dEaB9B7aF186D26",
"initArgs": [
"0x7f734E995010Aa8d28b912703093d532C37b6EAb",
"100000000000000000000000",
"6646",
"10000",
"100000",
"2",
"4",
"12",
"16",
"77",
"100"
],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0xc98ebdd0a80b97ef8f6305903ef6496a7781db76a5b1b3c3c3b2b10dbd9a7af5",
"proxy": true,
"implementation": {
"address": "0x8E56ee65Ed613f2AecA8898D19497D288601bdeb",
"creationCodeHash": "0x75b63ef816627315c635cae7f95917764e2cb797496280cdeaa9b3230bf7f7bc",
"runtimeCodeHash": "0x461ccf91c7c6188c94c6df430b6954dfd9c5cc2a79a5e4db21422e11b663d319",
"txHash": "0xb9ce53dafab3dcaad25b24d9f998888225103265bd2d84cb1545b4e06e96e3b6",
"libraries": {
"LibCobbDouglas": "0x86f0f6cd9a38A851E3AB8f110be06B77C199eC1F"
}
}
},
"RewardsManager": {
"address": "0x5F06ABd1CfAcF7AE99530D7Fed60E085f0B15e8D",
"initArgs": ["0x7f734E995010Aa8d28b912703093d532C37b6EAb"],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0xd4cfa95475e9e867fb24babd6a00a5b6b01d2267533e2412986aa1ff94d51c02",
"proxy": true,
"implementation": {
"address": "0x80b54Ba64d8a207785969d9ae0dA984EfE8D10dF",
"creationCodeHash": "0x98aaabec491a17401ca37209db0613c91285de061e859574526f841a4dd60c4a",
"runtimeCodeHash": "0x2795a83531898957014373bd4595f1f9a381ecfaf787bdfc64380563af06f06a",
"txHash": "0xb4bc7ae32ec98394c448f8773bdd3049ab83e236acb6823a7a322d88ecfbfd99"
}
},
"DisputeManager": {
"address": "0x16DEF7E0108A5467A106dbD7537f8591f470342E",
"initArgs": [
"0x7f734E995010Aa8d28b912703093d532C37b6EAb",
"0xF89688d5d44d73cc4dE880857A3940487076e5A4",
"10000000000000000000000",
"500000",
"25000",
"25000"
],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0x70188c9243c2226ac793ac8c0a9eecd76c9b44e53f7f6f97fa177a34808421a0",
"proxy": true,
"implementation": {
"address": "0x39aEdA1d6ea3B62b76C7c439beBfFCb5369a175C",
"creationCodeHash": "0x2e77ad7a1627b6e04bece0fe18b3ab543ef4a2d6914f2e5e640b2c8175aca3a8",
"runtimeCodeHash": "0x0186afe711eff4ceea28620d091e3c6034fd15be05894119c74a38b020e3a554",
"txHash": "0x4efbd28e55866c0292309964f47bd805922ad417e5980e14e055ad693024582d"
}
},
"AllocationExchange": {
"address": "0x61809D6Cde07f27D2fcDCb67a42d0Af1988Be5e8",
"constructorArgs": [
"0x18C924BD5E8b83b47EFaDD632b7178E2Fd36073D",
"0xcd549d0C43d915aEB21d3a331dEaB9B7aF186D26",
"0x05F359b1319f1Ca9b799CB6386F31421c2c49dBA",
"0xD06f366678AE139a94b2AaC2913608De568F1D03"
],
"creationCodeHash": "0x96c5b59557c161d80f1617775a7b9537a89b0ecf2258598b3a37724be91ae80a",
"runtimeCodeHash": "0xed3d9cce65ddfa8a237d4d7d294ffdb13a082e0adcda3bbd313029cfae1365f3",
"txHash": "0x1df63329a21dca69d20e03c076dd89c350970d35319eeefab028cebbc78d29dc"
},
"L2GraphTokenGateway": {
"address": "0xef2757855d2802bA53733901F90C91645973f743",
"initArgs": ["0x7f734E995010Aa8d28b912703093d532C37b6EAb"],
"creationCodeHash": "0xcdd28bb3db05f1267ca0f5ea29536c61841be5937ce711b813924f8ff38918cc",
"runtimeCodeHash": "0x4ca8c37c807bdfda1d6dcf441324b7ea14c6ddec5db37c20c2bf05aeae49bc0d",
"txHash": "0x47bde4e3ad0bc077897a3de65058c4b7dd710aa447ec25942f716321cbdc590d",
"proxy": true,
"implementation": {
"address": "0xc68cd0d2ca533232Fd86D6e48b907338B2E0a74A",
"creationCodeHash": "0xbd52455bd8b14bfc27af623388fe2f9e06ddd4c4be3fc06c51558a912de91770",
"runtimeCodeHash": "0x29e47f693053f978d6b2ac0a327319591bf5b5e8a6e6c0744b8afcc0250bf667",
"txHash": "0xf68a5e1e516ee9a646f19bbe4d58336fdfcf5fc859f84cdac5e68b00bcd3a09a"
}
}
}
}
Loading