Skip to content

Commit

Permalink
docs: change rollappd to rollapp-wasm and update README (#53)
Browse files Browse the repository at this point in the history
  • Loading branch information
trinitys7 authored Apr 17, 2024
1 parent cf9baab commit 60196b3
Show file tree
Hide file tree
Showing 19 changed files with 192 additions and 321 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build Rollappd
name: Build Rollapp-wasm
on: ["push"]
jobs:
build:
Expand All @@ -21,7 +21,7 @@ jobs:
GOOS: ${{ matrix.targetos }}
GOARCH: ${{ matrix.arch }}

- name: Compile rollappd
- name: Compile rollapp-wasm
run: |
go mod download
cd rollappd
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmd/rollappd/rollappd
rollappd/rollappd
scripts/ibc/*.json
build/
release/
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ FROM ubuntu:latest

RUN apt-get update -y

COPY --from=go-builder /app/build/rollappd /usr/local/bin/
COPY --from=go-builder /app/build/rollapp-wasm /usr/local/bin/rollappd
COPY --from=go-builder /lib/libwasmvm.x86_64.so /lib/libwasmvm.x86_64.so
COPY --from=go-builder /lib/libwasmvm.aarch64.so /lib/libwasmvm.aarch64.so

Expand Down
19 changes: 10 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/make -f

PROJECT_NAME=rollappd
PROJECT_NAME=rollapp-wasm
BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
COMMIT := $(shell git log -1 --format='%H')

Expand All @@ -24,7 +24,7 @@ export GO111MODULE = on

# process linker flags
ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=dymension-rdk \
-X github.com/cosmos/cosmos-sdk/version.AppName=rollappd \
-X github.com/cosmos/cosmos-sdk/version.AppName=rollapp-wasm \
-X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \
-X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \
-X github.com/tendermint/tendermint/version.TMCoreSemVer=$(TM_VERSION)
Expand All @@ -41,16 +41,17 @@ BUILD_FLAGS := -ldflags '$(ldflags)'
all: install

.PHONY: install
install:
@echo "--> Ensure dependencies have not been modified"
@go mod verify
@echo "--> installing rollappd"
@go install $(BUILD_FLAGS) -v -mod=readonly ./rollappd
install: build
@echo "--> installing rollapp-wasm"
mv build/rollapp-wasm $(GOPATH)/bin/rollapp-wasm


.PHONY: build
build: ## Compiles the rollapd binary
go build -o build/rollappd $(BUILD_FLAGS) ./rollappd
build: go.sum ## Compiles the rollapd binary
@echo "--> Ensure dependencies have not been modified"
@go mod verify
@echo "--> building rollapp-wasm"
go build -o build/rollapp-wasm $(BUILD_FLAGS) ./rollappd


.PHONY: clean
Expand Down
125 changes: 112 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
<h1 align="center">Dymension Rollapp</h1>
<!-- markdownlint-enable MD033 -->

# Rollappd - A template RollApp chain
# Rollapp-wasm - A template RollApp chain

This repository hosts `rollappd`, a template implementation of a dymension rollapp.
This repository hosts `rollapp-wasm`, a template implementation of a dymension rollapp.

`rollappd` is an example of a working RollApp using `dymension-RDK` and `dymint`.
`rollapp-wasm` is an example of a working RollApp using `dymension-RDK` and `dymint`.

It uses Cosmos-SDK's [simapp](https://github.com/cosmos/cosmos-sdk/tree/main/simapp) as a reference, but with the following changes:

Expand All @@ -21,7 +21,7 @@ It uses Cosmos-SDK's [simapp](https://github.com/cosmos/cosmos-sdk/tree/main/sim

## Installing / Getting started

Build and install the ```rollappd``` binary:
Build and install the ```rollapp-wasm``` binary:

```shell
make install
Expand All @@ -32,13 +32,14 @@ make install
export the following variables:

```shell
export EXECUTABLE="rollapp-wasm"
export ROLLAPP_CHAIN_ID="rollappwasm_1234-1"
export KEY_NAME_ROLLAPP="rol-user"
export BASE_DENOM="awsm"
export DENOM=$(echo "$BASE_DENOM" | sed 's/^.//')
export MONIKER="$ROLLAPP_CHAIN_ID-sequencer"

export ROLLAPP_HOME_DIR="$HOME/.rollapp"
export ROLLAPP_HOME_DIR="$HOME/.rollapp-wasm"
export ROLLAPP_SETTLEMENT_INIT_DIR_PATH="${ROLLAPP_HOME_DIR}/init"
```

Expand All @@ -53,7 +54,7 @@ You can find out in <https://github.com/CosmWasm/wasmd#compile-time-parameters>
There are a few variables was allow blockchains to customize at compile time. If you build your own chain and import x/wasm, you can adjust a few items via module parameters, but a few others did not fit in that, as they need to be used by stateless ValidateBasic(). Thus, we made them as flags and set them in start.go so that they can be overridden on your custom chain.

```shell
rollappd start --max-label-size 64 --max-wasm-size 2048000 --max-wasm-proposal-size 2048000
rollapp-wasm start --max-label-size 64 --max-wasm-size 2048000 --max-wasm-proposal-size 2048000
```

Those flags are optional, the default value was set as:
Expand All @@ -75,7 +76,7 @@ sh scripts/download_release.sh v1.0.0
### Run rollapp

```shell
rollappd start
rollapp-wasm start
```

You should have a running local rollapp!
Expand All @@ -93,20 +94,22 @@ configuration with a remote hub node is also supported, the following variables
```shell
export HUB_RPC_ENDPOINT="http://localhost"
export HUB_RPC_PORT="36657" # default: 36657
export HUB_RPC_URL="http://${HUB_RPC_ENDPOINT}:${HUB_RPC_PORT}"
export HUB_RPC_URL="${HUB_RPC_ENDPOINT}:${HUB_RPC_PORT}"
export HUB_CHAIN_ID="dymension_100-1"

dymd config chain-id ${HUB_CHAIN_ID}
dymd config node ${HUB_RPC_URL}

export HUB_KEY_WITH_FUNDS="hub-user" # This key should exist on the keyring-backend test
```

### Create sequencer keys

create sequencer key using `dymd`

```shell
dymd keys add sequencer --keyring-dir ~/.rollapp/sequencer_keys --keyring-backend test
SEQUENCER_ADDR=`dymd keys show sequencer --address --keyring-backend test --keyring-dir ~/.rollapp/sequencer_keys`
dymd keys add sequencer --keyring-dir ~/.rollapp-wasm/sequencer_keys --keyring-backend test
SEQUENCER_ADDR=`dymd keys show sequencer --address --keyring-backend test --keyring-dir ~/.rollapp-wasm/sequencer_keys`
```

fund the sequencer account
Expand All @@ -115,10 +118,31 @@ fund the sequencer account
# this will retrieve the min bond amount from the hub
# if you're using an new address for registering a sequencer,
# you have to account for gas fees so it should the final value should be increased
BOND_AMOUNT="$(dymd q sequencer params -o json | jq -r '.params.min_bond.amount')$(dymd q sequencer params -o jsono | jq -r '.params.min_bond.denom')"
BOND_AMOUNT="$(dymd q sequencer params -o json --node ${HUB_RPC_URL} | jq -r '.params.min_bond.amount')$(dymd q sequencer params -o jsono | jq -r '.params.min_bond.denom')"
echo $BOND_AMOUNT

dymd tx bank send local-user dym1978q3tcxwg0ldzgv7ynfr3mzytr9qfsuwjt7tl 100000000000000000000000adym --keyring-backend test --broadcast-mode block --fees 20000000000000adym -y
# Extract the numeric part
NUMERIC_PART=$(echo $BOND_AMOUNT | sed 's/adym//')

# Add 100000000000000000000 for fees
NEW_NUMERIC_PART=$(echo "$NUMERIC_PART + 100000000000000000000" | bc)

# Append 'adym' back
TRANSFER_AMOUNT="${NEW_NUMERIC_PART}adym"

dymd tx bank send $HUB_KEY_WITH_FUNDS $SEQUENCER_ADDR ${TRANSFER_AMOUNT} --keyring-backend test --broadcast-mode block --fees 1dym -y --node ${HUB_RPC_URL} --chain-id ${HUB_CHAIN_ID}
```

### Generate denommetadata

```shell
sh scripts/settlement/generate_denom_metadata.sh
```

### Add genesis accounts

```shell
sh scripts/settlement/add_genesis_accounts.sh
```

### Register rollapp on settlement
Expand All @@ -138,16 +162,46 @@ sh scripts/settlement/register_sequencer_to_hub.sh
Modify `dymint.toml` in the chain directory (`~/.rollapp/config`)
set:

linux:

```shell
sed -i 's/settlement_layer.*/settlement_layer = "dymension"/' ${ROLLAPP_HOME_DIR}/config/dymint.toml
sed -i '/node_address =/c\node_address = '\"$HUB_RPC_URL\" "${ROLLAPP_HOME_DIR}/config/dymint.toml"
sed -i '/rollapp_id =/c\rollapp_id = '\"$ROLLAPP_CHAIN_ID\" "${ROLLAPP_HOME_DIR}/config/dymint.toml"
```

mac:

```shell
sed -i '' 's/settlement_layer.*/settlement_layer = "dymension"/' ${ROLLAPP_HOME_DIR}/config/dymint.toml
sed -i '' 's|node_address =.*|node_address = '\"$HUB_RPC_URL\"'|' "${ROLLAPP_HOME_DIR}/config/dymint.toml"
sed -i '' 's|rollapp_id =.*|rollapp_id = '\"$ROLLAPP_CHAIN_ID\"'|' "${ROLLAPP_HOME_DIR}/config/dymint.toml"
```

### Run rollapp locally

```shell
rollappd start
rollapp-wasm start
```

or as a systemd service:

```shell
sudo tee /etc/systemd/system/rollapp-wasm.service > /dev/null <<EOF
[Unit]
Description=rollapp-wasm
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=$(which rollapp-wasm) start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
```

## Setup IBC between rollapp and local dymension hub node
Expand Down Expand Up @@ -175,6 +229,25 @@ After successful run, the new established channels will be shown
rly start hub-rollapp
```

or as a systemd service:

```shell
sudo tee /etc/systemd/system/relayer.service > /dev/null <<EOF
[Unit]
Description=rollapp
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=$(which rly) start hub-rollapp
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
```

### Deploy the installed contract

```shell
Expand All @@ -186,3 +259,29 @@ sh scripts/wasm/deploy_contract.sh
```shell
sh scripts/wasm/ibc_transfer.sh
```

### Configure empty block time to 1hr

Stop the rollapp:

```shell
kill $(pgrep rollapp-wasm)
```

Linux:

```shell
sed -i 's/empty_blocks_max_time = "3s"/empty_blocks_max_time = "3600s"/' ${ROLLAPP_HOME_DIR}/config/dymint.toml
```

Mac:

```shell
sed -i '' 's/empty_blocks_max_time = "3s"/empty_blocks_max_time = "3600s"/' ${ROLLAPP_HOME_DIR}/config/dymint.toml
```

Start the rollapp:

```shell
rollapp-wasm start
```
Loading

0 comments on commit 60196b3

Please sign in to comment.