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.
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
-
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
Now start the chain!
dymd start
You should have a running local node!
To bootstrap the GAMM
module with pools:
sh scripts/pools/pools_bootstrap.sh
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
To get incentives, we need to lock the LP tokens:
sh scripts/incentives/lockup_bootstrap.sh
validate with:
dymd q lockup module-balance
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 } '"
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.