Skip to content

Latest commit

 

History

History
102 lines (78 loc) · 3.46 KB

HACKING.md

File metadata and controls

102 lines (78 loc) · 3.46 KB

Hacking CosmJS

Welcome to CosmJS, glad to see you here. This document explains all you need to work on CosmJS, i.e. modify it. It is not intended for users of CosmJS.

Prerequisite

Checking out code

We use Git for version control. In addition to the well-known basics, we use the extension Git Large File Storage (LFS) to store blobs (currently *.png and *.wasm). A git-lfs package is available directly in modern package repositories (Debian 10+, Ubuntu 18.04+, Homebrew, MacPorts) and as a backport for older systems. Please see this website for instructions how to install it.

If you installed git-lfs after cloning this repo, use this command to replace the links with the original files: git lfs fetch && git lfs checkout.

To verify everything worked as expected, check if the testing contracts are correctly checked out:

cd scripts/launchpad/contracts
sha256sum -c checksums.sha256

Running tests

For unit tests that don't connect to any blockchain, just do:

yarn install
yarn test

To run the entire test suite, you need to run some local blockchain to test against. We use wasmd for both CosmWasm tests and as a generic Cosmos SDK 0.39 (Launchpad) blockchain. We also spawn multiple versions of raw Tendermint and a basic WebSocket server.

# Start wasmd
./scripts/launchpad/start.sh
./scripts/launchpad/init.sh
export LAUNCHPAD_ENABLED=1
export ERC20_ENABLED=1

# Start Tendermint
./scripts/tendermint/all_start.sh
export TENDERMINT_ENABLED=1

# Start WebSocket server
./scripts/socketserver/start.sh
export SOCKETSERVER_ENABLED=1

# now more tests are running that were marked as "pending" before
yarn test

# And at the end of the day
unset SOCKETSERVER_ENABLED
unset TENDERMINT_ENABLED
unset ERC20_ENABLED
unset LAUNCHPAD_ENABLED
./scripts/socketserver/stop.sh
./scripts/tendermint/all_stop.sh
./scripts/launchpad/stop.sh

Sanity

After you modified a file, check if the linter is happy:

yarn lint

# or if you want linting plus automatic fixing
yarn lint-fix

Ports

In the scripts/ folder, a bunch of blockchains and other backend systems are started for testing purposes. Some ports need to be changed from the default in order to avoid conflicts. Here is an overview of the ports used:

Port Application Usage
1317 wasmd LCD API @cosmjs/launchpad and @cosmjs/cosmwasm-launchpad tests
1318 simapp LCD API Manual Stargate debugging
1319 wasmd LCD API Manual Stargate debugging
4444 socketserver @cosmjs/sockets tests
4445 socketserver slow @cosmjs/sockets tests
11133 Tendermint 0.33 RPC @cosmjs/tendermint-rpc tests
11134 Tendermint 0.34 RPC @cosmjs/tendermint-rpc tests
26658 simapp Tendermint RPC Stargate client tests
26659 wasmd Tendermint RPC @cosmjs/cosmwasm-stargate tests