dymension

module
v3.1.0 Latest Latest
Warning

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

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

README

Dymension Hub

image

license Go issues tests lint

Overview

Welcome to the Dymension Hub, the Settlement Layer of the Dymension protocol.

This guide will walk you through the steps required to set up and run a Dymension Hub full node.

Table of Contents

Prerequisites

Installation

Clone dymension:

git clone https://github.com/dymensionxyz/dymension.git
cd dymension
make install

Check that the dymd binaries have been successfully installed:

dymd version

If the dymd command is not found an error message is returned, confirm that your GOPATH is correctly configured by running the following command:

export PATH=$PATH:$(go env GOPATH)/bin

Initializing dymd

  • Using the setup script:

    This method is preferred as it preconfigured to support running rollapps locally

    bash scripts/setup_local.sh
    
  • Manually:

    First, set the following environment variables:

    export CHAIN_ID="dymension_100-1"
    export KEY_NAME="hub-user"
    export MONIKER_NAME="local"
    

    Second, create genesis and init dymension chain:

    dymd init "$MONIKER_NAME" --chain-id "$CHAIN_ID"
    

    Third, set parameters to ensure denom is udym:

    bash scripts/set_params.sh
    

    Then, add genesis account and provide token to the account:

    dymd keys add "$KEY_NAME" --keyring-backend test
    dymd add-genesis-account "$(dymd keys show "$KEY_NAME" -a --keyring-backend test)" 1000dym
    dymd gentx "$KEY_NAME" 670dym --chain-id "$CHAIN_ID" --keyring-backend test
    dymd collect-gentxs
    

Running the Chain

Now start the chain!

dymd start

You should have a running local node!

Bootstrapping liquidity pools

To bootstrap the GAMM module with pools:

sh scripts/pools/pools_bootstrap.sh

Adding incentives

Creating incentives streams

After creating the pools above, we create 2 incentive streams through gov:

sh scripts/incentives/fund_incentives.sh

Wait for the gov proposal to pass, and validate with:

dymd q streamer streams
Locking tokens

To get incentives, we need to lock the LP tokens:

sh scripts/incentives/lockup_bootstrap.sh

validate with:

dymd q lockup module-balance
check rewards

Every minute a share of the rewards will be distributed!

validate with:

dymd q incentives active-gauges

# alternatively, watch the outpup - you will see the "amount" change every minute
#  watch -n1 -d "dymd q incentives active-gauges --output json | jq '.data[] | { "id": .id, "coins": .coins } '"

Debugging Container

Pre-requisite: Install Docker Install VSCode Install VSCode Go extension Install Devel

To debug, you can use the the following command to run the debug container:

make docker-run-debug

Then you can run the debugger with the following config for launch.json in VSCode:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Dymension Debug Container",
            "type": "go",
            "request": "attach",
            "mode": "remote",
            "port": 4000,
            "host": "127.0.0.1",
            "debugAdapter": "legacy" // To be remove in the future after https://github.com/golang/vscode-go/issues/3096 is fixed
        }
    ]
}

After that, you can run the debugger and set breakpoints in the code.

Example:

Add breakpoint to ctx in x/eibc/keeper/grpc_query.go :

func (q Querier) Params(goCtx context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) {
	if req == nil {
		return nil, status.Error(codes.InvalidArgument, "invalid request")
	}
	ctx := sdk.UnwrapSDKContext(goCtx)

	return &types.QueryParamsResponse{Params: q.GetParams(ctx)}, nil
}

Open your browser and go to http://localhost:1318/dymensionxyz/dymension/eibc/params and you will see debugger stop and print the value at the breakpoint.


For support, join our Discord community and find us in the Developer section.

Directories

Path Synopsis
app
cmd
testutil
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
delayedack/types
Package types is a reverse proxy.
Package types is a reverse proxy.
eibc/types
Package types is a reverse proxy.
Package types is a reverse proxy.
rollapp/types
Package types is a reverse proxy.
Package types is a reverse proxy.
sequencer/types
Package types is a reverse proxy.
Package types is a reverse proxy.
streamer/types
Package types is a reverse proxy.
Package types is a reverse proxy.

Jump to

Keyboard shortcuts

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