Skip to content

Commit d1fef37

Browse files
authored
Merge pull request #1645 from kleros/feat/case-dev-buttons
feat(web): dispute-maintenance-buttons
2 parents 4066228 + 097bbaa commit d1fef37

24 files changed

+1046
-21
lines changed

contracts/README.md

+2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Refresh the list of deployed contracts by running `./scripts/generateDeployments
2020
- [PolicyRegistry: proxy](https://arbiscan.io/address/0x26c1980120F1C82cF611D666CE81D2b54d018547), [implementation](https://arbiscan.io/address/0x2AC2EdFD336732bc6963f1AD03ED98B22dB949da)
2121
- [RandomizerRNG: proxy](https://arbiscan.io/address/0xC3dB344755b15c8Edfd834db79af4f8860029FB4), [implementation](https://arbiscan.io/address/0xA995C172d286f8F4eE137CC662e2844E59Cf4836)
2222
- [SortitionModuleNeo: proxy](https://arbiscan.io/address/0x614498118850184c62f82d08261109334bFB050f), [implementation](https://arbiscan.io/address/0xf327200420F21BAafce8F1C03B1EEdF926074B95)
23+
- [TransactionBatcher](https://arbiscan.io/address/0xBC5ef8d9ad307154447AE148c088f083d2dEa4eF)
2324

2425
### Official Testnet
2526

@@ -88,6 +89,7 @@ Refresh the list of deployed contracts by running `./scripts/generateDeployments
8889
- [SortitionModule: proxy](https://sepolia.arbiscan.io/address/0x19cb28BAB40C3585955798f5EEabd71Eec14471C), [implementation](https://sepolia.arbiscan.io/address/0xBC82B29e5aE8a749D82b7919118Ab7C0D41fA3D3)
8990
- [SortitionModuleNeo: proxy](https://sepolia.arbiscan.io/address/0x809533c303c10915BB5c0585f2d8D738e2a4fB64), [implementation](https://sepolia.arbiscan.io/address/0xD9ddceb7C399518F23b69D155a67C6AFF13f9fF0)
9091
- [SortitionModuleUniversity: proxy](https://sepolia.arbiscan.io/address/0xBEEb15EF1DEf96c569c97A703E649B0251ceFB04), [implementation](https://sepolia.arbiscan.io/address/0xaA2833b174D4e29ae2aFc0b11dF9160EDB28BF9d)
92+
- [TransactionBatcher](https://sepolia.arbiscan.io/address/0x35f93986950804ac1F93519BF68C2a7Dd776db0E)
9193
- [WETH](https://sepolia.arbiscan.io/address/0x3829A2486d53ee984a0ca2D76552715726b77138)
9294
- [WETHFaucet](https://sepolia.arbiscan.io/address/0x6F8C10E0030aDf5B8030a5E282F026ADdB6525fd)
9395

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { HardhatRuntimeEnvironment } from "hardhat/types";
2+
import { DeployFunction } from "hardhat-deploy/types";
3+
import { HomeChains, isSkipped } from "./utils";
4+
5+
const deployArbitration: DeployFunction = async (hre: HardhatRuntimeEnvironment) => {
6+
const { deployments, getNamedAccounts, getChainId } = hre;
7+
const { deploy } = deployments;
8+
9+
// fallback to hardhat node signers on local network
10+
const deployer = (await getNamedAccounts()).deployer ?? (await hre.ethers.getSigners())[0].address;
11+
const chainId = Number(await getChainId());
12+
console.log("deploying to %s with deployer %s", HomeChains[chainId], deployer);
13+
14+
await deploy("TransactionBatcher", {
15+
from: deployer,
16+
args: [],
17+
log: true,
18+
});
19+
};
20+
21+
deployArbitration.tags = ["TransactionBatcher"];
22+
deployArbitration.skip = async ({ network }) => {
23+
return isSkipped(network, !HomeChains[network.config.chainId ?? 0]);
24+
};
25+
26+
export default deployArbitration;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
{
2+
"address": "0xBC5ef8d9ad307154447AE148c088f083d2dEa4eF",
3+
"abi": [
4+
{
5+
"inputs": [
6+
{
7+
"internalType": "address[]",
8+
"name": "targets",
9+
"type": "address[]"
10+
},
11+
{
12+
"internalType": "uint256[]",
13+
"name": "values",
14+
"type": "uint256[]"
15+
},
16+
{
17+
"internalType": "bytes[]",
18+
"name": "datas",
19+
"type": "bytes[]"
20+
}
21+
],
22+
"name": "batchSend",
23+
"outputs": [],
24+
"stateMutability": "payable",
25+
"type": "function"
26+
},
27+
{
28+
"inputs": [
29+
{
30+
"internalType": "address[]",
31+
"name": "targets",
32+
"type": "address[]"
33+
},
34+
{
35+
"internalType": "uint256[]",
36+
"name": "values",
37+
"type": "uint256[]"
38+
},
39+
{
40+
"internalType": "bytes[]",
41+
"name": "datas",
42+
"type": "bytes[]"
43+
}
44+
],
45+
"name": "batchSendUnchecked",
46+
"outputs": [],
47+
"stateMutability": "payable",
48+
"type": "function"
49+
}
50+
],
51+
"transactionHash": "0x50a763cdca3efd37d6f33e98d7ea345ef4f6ad821949aba64ca8ce2a06c8b06a",
52+
"receipt": {
53+
"to": null,
54+
"from": "0xf1C7c037891525E360C59f708739Ac09A7670c59",
55+
"contractAddress": "0xBC5ef8d9ad307154447AE148c088f083d2dEa4eF",
56+
"transactionIndex": 4,
57+
"gasUsed": "458947",
58+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
59+
"blockHash": "0x1bfe2ba4e8defa670819e72dbe2fbac4d9b7ea05cfbbdafe0335df02d9410842",
60+
"transactionHash": "0x50a763cdca3efd37d6f33e98d7ea345ef4f6ad821949aba64ca8ce2a06c8b06a",
61+
"logs": [],
62+
"blockNumber": 235536061,
63+
"cumulativeGasUsed": "1233814",
64+
"status": 1,
65+
"byzantium": true
66+
},
67+
"args": [],
68+
"numDeployments": 1,
69+
"solcInputHash": "036e2ca71d8ebdd78fd6317e15ba1f3c",
70+
"metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"datas\",\"type\":\"bytes[]\"}],\"name\":\"batchSend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes[]\",\"name\":\"datas\",\"type\":\"bytes[]\"}],\"name\":\"batchSendUnchecked\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/utils/TransactionBatcher.sol\":\"TransactionBatcher\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":100},\"remappings\":[]},\"sources\":{\"src/utils/TransactionBatcher.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\npragma solidity ^0.8.0;\\n\\n// Adapted from https://github.com/daostack/web3-transaction-batcher/blob/1b88d2ea062f8f2d9fdfdf9bbe85d2bbef780151/contracts/Batcher.sol\\n\\ncontract TransactionBatcher {\\n\\n function batchSend(address[] memory targets, uint256[] memory values, bytes[] memory datas) public payable {\\n for (uint256 i = 0; i < targets.length; i++) {\\n (bool success,) = targets[i].call{value: values[i]}(datas[i]);\\n if (!success) revert('transaction failed'); // All the calls must succeed.\\n }\\n }\\n\\n function batchSendUnchecked(address[] memory targets, uint256[] memory values, bytes[] memory datas) public payable {\\n for (uint256 i = 0; i < targets.length; i++) {\\n targets[i].call{value: values[i]}(datas[i]); // Intentionally ignoring return value.\\n }\\n }\\n}\\n\",\"keccak256\":\"0x1983237012c29ef487ca47d60b197eb30d5b072ffec3078685d43fcc5fcc10a0\",\"license\":\"MIT\"}},\"version\":1}",
71+
"bytecode": "0x608060405234801561000f575f80fd5b506105238061001d5f395ff3fe608060405260043610610028575f3560e01c8063a8f0802e1461002c578063cef591aa14610041575b5f80fd5b61003f61003a3660046103c4565b610054565b005b61003f61004f3660046103c4565b61015c565b5f5b8351811015610156575f848281518110610072576100726104ad565b60200260200101516001600160a01b0316848381518110610095576100956104ad565b60200260200101518484815181106100af576100af6104ad565b60200260200101516040516100c491906104c1565b5f6040518083038185875af1925050503d805f81146100fe576040519150601f19603f3d011682016040523d82523d5f602084013e610103565b606091505b505090508061014d5760405162461bcd60e51b81526020600482015260126024820152711d1c985b9cd858dd1a5bdb8819985a5b195960721b604482015260640160405180910390fd5b50600101610056565b50505050565b5f5b835181101561015657838181518110610179576101796104ad565b60200260200101516001600160a01b031683828151811061019c5761019c6104ad565b60200260200101518383815181106101b6576101b66104ad565b60200260200101516040516101cb91906104c1565b5f6040518083038185875af1925050503d805f8114610205576040519150601f19603f3d011682016040523d82523d5f602084013e61020a565b606091505b50505060010161015e565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561025257610252610215565b604052919050565b5f67ffffffffffffffff82111561027357610273610215565b5060051b60200190565b5f82601f83011261028c575f80fd5b813560206102a161029c8361025a565b610229565b8083825260208201915060208460051b8701019350868411156102c2575f80fd5b602086015b848110156102de57803583529183019183016102c7565b509695505050505050565b5f601f83601f8401126102fa575f80fd5b8235602061030a61029c8361025a565b82815260059290921b85018101918181019087841115610328575f80fd5b8287015b848110156103b857803567ffffffffffffffff8082111561034b575f80fd5b818a0191508a603f83011261035e575f80fd5b8582013560408282111561037457610374610215565b610385828b01601f19168901610229565b92508183528c8183860101111561039a575f80fd5b8181850189850137505f90820187015284525091830191830161032c565b50979650505050505050565b5f805f606084860312156103d6575f80fd5b833567ffffffffffffffff808211156103ed575f80fd5b818601915086601f830112610400575f80fd5b8135602061041061029c8361025a565b82815260059290921b8401810191818101908a84111561042e575f80fd5b948201945b838610156104605785356001600160a01b0381168114610451575f80fd5b82529482019490820190610433565b97505087013592505080821115610475575f80fd5b6104818783880161027d565b93506040860135915080821115610496575f80fd5b506104a3868287016102e9565b9150509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f82515f5b818110156104e057602081860181015185830152016104c6565b505f92019182525091905056fea264697066735822122089797200888ad757484ded7bc0ffbb0769e9e974d73188d61385b7f6675e9f2064736f6c63430008180033",
72+
"deployedBytecode": "0x608060405260043610610028575f3560e01c8063a8f0802e1461002c578063cef591aa14610041575b5f80fd5b61003f61003a3660046103c4565b610054565b005b61003f61004f3660046103c4565b61015c565b5f5b8351811015610156575f848281518110610072576100726104ad565b60200260200101516001600160a01b0316848381518110610095576100956104ad565b60200260200101518484815181106100af576100af6104ad565b60200260200101516040516100c491906104c1565b5f6040518083038185875af1925050503d805f81146100fe576040519150601f19603f3d011682016040523d82523d5f602084013e610103565b606091505b505090508061014d5760405162461bcd60e51b81526020600482015260126024820152711d1c985b9cd858dd1a5bdb8819985a5b195960721b604482015260640160405180910390fd5b50600101610056565b50505050565b5f5b835181101561015657838181518110610179576101796104ad565b60200260200101516001600160a01b031683828151811061019c5761019c6104ad565b60200260200101518383815181106101b6576101b66104ad565b60200260200101516040516101cb91906104c1565b5f6040518083038185875af1925050503d805f8114610205576040519150601f19603f3d011682016040523d82523d5f602084013e61020a565b606091505b50505060010161015e565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561025257610252610215565b604052919050565b5f67ffffffffffffffff82111561027357610273610215565b5060051b60200190565b5f82601f83011261028c575f80fd5b813560206102a161029c8361025a565b610229565b8083825260208201915060208460051b8701019350868411156102c2575f80fd5b602086015b848110156102de57803583529183019183016102c7565b509695505050505050565b5f601f83601f8401126102fa575f80fd5b8235602061030a61029c8361025a565b82815260059290921b85018101918181019087841115610328575f80fd5b8287015b848110156103b857803567ffffffffffffffff8082111561034b575f80fd5b818a0191508a603f83011261035e575f80fd5b8582013560408282111561037457610374610215565b610385828b01601f19168901610229565b92508183528c8183860101111561039a575f80fd5b8181850189850137505f90820187015284525091830191830161032c565b50979650505050505050565b5f805f606084860312156103d6575f80fd5b833567ffffffffffffffff808211156103ed575f80fd5b818601915086601f830112610400575f80fd5b8135602061041061029c8361025a565b82815260059290921b8401810191818101908a84111561042e575f80fd5b948201945b838610156104605785356001600160a01b0381168114610451575f80fd5b82529482019490820190610433565b97505087013592505080821115610475575f80fd5b6104818783880161027d565b93506040860135915080821115610496575f80fd5b506104a3868287016102e9565b9150509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f82515f5b818110156104e057602081860181015185830152016104c6565b505f92019182525091905056fea264697066735822122089797200888ad757484ded7bc0ffbb0769e9e974d73188d61385b7f6675e9f2064736f6c63430008180033",
73+
"devdoc": {
74+
"kind": "dev",
75+
"methods": {},
76+
"version": 1
77+
},
78+
"userdoc": {
79+
"kind": "user",
80+
"methods": {},
81+
"version": 1
82+
},
83+
"storageLayout": {
84+
"storage": [],
85+
"types": null
86+
}
87+
}

0 commit comments

Comments
 (0)