Skip to content

Commit e2e6412

Browse files
authored
Merge pull request #2046 from kleros/chore/devnet-redeploy-jul2025
Devnet redeployment
2 parents 6e535cc + 60a0a75 commit e2e6412

File tree

62 files changed

+20969
-1709
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+20969
-1709
lines changed

contracts/DEVNET_REDEPLOY.md

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
## Clean up of the old artifacts
2+
3+
The following contracts have been preserved:
4+
5+
- The University contracts (out-of-scope for now)
6+
- The ERC20 tokens and their faucets (unchanged): PinakionV2, PNK, PNKFaucet, DAI, DAIFaucet, WETH, WETHFaucet
7+
- The RNG contracts (unchanged): RandomizerOracle, BlockHashRNG, ChainlinkRNG, ChainlinkVRFCoordinator (mock)
8+
- KlerosV2NeoEarlyUser (unchanged, for Neo devnet)
9+
10+
```shell
11+
rm deployments/arbitrumSepoliaDevnet/DisputeKitClassic.json
12+
rm deployments/arbitrumSepoliaDevnet/DisputeKitClassic_Implementation.json
13+
rm deployments/arbitrumSepoliaDevnet/DisputeKitClassic_Proxy.json
14+
rm deployments/arbitrumSepoliaDevnet/DisputeKitGated_Implementation.json
15+
rm deployments/arbitrumSepoliaDevnet/DisputeKitGated_Proxy.json
16+
rm deployments/arbitrumSepoliaDevnet/DisputeKitGated.json
17+
rm deployments/arbitrumSepoliaDevnet/DisputeKitGatedShutter_Implementation.json
18+
rm deployments/arbitrumSepoliaDevnet/DisputeKitGatedShutter_Proxy.json
19+
rm deployments/arbitrumSepoliaDevnet/DisputeKitGatedShutter.json
20+
rm deployments/arbitrumSepoliaDevnet/DisputeKitShutter.json
21+
rm deployments/arbitrumSepoliaDevnet/DisputeKitShutter_Implementation.json
22+
rm deployments/arbitrumSepoliaDevnet/DisputeKitShutter_Proxy.json
23+
rm deployments/arbitrumSepoliaDevnet/DisputeResolver.json
24+
rm deployments/arbitrumSepoliaDevnet/DisputeResolverRuler.json
25+
rm deployments/arbitrumSepoliaDevnet/DisputeTemplateRegistry.json
26+
rm deployments/arbitrumSepoliaDevnet/DisputeTemplateRegistry_Implementation.json
27+
rm deployments/arbitrumSepoliaDevnet/DisputeTemplateRegistry_Proxy.json
28+
rm deployments/arbitrumSepoliaDevnet/EvidenceModule.json
29+
rm deployments/arbitrumSepoliaDevnet/EvidenceModule_Implementation.json
30+
rm deployments/arbitrumSepoliaDevnet/EvidenceModule_Proxy.json
31+
rm deployments/arbitrumSepoliaDevnet/KlerosCore.json
32+
rm deployments/arbitrumSepoliaDevnet/KlerosCoreRuler.json
33+
rm deployments/arbitrumSepoliaDevnet/KlerosCoreRuler_Implementation.json
34+
rm deployments/arbitrumSepoliaDevnet/KlerosCoreRuler_Proxy.json
35+
rm deployments/arbitrumSepoliaDevnet/KlerosCoreSnapshotProxy.json
36+
rm deployments/arbitrumSepoliaDevnet/KlerosCore_Implementation.json
37+
rm deployments/arbitrumSepoliaDevnet/KlerosCore_Proxy.json
38+
rm deployments/arbitrumSepoliaDevnet/PolicyRegistry.json
39+
rm deployments/arbitrumSepoliaDevnet/PolicyRegistry_Implementation.json
40+
rm deployments/arbitrumSepoliaDevnet/PolicyRegistry_Proxy.json
41+
rm deployments/arbitrumSepoliaDevnet/SortitionModule.json
42+
rm deployments/arbitrumSepoliaDevnet/SortitionModule_Implementation.json
43+
rm deployments/arbitrumSepoliaDevnet/SortitionModule_Proxy.json
44+
```
45+
46+
## Contracts Deployment - DRY RUN
47+
48+
Shell 1: fork node
49+
50+
```shell
51+
anvil --fork-url https://sepolia-rollup.arbitrum.io/rpc
52+
```
53+
54+
Shell 2: deployer
55+
56+
```shell
57+
export ARBITRUM_SEPOLIA_RPC=http://127.0.0.1:8545
58+
59+
yarn clean
60+
yarn deploy --network arbitrumSepoliaDevnet --tags Resolver
61+
yarn deploy --network arbitrumSepoliaDevnet --tags ArbitrationRuler
62+
63+
unset ARBITRUM_SEPOLIA_RPC
64+
```
65+
66+
:warning: Remember to delete all the deployed artifacts after each dry run.
67+
68+
## Contracts Deployment - LIVE
69+
70+
```shell
71+
yarn clean
72+
yarn deploy --network arbitrumSepoliaDevnet --tags Resolver
73+
yarn deploy --network arbitrumSepoliaDevnet --tags ArbitrationRuler
74+
75+
# Contracts verification, marking proxies
76+
yarn etherscan-verify --network arbitrumSepoliaDevnet
77+
yarn etherscan-verify-proxies
78+
79+
# Docs update
80+
./scripts/populateReadme.sh
81+
```
82+
83+
## Courts structure and policies configuration
84+
85+
```shell
86+
yarn hardhat populate:courts --from v2_devnet --network arbitrumSepoliaDevnet
87+
88+
yarn hardhat populate:policy-registry --from v2_devnet --network arbitrumSepoliaDevnet
89+
```
90+
91+
## Contracts SDK
92+
93+
### Refresh the artifacts
94+
95+
```shell
96+
# Viem artifacts
97+
yarn viem:generate-devnet
98+
99+
# Hardhat artifacts
100+
yarn export:devnet
101+
```
102+
103+
### Update the contract helpers
104+
105+
If there are new or removed contracts, edit the contract helpers in:
106+
107+
- `scripts/utils/contracts.ts` (Hardhat runtime)
108+
- `deployments/contractsEthers.ts` (pure EthersJS)
109+
- `deployments/contractsViem.ts` (pure Viem)

