Dymension Hub
Dymension Hub

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
- Overview - Table of Contents - Prerequisites - Installation - Initializingdymd
- Running the Chain
- Bootstrapping liquidity pools
- Adding incentives
- Creating incentives streams
- Locking tokens
- Checking rewards
- Updating a community-driven distribution
- Debugging Container
- Developer
- Setup push hooks
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:
bash scripts/setup_local.sh
- Manually:
export CHAINID="dymension100-1"
export KEY_NAME="hub-user"
export M
Second, create genesis and init dymension chain:
dymd init "$MONIKERNAME" --chain-id "$CHAINID"
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 "$KEYNAME" 670dym --chain-id "$CHAINID" --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 3 incentive streams through gov:
sh scripts/incentives/fund_incentives.sh
Wait for the gov proposal to pass, and validate with:
dymd q streamer streams
The last stream is community-driven and governed by x/sponsorship.
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
Checking rewards
Every minute a share of the rewards will be distributed!
validate with:
dymd q incentives active-gauges
alternatively, watch the output - you will see the "amount" change every minute
watch -n1 -d "dymd q incentives active-gauges --output json | jq '.data[] | { "id": .id, "coins": .coins } '"
Updating a community-driven distribution
The following script casts two votes for a community-driven distribution.
sh scripts/incentives/sponsorship_vote.sh
This will change the corresponding stream distribution at the end of the current epoch.
dymd q streamer streams
The community-driven distribution may be queried with:
dymd q sponsorship distribution
Debugging Container
Pre-requisite: Install Docker Install VSCode Install VSCode Go extension Install Delve
To debug, you can use 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 removed 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.
Developer
For support, join our Discord community and find us in the Developer section. See Contribution guidelines.
Setup push hooks
To setup push hooks, run the following command:
./scripts/setup-git-hooks.sh