Skip to content

ChainSafe/Multix

Repository files navigation

Multix

an interface to easily manage complex multisigs.

This repo contains the code to run an indexer see ./squid and a front-end, see ./packages/ui.

Running the project

You can run most of the project locally, except for the database that will run in a docker.

Environment variables

You need to set up the squid/.env file to tell the indexer what network to index. The following environment variables are expected. You can copy packages/squid/.env.example into packages/squid/.env as follow:

DB_PORT=5432
GQL_PORT=4350
SQD_DEBUG=sqd:processor:mapping

# rococo
BLOCK_START=3510000 # this is the starting block of the indexer
PREFIX=42 # the ss58 prefix for the chain
RPC_WS="wss://rococo-rpc.polkadot.io" # a WS endpoint to connect to the blockchain
ARCHIVE_NAME="rococo" # the archive name from subsquid archives
CHAIN_ID='rococo' # the name that will prefix most ids in the indexer's DB

Running the project locally

Running the indexer locally

Install and launch the indexer and its DB. This will block the terminal

cd squid;
npm install;
docker compose up db -d;
npm run codegen;
npm run build;
npm run db:migrate;
npm run start # this will start the indexer using the environment variables set in your .env
# alternatively, you can run with predefined values, see in /squid/assets/envs/, e.g here with polkadot
node -r dotenv/config lib/main dotenv_config_path=assets/envs/.env.polkadot

In the squid directory but another terminal window, run the graphql server

npm run start:graphql-server

Running the front-end (user interface) locally

From the repository root

# install all dependencies
yarn;

# start Multix UI (accessible on localhost:3333 per default)
yarn ui:start

Running tests in Cypress

Make sure you have docker.

# install all dependancies
yarn && cd squid && npm ci

# go back to the root
cd ..

# Launch the full setup. It will:
# - delete any previous Chopsticks database
# - launch a docker with the indexer db
# - launch a Chopsticks node
# - build and launch a subsquid indexer pointed at Chopsticks
# - launch a graphQL server for the squid
# - launch the UI with local env pointed at Chopsticks
rm db.sqlite*; npm run start:chopsticks-test-build-and-launch-all

yarn ui:test