nolus-core

module
v0.5.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2024 License: Apache-2.0

README

Nolus Core


nolus-core


Go Report Card License Lint Test Test Fuzz Test cosmos-sdk

Nolus is a blockchain built using Cosmos SDK and Tendermint.

Prerequisites

Install golang, tomlq and jq.

Get started

Build, configure and run a single-node locally deployed Nolus chain
Build
make install

The command will compile and install nolusd locally on your machine.

Initialize, set up and run

init-local-network.sh generates a network setup, including the deployment of platform contracts (only) and initial Hermes setup (Nolus chain configuration).

First, generate the mnemonic you will use for Hermes:

nolusd keys mnemonic

Initialize and start (run ./scripts/init-local-network.sh --help for additional configuration options):

./scripts/init-local-network.sh --reserve-tokens <reserve_account_init_tokens> --hermes-mnemonic <the_mnemonic_generated_by_the_previous_steps> --dex-admin-mnemonic <mnemonic_phrase> --store-code-privileged-account-mnemonic <mnemonic_phrase>

*Notes:

  • Make sure the nolus-money-market repository is checked out as a sibling to this one.

  • !!! Before running the ./scripts/init-local-network.sh again, make sure the nolusd and hermes processes are killed.

  • The nolusd logs are stored in ~/.nolus.

Run an already configured single-node
nolusd start --home "networks/nolus/local-validator-1"

Set up a new DEX

On a live network, a new DEX can be deployed using the following steps.

Manual step - Prerequisites
  • provide a certain amount for the Hermes account (DEX side)

    Recover your Hermes wallet on the DEX network and use a faucet to obtain some amount.

    Example for the Osmosis DEX (Osmo-test-5 faucet):

    osmosisd keys add hermes_key --recover
    
  • start hermes

Аutomated step
./scripts/add-new-dex.sh --dex-admin-key <dex_admin_key> --store-code-privileged-user-key <store_code_privileged_user_key> --wasm-artifacts-path <wasm_artifacts_dir_path> --dex-name <dex_name> --dex-chain-id <new_dex_chain_id> --dex-ip-addr-rpc-host <new_dex_ip_addr_rpc_host_part> --dex-ip-addr-grpc-host <new_dex_ip_addr_grpc_host_part> --dex-account-prefix <new_dex_account_prefix> --dex-price-denom <new_dex_price_denom> --dex-trusting-period-secs <new_dex_trusting_period_in_seconds>  --dex-if-interchain-security <if_interchain_security_true/false> --protocol-currency <new_protocol_currency> --protocol-swap-tree <new_protocol_swap_tree>

The script takes care of setting up Hermes to work with the new DEX and, for now, deploying DEX-specific contracts (More about deploying contracts on a live network can be found here).

*Notes:

  • Execute ./scripts/add-new-dex.sh --help for additional configuration options

  • The protocol-swap-tree must be passed in single quotes (for example: --protocol-swap-tree '{"value":[0,"USDC"],"children":[{"value":[5,"OSMO"],"children":[{"value":[12,"ATOM"]}]}]}')

  • The script will locate the Hermes account from the Hermes configuration directory and link it to the new DEX

Build a statically linked binary

By default, make build generates a dynamically linked binary. In case someone would like to reproduce the way the binary is built in the pipeline then the command to achieve it locally is:

docker run --rm -it -v "$(pwd)":/code public.ecr.aws/nolus/builder:<replace_with_the latest_tag> make build -C /code

Upgrade wasmvm

  • Update the Go modules
  • Update the wasmvm version in the builder Dockerfile at .github/images/builder.Dockerfile
  • Increment the IMAGE_TAG and use the same version in the build-binary step in .github/workflows/build.yaml

Run a full node with docker

https://github.com/Nolus-Protocol/nolus-networks

Directories

Path Synopsis
app
cmd
custom
testutil
mocks/tax/types
Package mock_types is a generated GoMock package.
Package mock_types is a generated GoMock package.
nullify
Package nullify provides methods to init nil values structs for test assertion.
Package nullify provides methods to init nil values structs for test assertion.
x
mint/types
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
tax
tax/types
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.
NOTE: Usage of x/params to manage parameters is deprecated in favor of x/gov controlled execution of MsgUpdateParams messages.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL