/kleros-v2

Kleros version 2

Primary LanguageTypeScriptMIT LicenseMIT

Kleros

Kleros v2

Netlify Build Status GitPoap badge
OpenSSF Scorecard Security Rating Quality Gate Status Bugs Reliability Rating Maintainability Rating
Unit testing Conventional Commits Commitizen Friendly Styled with Prettier


Deployments

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
  • Install Yarn v1.22: npm install -g yarn
    • Then upgrade Yarn to v3: yarn set version berry
  • 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

Install the dependencies

$ yarn install

# Foundry libraries
$ git submodule update --init --recursive -j 4
$ 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

terminal

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

⚠️ 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