kleros-v2
kleros-v2 copied to clipboard
Kleros version 2
Kleros v2
Deployments
โ๏ธ Contracts addresses
๐๏ธ Subgraph endpoints
โ๏ธ Web frontend
Content
| Package | Description |
|---|---|
| bots | Automation of the on-chain upkeep of the smart contracts. Anyone willing to spend some gas may run these bots and contribute to the upkeep operations. |
| bot-pinner | Replication and pinning of the IPFS content produced by the court, such as the pieces of evidence submitted in a case. |
| contracts | Smart contracts of the arbitration protocol. |
| kleros-sdk | SDK which facilitates the creation of arbitrable applications, the interactions with the arbitrator, the rendering of the dispute and evidence information. |
| subgraph | The indexing layer. |
| web | The court frontend intended for the jurors and parties in a dispute. |
Toolchain:
- Solidity 0.8
- Hardhat
- Ethers
- Waffle
- Typescript
- Node 16
- Yarn 3 without PlugnPlay
Contributing
Prerequisites
- Install NodeJS 16:
- on Red Hat Linux:
sudo dnf module install nodejs:16 - on Ubuntu Linux:
sudo snap install node --classic - on MacOS via brew:
brew install node
- on Red Hat Linux:
- Install Yarn v1.22:
npm install -g yarn- Then upgrade Yarn to v3:
yarn set version berry
- Then upgrade Yarn to v3:
- Install Volta.sh:
curl https://get.volta.sh | bash - Install Docker Desktop to run the local graph node.
- Shell utilities: jq, yq
- on Red Hat Linux:
sudo dnf install jq yq - on Ubuntu Linux:
sudo snap install jq yq - on MacOS via brew:
brew install jq yq
- on Red Hat Linux:
Install the dependencies
$ yarn install
# Foundry libraries
$ git submodule update --init --recursive -j 4
Hardhat CLI auto-completion (optional)
$ npm i -g hardhat-shorthand
$ hardhat-completion install
โ Which Shell do you use ? ยท bash
โ We will install completion to ~/.bashrc, is it ok ? (y/N) ยท true
$ exec bash
Full Stack Local Deployment
Run the commands below from the top-level folder. Alternatively, it is possible to cd into the relevant package first and then call yarn without workspace @kleros/xxxx.
Shortcut using tmux
If you have tmux installed, you can get started quickly with a single command.
$ yarn local-stack

Shell 1 - Local RPC with Contracts Deployed
$ yarn workspace @kleros/kleros-v2-contracts start-local
...
Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/
โณ Wait until deployment is complete.
Shell 2 - Local Graph Node
$ yarn workspace @kleros/kleros-v2-subgraph start-local-indexer
...
graph-node-graph-node-1 | INFO Successfully connected to IPFS node at: http://ipfs:5001/
graph-node-graph-node-1 | INFO Pool successfully connected to Postgres, pool: main, shard: primary, component: Store
...
graph-node-graph-node-1 | INFO Connected to Ethereum, capabilities: archive, traces, network_version: 31337, provider: mainnet-rpc-0
โณ Wait until the graph service is ready.
Shell 3 - Subgraph Rebuild and Local Deploy
:warning: This step modifies subgraph.yaml and creates a backup file. See further down on how to restore it.
$ yarn workspace @kleros/kleros-v2-subgraph rebuild-deploy:local
...
โ Upload subgraph to IPFS
Build completed: QmZVaZQ9qcXPia9YnFEKk7D1dEDHbfyDiJi1sqJ6E1NydB
Deployed to http://localhost:8000/subgraphs/name/kleros/kleros-v2-core-local/graphql
Subgraph endpoints:
Queries (HTTP): http://localhost:8000/subgraphs/name/kleros/kleros-v2-core-local
Shell 4 - Frontend Pointing to the Local Subgraph
yarn workspace @kleros/kleros-v2-web generate
โ Parse Configuration
โ Generate outputs
โ Validating plugins
โ Resolving contracts
โ Running plugins
โ Writing to src/hooks/contracts/generated.ts
$ yarn workspace @kleros/kleros-v2-web start-local
Server running at http://localhost:1234
โจ Built in 2.35s
Redeploying
# Contracts
$ yarn workspace @kleros/kleros-v2-contracts deploy-local
# Subgraph
$ yarn workspace @kleros/kleros-v2-subgraph rebuild-deploy:local
Simulating Arbitration Activity
$ yarn workspace @kleros/kleros-v2-contracts simulate-local
Stopping
Just press Ctrl + c in each terminal.
Docker containers and data removal
yarn workspace @kleros/kleros-v2-subgraph stop-local-indexer
Restoring subgraph.yaml
From a backup file
Every versions were saved as subgraph.yaml.bak.<timestamp>.
Based on the ArbitrumGoerli deployment artifacts
yarn workspace @kleros/kleros-v2-subgraph update
Based on the last commit
git restore subgraph.yaml