{"id":13563129,"url":"https://github.com/dymensionxyz/rollapp-wasm","last_synced_at":"2026-03-04T07:30:51.277Z","repository":{"id":227015869,"uuid":"769089408","full_name":"dymensionxyz/rollapp-wasm","owner":"dymensionxyz","description":"WASM DRS - WASM Dymension Rollapp Standard","archived":false,"fork":false,"pushed_at":"2026-01-29T16:09:31.000Z","size":2447,"stargazers_count":33,"open_issues_count":7,"forks_count":23,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-01-30T03:21:01.417Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dymensionxyz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-03-08T10:19:43.000Z","updated_at":"2025-11-25T13:02:11.000Z","dependencies_parsed_at":"2025-09-11T14:37:50.682Z","dependency_job_id":"63267ab8-9ee7-4219-a466-0d006af6a50f","html_url":"https://github.com/dymensionxyz/rollapp-wasm","commit_stats":null,"previous_names":["dymensionxyz/rollapp-wasm"],"tags_count":32,"template":false,"template_full_name":"dymensionxyz/rollapp","purl":"pkg:github/dymensionxyz/rollapp-wasm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dymensionxyz%2Frollapp-wasm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dymensionxyz%2Frollapp-wasm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dymensionxyz%2Frollapp-wasm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dymensionxyz%2Frollapp-wasm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dymensionxyz","download_url":"https://codeload.github.com/dymensionxyz/rollapp-wasm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dymensionxyz%2Frollapp-wasm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30075427,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T05:31:57.858Z","status":"ssl_error","status_checked_at":"2026-03-04T05:31:38.462Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T13:01:15.456Z","updated_at":"2026-03-04T07:30:51.231Z","avatar_url":"https://github.com/dymensionxyz.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 --\u003e\n\u003ch1 align=\"center\"\u003eDymension Rollapp\u003c/h1\u003e\n\u003c!-- markdownlint-enable MD033 --\u003e\n\n# Rollapp-wasm - A template RollApp chain\n\nThis repository hosts `rollapp-wasm`, a template implementation of a dymension rollapp.\n\n`rollapp-wasm` is an example of a working RollApp using `dymension-RDK` and `dymint`.\n\nIt uses Cosmos-SDK's [simapp](https://github.com/cosmos/cosmos-sdk/tree/main/simapp) as a reference, but with the following changes:\n\n- minimal app setup\n- wired IBC for [ICS 20 Fungible Token Transfers](https://github.com/cosmos/ibc/tree/main/spec/app/ics-020-fungible-token-transfer)\n- Uses `dymint` for block sequencing and replacing `tendermint`\n- Uses modules from `dymension-RDK` to sync with `dymint` and provide RollApp custom logic\n\n## Overview\n\n**Note**: Requires [Go 1.21](https://go.dev/). Requires [Dasel](https://formulae.brew.sh/formula/dasel) and [JQ](https://formulae.brew.sh/formula/jq).\n\n## Installing / Getting started\n\nBuild and install the ```rollapp-wasm``` binary:\n\n```shell\nexport BECH32_PREFIX=rol\nmake install BECH32_PREFIX=$BECH32_PREFIX\n```\n\n### Initial configuration\n\nexport the following variables:\n\n```shell\nexport EXECUTABLE=\"rollapp-wasm\"\n\nexport CELESTIA_NETWORK=\"mock\" # for a testnet RollApp use \"arabica\", for mainnet - \"celestia\"\nexport CELESTIA_HOME_DIR=\"${HOME}/.da\"\n\nexport BECH32_PREFIX=\"rol\"\nexport ROLLAPP_CHAIN_ID=\"rollappwasm_1234-1\"\nexport KEY_NAME_ROLLAPP=\"rol-user\"\nexport BASE_DENOM=\"awsm\"\nexport DENOM=$(echo \"$BASE_DENOM\" | sed 's/^.//')\nexport MONIKER=\"$ROLLAPP_CHAIN_ID-sequencer\"\n\nexport ROLLAPP_HOME_DIR=\"$HOME/.rollapp-wasm\"\nexport ROLLAPP_SETTLEMENT_INIT_DIR_PATH=\"${ROLLAPP_HOME_DIR}/init\"\n\nexport SETTLEMENT_LAYER=\"mock\" # when running a local hub or a public network use \"dymension\"\n```\n\nAnd initialize the rollapp:\n\n```shell\nsh scripts/init.sh\n```\n\nYou can find out in \u003chttps://github.com/CosmWasm/wasmd#compile-time-parameters\u003e that:\n\nThere 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.\n\n```shell\nrollapp-wasm start --max-label-size 64 --max-wasm-size 2048000 --max-proposal-wasm-size 2048000\n```\n\nThose flags are optional, the default value was set as:\n\n```go\nwasmtypes.MaxLabelSize          = 128\nwasmtypes.MaxWasmSize           = 819200\nwasmtypes.MaxProposalWasmSize   = 3145728\n```\n\n### Download cw20-ics20 smartcontract\n\nDownload cw20-ics20 smartcontract with a specific version:\n\n```shell\nsh scripts/download_release.sh v1.0.0\n```\n\n### Run rollapp\n\n```shell\nrollapp-wasm start\n```\n\nYou should have a running local rollapp!\n\n## Run a rollapp with local settlement node\n\n### Run local dymension hub node\n\nFollow the instructions on [Dymension docs](https://docs.dymension.xyz/validate/dymension/build-dymd?network=localhost) to run local dymension hub node\n\nall scripts are adjusted to use local hub node that's hosted on the default port `localhost:36657`.\n\nconfiguration with a remote hub node is also supported, the following variables must be set:\n\n```shell\nexport SETTLEMENT_LAYER=\"dymension\" # when running a local hub or a public network use \"dymension\"\n\nexport HUB_RPC_ENDPOINT=\"http://localhost\"\nexport HUB_RPC_PORT=\"36657\" # default: 36657\nexport HUB_RPC_URL=\"${HUB_RPC_ENDPOINT}:${HUB_RPC_PORT}\"\nexport HUB_CHAIN_ID=\"dymension_100-1\"\nexport HUB_REST_URL=\"http://localhost:1318\" # required for relayer\n\ndymd config chain-id ${HUB_CHAIN_ID}\ndymd config node ${HUB_RPC_URL}\n\nexport HUB_KEY_WITH_FUNDS=\"hub-user\" # This key should exist on the keyring-backend test\n```\n\n### Create sequencer keys\n\ncreate sequencer key using `dymd`\n\n```shell\ndymd keys add sequencer --keyring-dir ~/.rollapp-wasm/sequencer_keys --keyring-backend test\nSEQUENCER_ADDR=`dymd keys show sequencer --address --keyring-backend test --keyring-dir ~/.rollapp-wasm/sequencer_keys`\n```\n\nfund the sequencer account\n\n```shell\n# this will retrieve the min bond amount from the hub\n# if you're using an new address for registering a sequencer,\n# you have to account for gas fees so it should the final value should be increased\nBOND_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')\"\necho $BOND_AMOUNT\n\n# Extract the numeric part\nNUMERIC_PART=$(echo $BOND_AMOUNT | sed 's/adym//')\n\n# Add 100000000000000000000 for fees\nNEW_NUMERIC_PART=$(echo \"$NUMERIC_PART + 100000000000000000000\" | bc)\n\n# Append 'adym' back\nTRANSFER_AMOUNT=\"${NEW_NUMERIC_PART}adym\"\n\ndymd tx bank send $HUB_KEY_WITH_FUNDS $SEQUENCER_ADDR ${TRANSFER_AMOUNT} --keyring-backend test --fees 1dym -y --node ${HUB_RPC_URL} --chain-id ${HUB_CHAIN_ID}\n```\n\n### Generate denommetadata\n\n```shell\nsh scripts/settlement/generate_denom_metadata.sh\n```\n\n### Add genesis accounts\n\n```shell\nsh scripts/settlement/add_genesis_accounts.sh\n```\n\n### Register rollapp on settlement\n\n```shell\nsh scripts/settlement/register_rollapp_to_hub.sh\n```\n\n### Register sequencer for rollapp on settlement\n\n```shell\nsh scripts/settlement/register_sequencer_to_hub.sh\n```\n\n### Configure the rollapp\n\nModify `dymint.toml` in the chain directory (`~/.rollapp/config`)\n\n```shell\ndasel put -f \"${ROLLAPP_HOME_DIR}\"/config/dymint.toml \"settlement_layer\" -v \"dymension\"\ndasel put -f \"${ROLLAPP_HOME_DIR}\"/config/dymint.toml \"settlement_node_address\" -v \"$HUB_RPC_URL\"\ndasel put -f \"${ROLLAPP_HOME_DIR}\"/config/dymint.toml \"rollapp_id\" -v \"$ROLLAPP_CHAIN_ID\"\ndasel put -f \"${ROLLAPP_HOME_DIR}\"/config/dymint.toml \"max_idle_time\" -v \"2s\"\ndasel put -f \"${ROLLAPP_HOME_DIR}\"/config/dymint.toml \"max_proof_time\" -v \"1s\"\ndasel put -f \"${ROLLAPP_HOME_DIR}\"/config/dymint.toml \"batch_submit_time\" -v \"10s\"\ndasel put -f \"${ROLLAPP_HOME_DIR}\"/config/app.toml \"minimum-gas-prices\" -v \"1awsm\"\n```\n\n### Run rollapp locally\n\n```shell\nrollapp-wasm start\n```\n\nor as a systemd service:\n\n```shell\nsudo tee /etc/systemd/system/rollapp-wasm.service \u003e /dev/null \u003c\u003cEOF\n[Unit]\nDescription=rollapp-wasm\nAfter=network.target\n[Service]\nType=simple\nUser=$USER\nExecStart=$(which rollapp-wasm) start\nRestart=on-failure\nRestartSec=10\nLimitNOFILE=65535\n[Install]\nWantedBy=multi-user.target\nEOF\nsudo systemctl daemon-reload\n```\n\n## Set Sequencer reward address (optional)\n\n```shell\n# Add a new key for the reward address\n$EXECUTABLE keys add reward\nREWARD=$($EXECUTABLE keys show reward -a)\n\n# This assumes mock default sequencer consensus key location. for different location, update the path.\nKEY=\"${ROLLAPP_HOME_DIR}/config/priv_validator_key.json\"\n\n# set the kerying backend to test\n$EXECUTABLE config keyring-backend test\n\n# Import the consensus key into the rollapp keyring\n$EXECUTABLE tx sequencer unsafe-import-cons-key sequencerConsensusKey $KEY\n\n# Update the sequencer reward address\n$EXECUTABLE tx sequencer create-sequencer sequencerConsensusKey --from $KEY_NAME_ROLLAPP --fees 20000000000000$BASE_DENOM --reward-addr $REWARD --keyring-backend test -y\n```\n\n## Setup IBC between rollapp and local dymension hub node\n\n### Install dymension relayer\n\n```shell\ngit clone https://github.com/dymensionxyz/go-relayer.git --branch v0.3.4-v2.5.2-relayer-canon-6\ncd go-relayer \u0026\u0026 make install\n```\n\n### Establish IBC channel\n\nwhile the rollapp and the local dymension hub node running, run:\n\n```shell\nsh scripts/ibc/setup_ibc.sh\n```\n\nAfter successful run, the new established channels will be shown\n\n### run the relayer\n\n```shell\nrly start hub-rollapp\n```\n\nor as a systemd service:\n\n```shell\nsudo tee /etc/systemd/system/relayer.service \u003e /dev/null \u003c\u003cEOF\n[Unit]\nDescription=rollapp\nAfter=network.target\n[Service]\nType=simple\nUser=$USER\nExecStart=$(which rly) start hub-rollapp\nRestart=on-failure\nRestartSec=10\nLimitNOFILE=65535\n[Install]\nWantedBy=multi-user.target\nEOF\n```\n\n### Deploy the installed contract\n\n```shell\nsh scripts/wasm/deploy_contract.sh\n```\n\n### Make the ibc transfer\n\n```shell\nsh scripts/wasm/ibc_transfer.sh\n```\n\n### Configure empty block time to 1hr\n\nStop the rollapp:\n\n```shell\nkill $(pgrep rollapp-wasm)\n```\n\nLinux:\n\n```shell\nsed -i 's/empty_blocks_max_time = \"3s\"/empty_blocks_max_time = \"3600s\"/' ${ROLLAPP_HOME_DIR}/config/dymint.toml\n```\n\nMac:\n\n```shell\nsed -i '' 's/empty_blocks_max_time = \"3s\"/empty_blocks_max_time = \"3600s\"/' ${ROLLAPP_HOME_DIR}/config/dymint.toml\n```\n\nStart the rollapp:\n\n```shell\nrollapp-wasm start\n```\n\n## Developer\n\nFor support, join our [Discord](http://discord.gg/dymension) community and find us in the Developer section.\n\n### Setup push hooks\n\nTo setup push hooks, run the following command:\n\n```sh\n./scripts/setup_push_hooks.sh\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdymensionxyz%2Frollapp-wasm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdymensionxyz%2Frollapp-wasm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdymensionxyz%2Frollapp-wasm/lists"}