contracts/README.md

Lines changed: 18 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -74,26 +74,28 @@ Refresh the list of deployed contracts by running `./scripts/generateDeployments
7474

7575
- [ArbitrableExample](https://sepolia.arbiscan.io/address/0x3Eae72F076c68F5c354C73abC33EAA291ef1b2Fa)
7676
- [BlockHashRNG](https://sepolia.arbiscan.io/address/0x56d6d65Fe202232714794B5D5e4ed9894466Ee01)
77-
- [ChainlinkRNG](https://sepolia.arbiscan.io/address/0x6c40D7F5d5bE3492fe9EF70e4eCb2BD773c12AF8)
77+
- [ChainlinkRNG](https://sepolia.arbiscan.io/address/0x7e40f5aC809521654A9c17e442F2a0a5a4d890FA)
7878
- [DAI](https://sepolia.arbiscan.io/address/0x593e89704D285B0c3fbF157c7CF2537456CE64b5)
7979
- [DAIFaucet](https://sepolia.arbiscan.io/address/0xB5b39A1bcD2D7097A8824B3cC18Ebd2dFb0D9B5E)
80-
- [DisputeKitClassic: proxy](https://sepolia.arbiscan.io/address/0x2246821E1313A93e2F8CdF7a3422d078f560b457), [implementation](https://sepolia.arbiscan.io/address/0x8Db69EE93365190FE9CA4d59Ae4Cdd4f3688f1Af)
80+
- [DisputeKitClassic: proxy](https://sepolia.arbiscan.io/address/0xeEEbbbff8f377dCFc7d4F7876C531db0d22720e1), [implementation](https://sepolia.arbiscan.io/address/0xD76E74049003faCe2EBA0B6FB61DFC9941da959F)
8181
- [DisputeKitClassicUniversity: proxy](https://sepolia.arbiscan.io/address/0xd6E96b7c993763B5CDDa1139C7387B82A7c8B8B5), [implementation](https://sepolia.arbiscan.io/address/0x87e863b94d2CB79A8aB53bD87Dc4A10E11C0918B)
82-
- [DisputeKitShutter: proxy](https://sepolia.arbiscan.io/address/0x09F3d00B995186D76Af9AA8627D06351d0d9f950), [implementation](https://sepolia.arbiscan.io/address/0x6571eE6Ee36d805A8363c09376107844a003073C)
83-
- [DisputeResolver](https://sepolia.arbiscan.io/address/0x524C5541f440204E0B4577334c439277018F971f)
84-
- [DisputeResolverRuler](https://sepolia.arbiscan.io/address/0x199893232ECC74cC7898B24b5Ff58d613029f6B7)
82+
- [DisputeKitGated: proxy](https://sepolia.arbiscan.io/address/0x677dA30B4b27D129354DdA1e219Bcc86802132d1), [implementation](https://sepolia.arbiscan.io/address/0x4D5Eb5D5b6c270Be8050Cfe93f85324AFb914258)
83+
- [DisputeKitGatedShutter: proxy](https://sepolia.arbiscan.io/address/0xd86b84eb36Cd48f3f384b4490F255b494385F429), [implementation](https://sepolia.arbiscan.io/address/0xC344C28493C51023E5504B6c7f1E86C0fB43C645)
84+
- [DisputeKitShutter: proxy](https://sepolia.arbiscan.io/address/0xfE0a958bc744Bb9E224E1822625B53134ac5CB69), [implementation](https://sepolia.arbiscan.io/address/0x036d321AfD9Ca457Be9E523736bc9FbB79FA7efc)
85+
- [DisputeResolver](https://sepolia.arbiscan.io/address/0x71f8537e925C753Fe88DA7e69Ae423f9f3a9A292)
86+
- [DisputeResolverRuler](https://sepolia.arbiscan.io/address/0xAEB1bbaE58125BA5F32349c69e4274d15dfD6EC3)
8587
- [DisputeResolverUniversity](https://sepolia.arbiscan.io/address/0x2Aa1a94307E772BeE42E9EfbD137b1053F1fCfd4)
86-
- [DisputeTemplateRegistry: proxy](https://sepolia.arbiscan.io/address/0x45f0662ec4aA4164b187c1bd39D35D0E3168787a), [implementation](https://sepolia.arbiscan.io/address/0x0406ea6E28fAb9A23BF0d6f0f23f4352383A8592)
87-
- [EvidenceModule: proxy](https://sepolia.arbiscan.io/address/0x990f44d19a5F46889801B31bf58e0536fBECf27C), [implementation](https://sepolia.arbiscan.io/address/0xf9f41910696DadF83a7B0b3e856a175D6aEEC8e8)
88-
- [KlerosCore: proxy](https://sepolia.arbiscan.io/address/0x4838e31E0ea315232c431598110FE677cAF2D6E6), [implementation](https://sepolia.arbiscan.io/address/0xEff34d5b37F0bb4d32C563E21C9C56E971f420Bd)
89-
- [KlerosCoreRuler: proxy](https://sepolia.arbiscan.io/address/0x7ffcd32A0521645E6fCFd071A68F0e26957775a5), [implementation](https://sepolia.arbiscan.io/address/0x97e30A3A940856A3913437912C746f1aF6ccC76c)
90-
- [KlerosCoreSnapshotProxy](https://sepolia.arbiscan.io/address/0xa2425b724B32D40cbB85ea6e181cfb023CE9c014)
88+
- [DisputeTemplateRegistry: proxy](https://sepolia.arbiscan.io/address/0xc852F94f90E3B06Da6eCfB61d76561ECfb94613f), [implementation](https://sepolia.arbiscan.io/address/0xBc9B5643C9B1C478DAe1b950e886CC50D8d868b1)
89+
- [EvidenceModule: proxy](https://sepolia.arbiscan.io/address/0xA1F72e0445fc395A393247F5B8c958Ec9b7C0B49), [implementation](https://sepolia.arbiscan.io/address/0x450Aa35da0ad8B282C5d910254055651417C2200)
90+
- [KlerosCore: proxy](https://sepolia.arbiscan.io/address/0x1Bd44c4a4511DbFa7DC1d5BC201635596E7200f9), [implementation](https://sepolia.arbiscan.io/address/0x0d91F523fA287A74698A0e6Cd6A2436E91b9BEB9)
91+
- [KlerosCoreRuler: proxy](https://sepolia.arbiscan.io/address/0x0630e4248a17b506809009F5D88E2f5bEE584c83), [implementation](https://sepolia.arbiscan.io/address/0xb8bF3A32730cEc3B0a8516b87246ceE24ca2eaCF)
92+
- [KlerosCoreSnapshotProxy](https://sepolia.arbiscan.io/address/0xF924ac62b20901914c101Fa089Da1FB6A0585138)
9193
- [KlerosCoreUniversity: proxy](https://sepolia.arbiscan.io/address/0x5AB37F38778Bc175852fA353056591D91c744ce6), [implementation](https://sepolia.arbiscan.io/address/0xF74DaBfC5F5dbdBD07636637204d9C35326D2906)
9294
- [KlerosV2NeoEarlyUser](https://sepolia.arbiscan.io/address/0x0d60Ff8bbCF49Bc5352328E7E28e141834d7750F)
9395
- [PinakionV2](https://sepolia.arbiscan.io/address/0x34B944D42cAcfC8266955D07A80181D2054aa225)
9496
- [PNKFaucet](https://sepolia.arbiscan.io/address/0x7EFE468003Ad6A858b5350CDE0A67bBED58739dD)
95-
- [PolicyRegistry: proxy](https://sepolia.arbiscan.io/address/0x31d067405184d7FaA64b0834511cBcFAF32CdC4b), [implementation](https://sepolia.arbiscan.io/address/0x09ba3234B3aD786aE46EcDAF388C93D54c145DC0)
96-
- [SortitionModule: proxy](https://sepolia.arbiscan.io/address/0xb34651b65A40553C444c6F0D27286C80ec34fbfD), [implementation](https://sepolia.arbiscan.io/address/0xB37919A50d3BddA9982e3c84aA47e501c454364B)
97+
- [PolicyRegistry: proxy](https://sepolia.arbiscan.io/address/0xd8681dBF525ecBda2F799BFddB96840065075e8A), [implementation](https://sepolia.arbiscan.io/address/0x472846F88D1356bb483a88f97B55026654Fc5deD)
98+
- [SortitionModule: proxy](https://sepolia.arbiscan.io/address/0x6F24A90fBBeabB2B4343Bb9c1eD8ee6AcAa50663), [implementation](https://sepolia.arbiscan.io/address/0x8a26445989c944C58503275ad87Ab4d7b17d4F1e)
9799
- [SortitionModuleUniversity: proxy](https://sepolia.arbiscan.io/address/0x4B2c2d048921f694cCE3AEa35698c6B1f5fcbb79), [implementation](https://sepolia.arbiscan.io/address/0x5CAD621D69E0535422aCFaCC0017bC32beC7A486)
98100
- [TransactionBatcher](https://sepolia.arbiscan.io/address/0x35f93986950804ac1F93519BF68C2a7Dd776db0E)
99101
- [WETH](https://sepolia.arbiscan.io/address/0x3829A2486d53ee984a0ca2D76552715726b77138)
@@ -195,7 +197,7 @@ yarn deploy --network localhost --tags <Arbitration|VeaMock|ForeignGatewayOnEthe
195197
```bash
196198
# ArbitrumSepolia to Chiado
197199
yarn deploy --network arbitrumSepolia --tags Arbitration
198-
yarn deploy --network arbitrumSepolia --tags HomeArbitrable
200+
yarn deploy --network arbitrumSepolia --tags Resolver
199201
yarn deploy --network chiado --tags ForeignGatewayOnGnosis
200202
yarn deploy --network chiado --tags KlerosLiquidOnGnosis
201203
yarn deploy --network chiado --tags ForeignArbitrable
@@ -257,26 +259,11 @@ do
257259
done
258260
```
259261

260-
#### 2/ Import the data to V2 - Local Network
261-
262-
Shell 1:
263-
264-
```bash
265-
yarn hardhat node --tags Arbitration
266-
```
267-
268-
Shell 2:
269-
270-
```bash
271-
yarn hardhat run scripts/populateCourts.ts --network localhost
272-
yarn hardhat run scripts/populatePolicyRegistry.ts --network localhost
273-
```
274-
275-
#### 3/ Import the data to V2 - Public Testnet
262+
#### 2/ Import the data to V2 - Public Testnet
276263

277264
```bash
278-
yarn hardhat run scripts/populateCourts.ts --network arbitrumSepolia
279-
yarn hardhat run scripts/populatePolicyRegistry.ts --network arbitrumSepolia
265+
yarn hardhat populate:courts --from v2_testnet --max-number-of-courts 3 --network arbitrumSepolia
266+
yarn hardhat populate:policy-registry --from v2_testnet --network arbitrumSepolia
280267
```
281268

282269
### Generate deployment artifacts for existing contracts

contracts/README.md.template

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ yarn deploy --network localhost --tags <Arbitration|VeaMock|ForeignGatewayOnEthe
8989
```bash
9090
# ArbitrumSepolia to Chiado
9191
yarn deploy --network arbitrumSepolia --tags Arbitration
92-
yarn deploy --network arbitrumSepolia --tags HomeArbitrable
92+
yarn deploy --network arbitrumSepolia --tags Resolver
9393
yarn deploy --network chiado --tags ForeignGatewayOnGnosis
9494
yarn deploy --network chiado --tags KlerosLiquidOnGnosis
9595
yarn deploy --network chiado --tags ForeignArbitrable
@@ -151,26 +151,11 @@ do
151151
done
152152
```
153153

154-
#### 2/ Import the data to V2 - Local Network
155-
156-
Shell 1:
157-
158-
```bash
159-
yarn hardhat node --tags Arbitration
160-
```
161-
162-
Shell 2:
163-
164-
```bash
165-
yarn hardhat run scripts/populateCourts.ts --network localhost
166-
yarn hardhat run scripts/populatePolicyRegistry.ts --network localhost
167-
```
168-
169-
#### 3/ Import the data to V2 - Public Testnet
154+
#### 2/ Import the data to V2 - Public Testnet
170155

171156
```bash
172-
yarn hardhat run scripts/populateCourts.ts --network arbitrumSepolia
173-
yarn hardhat run scripts/populatePolicyRegistry.ts --network arbitrumSepolia
157+
yarn hardhat populate:courts --from v2_testnet --max-number-of-courts 3 --network arbitrumSepolia
158+
yarn hardhat populate:policy-registry --from v2_testnet --network arbitrumSepolia
174159
```
175160

176161
### Generate deployment artifacts for existing contracts

contracts/deploy/00-home-chain-arbitration.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ const deployArbitration: DeployFunction = async (hre: HardhatRuntimeEnvironment)
2929

3030
await getContractOrDeployUpgradable(hre, "EvidenceModule", { from: deployer, args: [deployer], log: true });
3131

32+
await deployUpgradable(deployments, "DisputeTemplateRegistry", {
33+
from: deployer,
34+
args: [deployer],
35+
log: true,
36+
});
37+
3238
const disputeKit = await deployUpgradable(deployments, "DisputeKitClassic", {
3339
from: deployer,
3440
args: [deployer, ZeroAddress],

contracts/deploy/00-home-chain-arbitrable.ts renamed to contracts/deploy/00-home-chain-resolver.ts

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,7 @@ const deployArbitration: DeployFunction = async (hre: HardhatRuntimeEnvironment)
1313
console.log("deploying to %s with deployer %s", HomeChains[chainId], deployer);
1414

1515
const klerosCore = await deployments.get("KlerosCore");
16-
const extraData =
17-
"0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000003"; // General court, 3 jurors
18-
const weth = await deployments.get("WETH");
19-
20-
const disputeTemplateRegistry = await deployUpgradable(deployments, "DisputeTemplateRegistry", {
21-
from: deployer,
22-
args: [deployer],
23-
log: true,
24-
});
25-
26-
// await deploy("ArbitrableExample", {
27-
// from: deployer,
28-
// args: [
29-
// klerosCore.address,
30-
// disputeTemplate,
31-
// "disputeTemplateMapping: TODO",
32-
// extraData,
33-
// disputeTemplateRegistry.address,
34-
// weth.address,
35-
// ],
36-
// log: true,
37-
// });
16+
const disputeTemplateRegistry = await deployments.get("DisputeTemplateRegistry");
3817

3918
await deploy("DisputeResolver", {
4019
from: deployer,
@@ -43,7 +22,7 @@ const deployArbitration: DeployFunction = async (hre: HardhatRuntimeEnvironment)
4322
});
4423
};
4524

46-
deployArbitration.tags = ["HomeArbitrable"];
25+
deployArbitration.tags = ["Resolver"];
4726
deployArbitration.dependencies = ["Arbitration"];
4827
deployArbitration.skip = async ({ network }) => {
4928
return isSkipped(network, !HomeChains[network.config.chainId ?? 0]);

contracts/deploy/upgrade-all.ts

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,22 @@ const deployUpgradeAll: DeployFunction = async (hre: HardhatRuntimeEnvironment)
1515
const chainId = Number(await getChainId());
1616
console.log("upgrading on %s with deployer %s", HomeChains[chainId], deployer);
1717

18-
const { disputeKitClassic, disputeKitShutter, disputeTemplateRegistry, evidence, core, policyRegistry, sortition } =
19-
await getContractNamesFromNetwork(hre);
18+
const {
19+
disputeKitClassic,
20+
disputeKitShutter,
21+
disputeKitGated,
22+
disputeKitGatedShutter,
23+
disputeTemplateRegistry,
24+
evidence,
25+
core,
26+
policyRegistry,
27+
sortition,
28+
} = await getContractNamesFromNetwork(hre);
29+
30+
console.log("disputeKitClassic", disputeKitClassic);
31+
console.log("disputeKitShutter", disputeKitShutter);
32+
console.log("disputeKitGated", disputeKitGated);
33+
console.log("disputeKitGatedShutter", disputeKitGatedShutter);
2034

2135
const upgrade = async (contractName: string, initializer: string, args: any[]) => {
2236
try {
@@ -80,11 +94,13 @@ const deployUpgradeAll: DeployFunction = async (hre: HardhatRuntimeEnvironment)
8094

8195
await upgrade(disputeKitClassic, "initialize7", []);
8296
await upgrade(disputeKitShutter, "initialize8", []);
97+
await upgrade(disputeKitGated, "initialize7", []);
98+
await upgrade(disputeKitGatedShutter, "initialize7", []);
8399
await upgrade(disputeTemplateRegistry, "initialize2", []);
84100
await upgrade(evidence, "initialize2", []);
85101
await upgrade(core, "initialize5", []);
86102
await upgrade(policyRegistry, "initialize2", []);
87-
await upgrade(sortition, "initialize3", []);
103+
await upgrade(sortition, "initialize4", []);
88104
};
89105

90106
deployUpgradeAll.tags = ["UpgradeAll"];

0 commit comments

Comments
 (0)