npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@kleros/kleros-v2-contracts

v0.7.0

Published

Smart contracts for Kleros version 2

Downloads

851

Readme

@kleros/kleros-v2-contracts

Smart contracts for Kleros v2

Deployments

Refresh the list of deployed contracts by running ./scripts/generateDeploymentsMarkdown.sh or ./scripts/populateReadme.sh.

V2 Neo (prelaunch)

Arbitrum One

Official Testnet

Arbitrum Sepolia

Sepolia

Chiado

Devnet

Arbitrum Sepolia

Sepolia

Chiado

Getting Started

Install the Dependencies

yarn install

Run Tests

yarn test

Compile the Contracts

yarn build

Run Linter on Files

yarn lint

Fix Linter Issues on Files

yarn fix

Deploy Instructions

NOTICE: the commands below work only if you are inside the contracts/ directory.

0. Set the Environment Variables

Copy .env.example file as .env and edit it accordingly.

cp .env.example .env

The following env vars are required:

  • PRIVATE_KEY: the private key of the deployer account used for the testnets.
  • MAINNET_PRIVATE_KEY: the private key of the deployer account used for Mainnet.
  • INFURA_API_KEY: the API key for infura.

The ones below are optional:

  • ETHERSCAN_API_KEY: to verify the source of the newly deployed contracts on Etherscan.
  • ARBISCAN_API_KEY: to verify the source of the newly deployed contracts on Arbitrum.
  • GNOSISSCAN_API_KEY: to verify the source of the newly deployed contracts on Gnosis chain.

1. Update the Constructor Parameters (optional)

If some of the constructor parameters (such as the Meta Evidence) needs to change, you need to update the files in the deploy/ directory.

2. Deploy to a Local Network

The complete deployment is multi-chain, so a deployment to the local network can only simulate either the Home chain or the Foreign chain.

Shell 1: the node

yarn hardhat node --tags nothing

Shell 2: the deploy script

yarn deploy --network localhost --tags <Arbitration|VeaMock|ForeignGatewayOnEthereum|HomeGateway>

3. Deploy to Public Testnets

# ArbitrumSepolia to Chiado
yarn deploy --network arbitrumSepolia --tags Arbitration
yarn deploy --network arbitrumSepolia --tags HomeArbitrable
yarn deploy --network chiado --tags ForeignGatewayOnGnosis
yarn deploy --network chiado --tags KlerosLiquidOnGnosis
yarn deploy --network chiado --tags ForeignArbitrable
yarn deploy --network arbitrumSepolia --tags HomeGatewayToGnosis

# Sepolia
yarn deploy --network sepolia --tags ForeignGatewayOnEthereum
yarn deploy --network sepolia --tags ForeignArbitrable
yarn deploy --network arbitrumSepolia --tags HomeGatewayToEthereum

The deployed addresses should be displayed to the screen after the deployment is complete. If you missed them, you can always go to the deployments/<network> directory and look for the respective file.

4. Deploy a Devnet on Public Testnets

Same steps as above but append Devnet to the --network parameter.

Running Test Fixtures

Shell 1: the node

yarn hardhat node --tags Arbitration,VeaMock

Shell 2: the test scripts

yarn test --network localhost

4. Verify the Source Code

This must be done for each network separately.

# explorer
yarn etherscan-verify --network <arbitrumSepolia|arbitrum|chiado|gnosischain|sepolia|mainnet>
yarn etherscan-verify-proxies

# sourcify
yarn sourcify --network <arbitrumSepolia|arbitrum|chiado|gnosischain|sepolia|mainnet>

Ad-hoc procedures

Populating the policy registry and courts

The policy registry and courts configuration can be found in config/policies.*.json and config/courts.*.json.

1/ Export the registry data from V1

for network in mainnet gnosischain
do
  yarn hardhat run scripts/getPoliciesV1.ts  --network $network | tee config/policies.v1.$network.json
  yarn hardhat run scripts/getCourtsV1.ts --network $network | tee config/courts.v1.$network.json
done

2/ Import the data to V2 - Local Network

Shell 1:

yarn hardhat node --tags Arbitration

Shell 2:

yarn hardhat run scripts/populateCourts.ts --network localhost
yarn hardhat run scripts/populatePolicyRegistry.ts --network localhost

3/ Import the data to V2 - Public Testnet

yarn hardhat run scripts/populateCourts.ts --network arbitrumSepolia
yarn hardhat run scripts/populatePolicyRegistry.ts --network arbitrumSepolia

Generate deployment artifacts for existing contracts

Usage

scripts/generateDeploymentArtifact.sh <network> <address>

Example: WETH on Gnosis chain

scripts/generateDeploymentArtifact.sh gnosischain 0xf8d1677c8a0c961938bf2f9adc3f3cfda759a9d9 > deployments/gnosischain/WETH.json

Push the contracts to a Tenderly project

Ensure that your $TENDERLY_PROJECT and $TENDERLY_USERNAME is set correctly in .env.

yarn tenderly-verify --network sepolia
yarn tenderly-verify --network arbitrumSepolia