From 4ff3b70374718c5c61e4b6ddda1bd987a08c4b24 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 14:28:38 +0300 Subject: [PATCH 01/15] cp gm-world.md gm-world-tia-gas.md --- tutorials/gm-world-tia-gas.md | 229 ++++++++++++++++++++++++++++++++++ 1 file changed, 229 insertions(+) create mode 100644 tutorials/gm-world-tia-gas.md diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md new file mode 100644 index 000000000..65ffd67e3 --- /dev/null +++ b/tutorials/gm-world-tia-gas.md @@ -0,0 +1,229 @@ +--- +description: Build a sovereign rollup using only Rollkit CLI and a local DA network. +--- + +# GM world rollup + +## ๐ŸŒž Introduction {#introduction} + +This tutorial will guide you through building a sovereign `gm-world` rollup (`gm` stands for "good morning") using Rollkit. Unlike the [quick start guide](https://rollkit.dev/tutorials/quick-start), this tutorial provides a more practical approach to understanding sovereign rollup development. + +We will cover: + +- Building and configuring a Cosmos-SDK application-specific rollup blockchain. +- Posting rollup data to a Data Availability (DA) network. +- Executing transactions (the end goal). + +No prior understanding of the build process is required, just that it utilizes the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) for blockchain applications. + + + + +:::tip + +::: + + + +## ๐Ÿ› ๏ธ Dependencies {#dependencies} + +Rollkit uses the [Go programming language](https://go.dev/dl/). Here's how to install it: + +- **Linux or macOS**: Run the provided script: + + ```bash-vue + curl -sSL https://rollkit.dev/install-go.sh | bash -s {{constants.golangVersion}} + ``` + + + +- **Windows**: Download and execute the installer. + + +## ๐ŸŒ Running a Local DA Network {#running-local-da} + +Learn to run a local DA network, designed for educational purposes, on your machine. + +To set up a local DA network node: + +```bash-vue +curl -sSL https://rollkit.dev/install-local-da.sh | bash -s {{constants.localDALatestTag}} +``` + +This script builds and runs the node, now listening on port `7980`. + +## ๐Ÿ—๏ธ Building Your Sovereign Rollup {#building-your-sovereign-rollup} + +With the local DA network running, letโ€™s prepare your rollup blockchain. + +To make it simple we will download a repository with a `gm-world` rollup that has an `init.sh` script that does all the setup for you. + +Download and build a `gm-world` rollup with an interactive script in a new terminal: + +::: warning +In order to run it you need to have the jq command line tool installed. You can install it by running `sudo apt-get install jq` on Ubuntu or `brew install jq` on macOS. +::: +::: tip +If you get errors of `gmd` not found, you may need to add the `go/bin` directory to your PATH. You can do this by running `export PATH=$PATH:$HOME/go/bin` and then running the `init.sh` script manually again. +::: + +```bash +cd $HOME && bash -c "$(curl -sSL https://rollkit.dev/install-gm-rollup.sh)" +``` + +## ๐Ÿš€ Starting your rollup {#start-your-rollup} + +Start the rollup, posting to the local DA network: + +```bash +gmd start --rollkit.aggregator --minimum-gas-prices="0.025stake" --rollkit.da_address http://localhost:7980 +``` + +Notice how we specified the DA network address along with a few other flags. Now you should see the logs of the running node: + +```bash +12:21PM INF starting node with ABCI CometBFT in-process module=server +12:21PM INF starting node with Rollkit in-process module=server +12:21PM INF service start impl=multiAppConn module=proxy msg="Starting multiAppConn service" +12:21PM INF service start connection=query impl=localClient module=abci-client msg="Starting localClient service" +12:21PM INF service start connection=snapshot impl=localClient module=abci-client msg="Starting localClient service" +12:21PM INF service start connection=mempool impl=localClient module=abci-client msg="Starting localClient service" +12:21PM INF service start connection=consensus impl=localClient module=abci-client msg="Starting localClient service" +12:21PM INF service start impl=EventBus module=events msg="Starting EventBus service" +12:21PM INF service start impl=PubSub module=pubsub msg="Starting PubSub service" +12:21PM INF Using default mempool ttl MempoolTTL=25 module=BlockManager +12:21PM INF service start impl=IndexerService module=txindex msg="Starting IndexerService service" +12:21PM INF service start impl=RPC module=server msg="Starting RPC service" +12:21PM INF service start impl=Node module=server msg="Starting Node service" +12:21PM INF starting P2P client module=server +12:21PM INF serving HTTP listen address=127.0.0.1:26657 module=server +12:21PM INF listening on address=/ip4/127.0.0.1/tcp/26656/p2p/12D3KooWSicdPmMTLf9fJbSSHZc9UVP1CbNqKPpbYVbgxHvbhAUY module=p2p +12:21PM INF listening on address=/ip4/163.172.162.109/tcp/26656/p2p/12D3KooWSicdPmMTLf9fJbSSHZc9UVP1CbNqKPpbYVbgxHvbhAUY module=p2p +12:21PM INF no seed nodes - only listening for connections module=p2p +12:21PM INF working in aggregator mode block time=1000 module=server +12:21PM INF Creating and publishing block height=22 module=BlockManager +12:21PM INF starting gRPC server... address=127.0.0.1:9290 module=grpc-server +12:21PM INF finalized block block_app_hash=235D3710D61F347DBBBDD6FD63AA7687842D1EF9CB475C712856D7DA32F82F09 height=22 module=BlockManager num_txs_res=0 num_val_updates=0 +12:21PM INF executed block app_hash=235D3710D61F347DBBBDD6FD63AA7687842D1EF9CB475C712856D7DA32F82F09 height=22 module=BlockManager +12:21PM INF indexed block events height=22 module=txindex +... +``` + +Good work so far, we have a Rollup node, DA network node, now we can start submitting transactions. + +## ๐Ÿ’ธ Transactions {#transactions} + +First, list your keys: + +```bash +gmd keys list --keyring-backend test +``` + +You should see an output like the following + +```bash +- address: gm18k57hn42ujcccyn0n5v7r6ydpacycn2wkt7uh9 + name: gm-key-2 + pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Al92dlOeLpuAiOUSIaJapkIveiwlhlEdz/O5CrniMdwH"}' + type: local +- address: gm1e4fqspwdsy0dzkmzsdhkadfcrd0udngw0f88pw + name: gm-key + pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AwdsLY+2US2VV+rbyfi60GB4/Ir/FeTIkLJ3CWVhUF6b"}' + type: local +- address: gm1vvl79phavqruppr6f5zy4ypxy7znshrqam48qy + name: gm-relay + pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AlnSEnBUv5GO86fMWe11qth1+R76g2e1lv8c1FWhLpqP"}' + type: local +``` + +For convenience we export two of our keys like this: + +```bash +export KEY1=gm18k57hn42ujcccyn0n5v7r6ydpacycn2wkt7uh9 +export KEY2=gm1e4fqspwdsy0dzkmzsdhkadfcrd0udngw0f88pw +``` + +Now let's submit a transaction that sends coins from one account to another (don't worry about all the flags, for now, we just want to submit transaction from a high level perspective): + +```bash +gmd tx bank send $KEY1 $KEY2 42069stake --keyring-backend test --chain-id gm --fees 5000stake +``` + +You'll be prompted to accept the transaction: + +```bash +auth_info: + fee: + amount: [] + gas_limit: "200000" + granter: "" + payer: "" + signer_infos: [] + tip: null +body: + extension_options: [] + memo: "" + messages: + - '@type': /cosmos.bank.v1beta1.MsgSend + amount: + - amount: "42069" + denom: stake + from_address: gm18k57hn42ujcccyn0n5v7r6ydpacycn2wkt7uh9 + to_address: gm1e4fqspwdsy0dzkmzsdhkadfcrd0udngw0f88pw + non_critical_extension_options: [] + timeout_height: "0" +signatures: [] +confirm transaction before signing and broadcasting [y/N]: // [!code focus] +``` + +Confirm and sign the transaction as prompted. now you see the transaction hash at the output: + +```bash +//... + +txhash: 677CAF6C80B85ACEF6F9EC7906FB3CB021322AAC78B015FA07D5112F2F824BFF +``` + +## โš–๏ธ Checking Balances {#balances} + +Query balances after the transaction: + +```bash +gmd query bank balances $KEY2 +``` + +The receiverโ€™s balance should show an increase. + +```bash +balances: // [!code focus] +- amount: "10000000000000000000042069" // [!code focus] + denom: stake +pagination: + next_key: null + total: "0" +``` + +For the senderโ€™s balance: + +```bash +gmd query bank balances $KEY1 +``` + +Output: + +```bash +balances: // [!code focus] +- amount: "9999999999999999999957931" // [!code focus] + denom: stake +pagination: + next_key: null + total: "0" +``` + +## ๐ŸŽ‰ Next steps + +Congratulations! You've built a local rollup that posts to a +local DA network. So far so good, keep diving deeper if you like it. Good luck! From e3d63fb0fe8d4a02731bf5ef54982e9d39fc3240 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 14:40:33 +0300 Subject: [PATCH 02/15] Checkpoint TIA as gas token --- tutorials/gm-world-tia-gas.md | 84 ++++++++++++++++++++++++++++++++--- 1 file changed, 78 insertions(+), 6 deletions(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 65ffd67e3..92576254d 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -1,18 +1,18 @@ --- -description: Build a sovereign rollup using only Rollkit CLI and a local DA network. +description: Build a sovereign rollup using only Rollkit CLI and a local DA network, with TIA as the gas token. --- # GM world rollup ## ๐ŸŒž Introduction {#introduction} -This tutorial will guide you through building a sovereign `gm-world` rollup (`gm` stands for "good morning") using Rollkit. Unlike the [quick start guide](https://rollkit.dev/tutorials/quick-start), this tutorial provides a more practical approach to understanding sovereign rollup development. +This tutorial will guide you through building a sovereign `gm-world` rollup using Rollkit, with `TIA` as the gas token. Unlike the [quick start guide](https://rollkit.dev/tutorials/quick-start), this tutorial provides a more practical approach to understanding sovereign rollup development using `TIA` as the gas token. We will cover: - Building and configuring a Cosmos-SDK application-specific rollup blockchain. - Posting rollup data to a Data Availability (DA) network. -- Executing transactions (the end goal). +- Executing transactions using TIA as the gas token (the end goal). No prior understanding of the build process is required, just that it utilizes the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) for blockchain applications. @@ -79,10 +79,16 @@ cd $HOME && bash -c "$(curl -sSL https://rollkit.dev/install-gm-rollup.sh)" Start the rollup, posting to the local DA network: ```bash -gmd start --rollkit.aggregator --minimum-gas-prices="0.025stake" --rollkit.da_address http://localhost:7980 +gmd start --rollkit.aggregator --rollkit.da_address http://localhost:7980 --minimum-gas-prices="0.001337ibc/C3E53D20BC7A4CC993B17C7971F8ECD06A433C10B6A96F4C4C3714F0624C56DA,0.025stake" ``` -Notice how we specified the DA network address along with a few other flags. Now you should see the logs of the running node: +Note that we specified the gas token to be IBC TIA. We still haven't made an IBC connection to Celestia's Mocha testnet, however, if we assume our first channel is going to be an ICS-20 transfer channel to Celestia, we can already calculate the token denom using this formula: + +```js +"ibc/" + toHex(sha256(toUtf8("transfer/channel-0/utia"))).toUpperCase(); +``` + +Now you should see the logs of the running node: ```bash 12:21PM INF starting node with ABCI CometBFT in-process module=server @@ -112,7 +118,73 @@ Notice how we specified the DA network address along with a few other flags. Now ... ``` -Good work so far, we have a Rollup node, DA network node, now we can start submitting transactions. +## โœจ Connecting to Celestia Mocha testnet using IBC {#ibc-to-celestia} + +Next, we're going to create an IBC connection between our rollup and the Celestia Mocha testnet. This will allow us to send TIA to our rollup in order to use it as a gas token. + +Install the IBC relayer: + +```bash +npm i -g @confio/relayer +``` + +After installation, `ibc-setup` and `ibc-relayer` executables should be available. + +Configure the relayer: + +```bash +mkdir -p "$HOME/.ibc-setup" + +echo $'version: 1 + +chains: + gm_rollup: + chain_id: gm + prefix: gm + gas_price: 0stake + hd_path: m/44\'/118\'/0\'/0/0 + ics20_port: transfer + estimated_block_time: 1000 + estimated_indexer_time: 250 + rpc: + - http://localhost:26657 + mocha: + chain_id: mocha-4 + prefix: celestia + gas_price: 0.02utia + hd_path: m/44\'/118\'/0\'/0/0 + ics20_port: transfer + estimated_block_time: 7000 + estimated_indexer_time: 250 + rpc: + - https://rpc-mocha.pops.one:443 +' > "$HOME/.ibc-setup/registry.yaml" + +echo 'src: gm_rollup +dest: mocha +mnemonic: regret resist either bid upon yellow leaf early symbol win market vital +' > "$HOME/.ibc-setup/app.yaml" +``` + +Get the relayer accounts: + +```bash +ibc-setup keys list + +# Output should be: +# gm_rollup: gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc +# mocha: celestia1jqevcsld0dqpjp3csfg7alkv3lehvn8u04ymsu +``` + +Note: These accounts should always be the same because of the hardcoded mnemonic that we've set in `$HOME/.ibc-setup/app.yaml`. + +Fund the relayer: + +- On Celestia: https://docs.celestia.org/nodes/mocha-testnet#mocha-testnet-faucet +- On our rollup: + ```bash + gmd tx bank send gm-key-2 gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc 10000000stake --keyring-backend test --chain-id gm --fees 5000stake -y + ``` ## ๐Ÿ’ธ Transactions {#transactions} From 308e11b7ec679df23ab70b7ede47a7fe026d0f16 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 16:08:07 +0300 Subject: [PATCH 03/15] s/ts-relayer/rly/g --- tutorials/gm-world-tia-gas.md | 129 +++++++++++++++++++++++----------- 1 file changed, 87 insertions(+), 42 deletions(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 92576254d..05fe4bc99 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -125,7 +125,9 @@ Next, we're going to create an IBC connection between our rollup and the Celesti Install the IBC relayer: ```bash -npm i -g @confio/relayer +git clone --depth 1 --branch v2.5.2 https://github.com/cosmos/relayer.git /tmp/relayer +cd /tmp/relayer +make install ``` After installation, `ibc-setup` and `ibc-relayer` executables should be available. @@ -133,58 +135,101 @@ After installation, `ibc-setup` and `ibc-relayer` executables should be availabl Configure the relayer: ```bash -mkdir -p "$HOME/.ibc-setup" - -echo $'version: 1 - +rly config init + +mkdir -p /home/assafmo/.relayer/keys/{gm,mocha-4} + +echo $'global: + api-listen-addr: :5183 + timeout: 10s + memo: "" + light-cache-size: 20 + log-level: info + ics20-memo-limit: 0 + max-receiver-size: 150 chains: - gm_rollup: - chain_id: gm - prefix: gm - gas_price: 0stake - hd_path: m/44\'/118\'/0\'/0/0 - ics20_port: transfer - estimated_block_time: 1000 - estimated_indexer_time: 250 - rpc: - - http://localhost:26657 - mocha: - chain_id: mocha-4 - prefix: celestia - gas_price: 0.02utia - hd_path: m/44\'/118\'/0\'/0/0 - ics20_port: transfer - estimated_block_time: 7000 - estimated_indexer_time: 250 - rpc: - - https://rpc-mocha.pops.one:443 -' > "$HOME/.ibc-setup/registry.yaml" - -echo 'src: gm_rollup -dest: mocha -mnemonic: regret resist either bid upon yellow leaf early symbol win market vital -' > "$HOME/.ibc-setup/app.yaml" + gm_rollup: + type: cosmos + value: + key-directory: /home/assafmo/.relayer/keys/gm + key: default + chain-id: gm + rpc-addr: http://localhost:26657 + account-prefix: gm + keyring-backend: test + gas-adjustment: 1.2 + gas-prices: 0.025stake + min-gas-amount: 0 + max-gas-amount: 0 + debug: false + timeout: 20s + block-timeout: "" + output-format: json + sign-mode: direct + extra-codecs: [] + coin-type: 118 + signing-algorithm: "" + broadcast-mode: batch + min-loop-duration: 0s + extension-options: [] + feegrants: null + mocha: + type: cosmos + value: + key-directory: /home/assafmo/.relayer/keys/mocha-4 + key: default + chain-id: mocha-4 + rpc-addr: https://rpc-mocha.pops.one:443 + account-prefix: celestia + keyring-backend: test + gas-adjustment: 1.2 + gas-prices: 0.02utia + min-gas-amount: 0 + max-gas-amount: 0 + debug: false + timeout: 20s + block-timeout: "" + output-format: json + sign-mode: direct + extra-codecs: [] + coin-type: 118 + signing-algorithm: "" + broadcast-mode: batch + min-loop-duration: 0s + extension-options: [] + feegrants: null +paths: {} +' > "$HOME/.relayer/config/config.yaml" + +rly keys restore gm_rollup a "regret resist either bid upon yellow leaf early symbol win market vital" +rly keys restore mocha a "regret resist either bid upon yellow leaf early symbol win market vital" ``` Get the relayer accounts: ```bash -ibc-setup keys list +rly address gm_rollup a # => gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc +rly address mocha a # => celestia1jqevcsld0dqpjp3csfg7alkv3lehvn8u04ymsu +``` + +Note: These accounts should always be the same because of the hardcoded mnemonics that we've loaded in `rly keys restore`. + +Fund the relayer on our rollup: -# Output should be: -# gm_rollup: gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc -# mocha: celestia1jqevcsld0dqpjp3csfg7alkv3lehvn8u04ymsu +```bash +gmd tx bank send gm-key-2 gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc 10000000stake --keyring-backend test --chain-id gm --fees 5000stake -y ``` -Note: These accounts should always be the same because of the hardcoded mnemonic that we've set in `$HOME/.ibc-setup/app.yaml`. +Fund the relayer on Celestia: -Fund the relayer: +https://docs.celestia.org/nodes/mocha-testnet#mocha-testnet-faucet -- On Celestia: https://docs.celestia.org/nodes/mocha-testnet#mocha-testnet-faucet -- On our rollup: - ```bash - gmd tx bank send gm-key-2 gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc 10000000stake --keyring-backend test --chain-id gm --fees 5000stake -y - ``` +Verify the relayer is funded: + +```bash +rly q balance mocha a # => address {celestia1jqevcsld0dqpjp3csfg7alkv3lehvn8u04ymsu} balance {10000000utia} +rly q balance gm_rollup a # => address {gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc} balance {10000000stake} +``` ## ๐Ÿ’ธ Transactions {#transactions} From d99b8e7d55ccfccc4083adfd0a64050f5f195562 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 17:44:22 +0300 Subject: [PATCH 04/15] TIA as gas token tutorial is done --- tutorials/gm-world-tia-gas.md | 140 ++++++++++++---------------------- 1 file changed, 50 insertions(+), 90 deletions(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 05fe4bc99..cba1e769a 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -12,7 +12,7 @@ We will cover: - Building and configuring a Cosmos-SDK application-specific rollup blockchain. - Posting rollup data to a Data Availability (DA) network. -- Executing transactions using TIA as the gas token (the end goal). +- Executing transactions using `TIA` as the gas token (the end goal). No prior understanding of the build process is required, just that it utilizes the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) for blockchain applications. @@ -79,10 +79,10 @@ cd $HOME && bash -c "$(curl -sSL https://rollkit.dev/install-gm-rollup.sh)" Start the rollup, posting to the local DA network: ```bash -gmd start --rollkit.aggregator --rollkit.da_address http://localhost:7980 --minimum-gas-prices="0.001337ibc/C3E53D20BC7A4CC993B17C7971F8ECD06A433C10B6A96F4C4C3714F0624C56DA,0.025stake" +gmd start --rollkit.aggregator --rollkit.da_address http://localhost:7980 --minimum-gas-prices="0.02ibc/C3E53D20BC7A4CC993B17C7971F8ECD06A433C10B6A96F4C4C3714F0624C56DA,0.025stake" ``` -Note that we specified the gas token to be IBC TIA. We still haven't made an IBC connection to Celestia's Mocha testnet, however, if we assume our first channel is going to be an ICS-20 transfer channel to Celestia, we can already calculate the token denom using this formula: +Note that we specified the gas token to be IBC `TIA`. We still haven't made an IBC connection to Celestia's Mocha testnet, however, if we assume our first channel is going to be an ICS-20 transfer channel to Celestia, we can already calculate the token denom using this formula: ```js "ibc/" + toHex(sha256(toUtf8("transfer/channel-0/utia"))).toUpperCase(); @@ -152,12 +152,12 @@ chains: type: cosmos value: key-directory: /home/assafmo/.relayer/keys/gm - key: default + key: a chain-id: gm rpc-addr: http://localhost:26657 account-prefix: gm keyring-backend: test - gas-adjustment: 1.2 + gas-adjustment: 1.5 gas-prices: 0.025stake min-gas-amount: 0 max-gas-amount: 0 @@ -177,13 +177,13 @@ chains: type: cosmos value: key-directory: /home/assafmo/.relayer/keys/mocha-4 - key: default + key: a chain-id: mocha-4 - rpc-addr: https://rpc-mocha.pops.one:443 + rpc-addr: https://celestia-testnet-rpc.publicnode.com:443 account-prefix: celestia keyring-backend: test - gas-adjustment: 1.2 - gas-prices: 0.02utia + gas-adjustment: 1.5 + gas-prices: 0.15utia min-gas-amount: 0 max-gas-amount: 0 debug: false @@ -198,7 +198,15 @@ chains: min-loop-duration: 0s extension-options: [] feegrants: null -paths: {} +paths: + gm_mocha-4: + src: + chain-id: gm + dst: + chain-id: mocha-4 + src-channel-filter: + rule: "" + channel-list: [] ' > "$HOME/.relayer/config/config.yaml" rly keys restore gm_rollup a "regret resist either bid upon yellow leaf early symbol win market vital" @@ -220,7 +228,7 @@ Fund the relayer on our rollup: gmd tx bank send gm-key-2 gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc 10000000stake --keyring-backend test --chain-id gm --fees 5000stake -y ``` -Fund the relayer on Celestia: +Fund the relayer on Mocha: https://docs.celestia.org/nodes/mocha-testnet#mocha-testnet-faucet @@ -231,116 +239,68 @@ rly q balance mocha a # => address {celestia1jqevcsld0dqpjp3csfg7alkv3lehvn8 rly q balance gm_rollup a # => address {gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc} balance {10000000stake} ``` -## ๐Ÿ’ธ Transactions {#transactions} - -First, list your keys: - -```bash -gmd keys list --keyring-backend test -``` - -You should see an output like the following +Create IBC clients: ```bash -- address: gm18k57hn42ujcccyn0n5v7r6ydpacycn2wkt7uh9 - name: gm-key-2 - pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"Al92dlOeLpuAiOUSIaJapkIveiwlhlEdz/O5CrniMdwH"}' - type: local -- address: gm1e4fqspwdsy0dzkmzsdhkadfcrd0udngw0f88pw - name: gm-key - pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AwdsLY+2US2VV+rbyfi60GB4/Ir/FeTIkLJ3CWVhUF6b"}' - type: local -- address: gm1vvl79phavqruppr6f5zy4ypxy7znshrqam48qy - name: gm-relay - pubkey: '{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AlnSEnBUv5GO86fMWe11qth1+R76g2e1lv8c1FWhLpqP"}' - type: local +rly tx client gm_rollup mocha gm_mocha-4 --override +rly tx client mocha gm_rollup gm_mocha-4 --override ``` -For convenience we export two of our keys like this: +Create IBC connection: ```bash -export KEY1=gm18k57hn42ujcccyn0n5v7r6ydpacycn2wkt7uh9 -export KEY2=gm1e4fqspwdsy0dzkmzsdhkadfcrd0udngw0f88pw +rly tx connection gm_mocha-4 ``` -Now let's submit a transaction that sends coins from one account to another (don't worry about all the flags, for now, we just want to submit transaction from a high level perspective): +Create IBC channel: ```bash -gmd tx bank send $KEY1 $KEY2 42069stake --keyring-backend test --chain-id gm --fees 5000stake +rly tx channel gm_mocha-4 --src-port transfer --dst-port transfer --version ics20-1 ``` -You'll be prompted to accept the transaction: +Start the relayer: ```bash -auth_info: - fee: - amount: [] - gas_limit: "200000" - granter: "" - payer: "" - signer_infos: [] - tip: null -body: - extension_options: [] - memo: "" - messages: - - '@type': /cosmos.bank.v1beta1.MsgSend - amount: - - amount: "42069" - denom: stake - from_address: gm18k57hn42ujcccyn0n5v7r6ydpacycn2wkt7uh9 - to_address: gm1e4fqspwdsy0dzkmzsdhkadfcrd0udngw0f88pw - non_critical_extension_options: [] - timeout_height: "0" -signatures: [] -confirm transaction before signing and broadcasting [y/N]: // [!code focus] +rly start gm_mocha-4 ``` -Confirm and sign the transaction as prompted. now you see the transaction hash at the output: +Transfer `TIA` from Mocha to our rollup: ```bash -//... +ACCOUNT_ON_ROLLUP="$(gmd keys show -a --keyring-backend test gm-key-2)" +CHANNEL_ID_ON_MOCHA="$(rly q channels mocha gm_rollup | jq -r .channel_id)" -txhash: 677CAF6C80B85ACEF6F9EC7906FB3CB021322AAC78B015FA07D5112F2F824BFF +rly tx transfer mocha gm_rollup 1000000utia "$ACCOUNT_ON_ROLLUP" "$CHANNEL_ID_ON_MOCHA" --path gm_mocha-4 ``` -## โš–๏ธ Checking Balances {#balances} - -Query balances after the transaction: +Verify the account on our rollup is funded with IBC `TIA`: ```bash -gmd query bank balances $KEY2 +gmd q bank balances "$(gmd keys show -a --keyring-backend test gm-key-2)" +# => +# balances: +# - amount: "1000000" +# denom: ibc/C3E53D20BC7A4CC993B17C7971F8ECD06A433C10B6A96F4C4C3714F0624C56DA +# - amount: "9999999999999999989995000" +# denom: stake +# pagination: +# total: "2" ``` -The receiverโ€™s balance should show an increase. - -```bash -balances: // [!code focus] -- amount: "10000000000000000000042069" // [!code focus] - denom: stake -pagination: - next_key: null - total: "0" -``` +## ๐Ÿ’ธ Transactions {#transactions} -For the senderโ€™s balance: +Finally, send a transaction on our rollup using IBC `TIA` as the gas token: ```bash -gmd query bank balances $KEY1 -``` +ACCOUNT_ON_ROLLUP="$(gmd keys show -a --keyring-backend test gm-key-2)" -Output: +# Send the transaction +TX_HASH=$(gmd tx bank send "$ACCOUNT_ON_ROLLUP" "$ACCOUNT_ON_ROLLUP" 1stake --keyring-backend test --chain-id gm --gas-prices 0.02ibc/C3E53D20BC7A4CC993B17C7971F8ECD06A433C10B6A96F4C4C3714F0624C56DA -y --output json | jq -r .txhash) -```bash -balances: // [!code focus] -- amount: "9999999999999999999957931" // [!code focus] - denom: stake -pagination: - next_key: null - total: "0" +# Verify success +gmd q tx "$TX_HASH" --output json | jq .code # => 0 ``` ## ๐ŸŽ‰ Next steps -Congratulations! You've built a local rollup that posts to a -local DA network. So far so good, keep diving deeper if you like it. Good luck! +Congratulations! You've built a local rollup that posts to a local DA network and uses `TIA` as the gas token! From 65126f229cbb184dd2275da15a73afc965a1cdf9 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 18:06:30 +0300 Subject: [PATCH 05/15] Fix code review comment by @coderabbitai --- tutorials/gm-world-tia-gas.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index cba1e769a..fe3a4fa03 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -230,7 +230,7 @@ gmd tx bank send gm-key-2 gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc 10000000stak Fund the relayer on Mocha: -https://docs.celestia.org/nodes/mocha-testnet#mocha-testnet-faucet +[Mocha Testnet Faucet Instructions](https://docs.celestia.org/nodes/mocha-testnet#mocha-testnet-faucet). Verify the relayer is funded: From 9f9f91dbceeb43d5346c9ef9931415ce8e961548 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 18:16:46 +0300 Subject: [PATCH 06/15] Update tutorials/gm-world-tia-gas.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- tutorials/gm-world-tia-gas.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index fe3a4fa03..441acb330 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -64,6 +64,7 @@ To make it simple we will download a repository with a `gm-world` rollup that ha Download and build a `gm-world` rollup with an interactive script in a new terminal: ::: warning +You must install the jq command line tool to run it. In order to run it you need to have the jq command line tool installed. You can install it by running `sudo apt-get install jq` on Ubuntu or `brew install jq` on macOS. ::: ::: tip From b43f0afac37acff9b68b041582dae317eadd7341 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 18:17:10 +0300 Subject: [PATCH 07/15] Update tutorials/gm-world-tia-gas.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- tutorials/gm-world-tia-gas.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 441acb330..d0caa72cd 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -83,7 +83,7 @@ Start the rollup, posting to the local DA network: gmd start --rollkit.aggregator --rollkit.da_address http://localhost:7980 --minimum-gas-prices="0.02ibc/C3E53D20BC7A4CC993B17C7971F8ECD06A433C10B6A96F4C4C3714F0624C56DA,0.025stake" ``` -Note that we specified the gas token to be IBC `TIA`. We still haven't made an IBC connection to Celestia's Mocha testnet, however, if we assume our first channel is going to be an ICS-20 transfer channel to Celestia, we can already calculate the token denom using this formula: +Note that we specified the gas token to be IBC `TIA`. We still haven't made an IBC connection to Celestia's Mocha testnet, however, if we assume our first channel will be an ICS-20 transfer channel to Celestia, we can already calculate the token denom using this formula: ```js "ibc/" + toHex(sha256(toUtf8("transfer/channel-0/utia"))).toUpperCase(); From 7658886d5604caa98302bc943f3c0356027d4fbe Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 18:17:30 +0300 Subject: [PATCH 08/15] Update tutorials/gm-world-tia-gas.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- tutorials/gm-world-tia-gas.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index d0caa72cd..7514776b1 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -121,7 +121,7 @@ Now you should see the logs of the running node: ## โœจ Connecting to Celestia Mocha testnet using IBC {#ibc-to-celestia} -Next, we're going to create an IBC connection between our rollup and the Celestia Mocha testnet. This will allow us to send TIA to our rollup in order to use it as a gas token. +Next, we will create an IBC connection between our rollup and the Celestia Mocha testnet. This will allow us to send TIA to our rollup in order to use it as a gas token. Install the IBC relayer: From 0517242d9dcd4a54de22ac5debb73ea4940d0501 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 18:17:50 +0300 Subject: [PATCH 09/15] Update tutorials/gm-world-tia-gas.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- tutorials/gm-world-tia-gas.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 7514776b1..752f81dbc 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -65,7 +65,7 @@ Download and build a `gm-world` rollup with an interactive script in a new termi ::: warning You must install the jq command line tool to run it. -In order to run it you need to have the jq command line tool installed. You can install it by running `sudo apt-get install jq` on Ubuntu or `brew install jq` on macOS. +In order to run it, you need to have the jq command line tool installed. You can install it by running `sudo apt-get install jq` on Ubuntu or `brew install jq` on macOS. ::: ::: tip If you get errors of `gmd` not found, you may need to add the `go/bin` directory to your PATH. You can do this by running `export PATH=$PATH:$HOME/go/bin` and then running the `init.sh` script manually again. From 04de538b53377e64cda49129db2654d960f159d5 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 18:18:11 +0300 Subject: [PATCH 10/15] Update tutorials/gm-world-tia-gas.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- tutorials/gm-world-tia-gas.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 752f81dbc..18c67bba7 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -59,7 +59,7 @@ This script builds and runs the node, now listening on port `7980`. With the local DA network running, letโ€™s prepare your rollup blockchain. -To make it simple we will download a repository with a `gm-world` rollup that has an `init.sh` script that does all the setup for you. +To make it simple, we will download a repository with a `gm-world` rollup that includes an `init.sh` script to handle all the setup for you. Download and build a `gm-world` rollup with an interactive script in a new terminal: From 9e1e6252407d7831c7487ee6356544a1b63faf55 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 21:15:44 +0300 Subject: [PATCH 11/15] Update gm-world-tia-gas.md --- tutorials/gm-world-tia-gas.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 18c67bba7..78a9cded6 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -131,14 +131,12 @@ cd /tmp/relayer make install ``` -After installation, `ibc-setup` and `ibc-relayer` executables should be available. - Configure the relayer: ```bash rly config init -mkdir -p /home/assafmo/.relayer/keys/{gm,mocha-4} +mkdir -p $HOME/.relayer/keys/{gm,mocha-4} echo $'global: api-listen-addr: :5183 @@ -221,7 +219,7 @@ rly address gm_rollup a # => gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc rly address mocha a # => celestia1jqevcsld0dqpjp3csfg7alkv3lehvn8u04ymsu ``` -Note: These accounts should always be the same because of the hardcoded mnemonics that we've loaded in `rly keys restore`. +Note: These accounts should always be the same because of the hardcoded mnemonics that we've loaded in the `rly keys restore` step. Fund the relayer on our rollup: @@ -229,7 +227,7 @@ Fund the relayer on our rollup: gmd tx bank send gm-key-2 gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc 10000000stake --keyring-backend test --chain-id gm --fees 5000stake -y ``` -Fund the relayer on Mocha: +Fund the relayer on the Celestia Mocha testnet: [Mocha Testnet Faucet Instructions](https://docs.celestia.org/nodes/mocha-testnet#mocha-testnet-faucet). From 8c73b2f46ad378af3bf6a0df60f40a67ce9b6bbf Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 22:47:32 +0300 Subject: [PATCH 12/15] Update tutorials/gm-world-tia-gas.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- tutorials/gm-world-tia-gas.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 78a9cded6..b18dd6818 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -121,7 +121,7 @@ Now you should see the logs of the running node: ## โœจ Connecting to Celestia Mocha testnet using IBC {#ibc-to-celestia} -Next, we will create an IBC connection between our rollup and the Celestia Mocha testnet. This will allow us to send TIA to our rollup in order to use it as a gas token. +Next, we will establish an IBC connection with the Celestia Mocha testnet to enable TIA transfers for gas usage on our rollup. Install the IBC relayer: From 90a1a83ea8f3b01c4006646bab420e949e3cdea5 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 22:48:04 +0300 Subject: [PATCH 13/15] Update tutorials/gm-world-tia-gas.md Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- tutorials/gm-world-tia-gas.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index b18dd6818..92ab3538c 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -64,8 +64,7 @@ To make it simple, we will download a repository with a `gm-world` rollup that i Download and build a `gm-world` rollup with an interactive script in a new terminal: ::: warning -You must install the jq command line tool to run it. -In order to run it, you need to have the jq command line tool installed. You can install it by running `sudo apt-get install jq` on Ubuntu or `brew install jq` on macOS. +Ensure the `jq` command line tool is installed before proceeding. Install it using `sudo apt-get install jq` on Ubuntu or `brew install jq` on macOS. ::: ::: tip If you get errors of `gmd` not found, you may need to add the `go/bin` directory to your PATH. You can do this by running `export PATH=$PATH:$HOME/go/bin` and then running the `init.sh` script manually again. From 8a77c44aabc352dcb8b7d2dc9af098fd9d2c0258 Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Tue, 4 Jun 2024 23:04:02 +0300 Subject: [PATCH 14/15] Fix stuff --- tutorials/gm-world-tia-gas.md | 44 +++++++++++++++++------------------ 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 92ab3538c..72b02ec1f 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -6,13 +6,13 @@ description: Build a sovereign rollup using only Rollkit CLI and a local DA netw ## ๐ŸŒž Introduction {#introduction} -This tutorial will guide you through building a sovereign `gm-world` rollup using Rollkit, with `TIA` as the gas token. Unlike the [quick start guide](https://rollkit.dev/tutorials/quick-start), this tutorial provides a more practical approach to understanding sovereign rollup development using `TIA` as the gas token. +This tutorial will guide you through building a sovereign `gm-world` rollup using Rollkit, with TIA as the gas token. Unlike the [quick start guide](https://rollkit.dev/tutorials/quick-start), this tutorial provides a more practical approach to understanding sovereign rollup development using TIA as the gas token. We will cover: - Building and configuring a Cosmos-SDK application-specific rollup blockchain. - Posting rollup data to a Data Availability (DA) network. -- Executing transactions using `TIA` as the gas token (the end goal). +- Executing transactions using TIA as the gas token (the end goal). No prior understanding of the build process is required, just that it utilizes the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk) for blockchain applications. @@ -50,7 +50,7 @@ Learn to run a local DA network, designed for educational purposes, on your mach To set up a local DA network node: ```bash-vue -curl -sSL https://rollkit.dev/install-local-da.sh | bash -s {{constants.localDALatestTag}} +(cd /tmp && curl -sSL https://rollkit.dev/install-local-da.sh | bash -s {{constants.localDALatestTag}}) ``` This script builds and runs the node, now listening on port `7980`. @@ -71,7 +71,7 @@ If you get errors of `gmd` not found, you may need to add the `go/bin` directory ::: ```bash -cd $HOME && bash -c "$(curl -sSL https://rollkit.dev/install-gm-rollup.sh)" +(cd /tmp && bash -c "$(curl -sSL https://rollkit.dev/install-gm-rollup.sh)") ``` ## ๐Ÿš€ Starting your rollup {#start-your-rollup} @@ -82,7 +82,7 @@ Start the rollup, posting to the local DA network: gmd start --rollkit.aggregator --rollkit.da_address http://localhost:7980 --minimum-gas-prices="0.02ibc/C3E53D20BC7A4CC993B17C7971F8ECD06A433C10B6A96F4C4C3714F0624C56DA,0.025stake" ``` -Note that we specified the gas token to be IBC `TIA`. We still haven't made an IBC connection to Celestia's Mocha testnet, however, if we assume our first channel will be an ICS-20 transfer channel to Celestia, we can already calculate the token denom using this formula: +Note that we specified the gas token to be IBC TIA. We still haven't made an IBC connection to Celestia's Mocha testnet, however, if we assume our first channel will be an ICS-20 transfer channel to Celestia, we can already calculate the token denom using this formula: ```js "ibc/" + toHex(sha256(toUtf8("transfer/channel-0/utia"))).toUpperCase(); @@ -135,12 +135,12 @@ Configure the relayer: ```bash rly config init -mkdir -p $HOME/.relayer/keys/{gm,mocha-4} +mkdir -p "$HOME/.relayer/keys/{gm,mocha-4}" -echo $'global: +echo "global: api-listen-addr: :5183 timeout: 10s - memo: "" + memo: '' light-cache-size: 20 log-level: info ics20-memo-limit: 0 @@ -149,7 +149,7 @@ chains: gm_rollup: type: cosmos value: - key-directory: /home/assafmo/.relayer/keys/gm + key-directory: '$HOME/.relayer/keys/gm' key: a chain-id: gm rpc-addr: http://localhost:26657 @@ -161,12 +161,12 @@ chains: max-gas-amount: 0 debug: false timeout: 20s - block-timeout: "" + block-timeout: '' output-format: json sign-mode: direct extra-codecs: [] coin-type: 118 - signing-algorithm: "" + signing-algorithm: '' broadcast-mode: batch min-loop-duration: 0s extension-options: [] @@ -174,7 +174,7 @@ chains: mocha: type: cosmos value: - key-directory: /home/assafmo/.relayer/keys/mocha-4 + key-directory: '$HOME/.relayer/keys/mocha-4' key: a chain-id: mocha-4 rpc-addr: https://celestia-testnet-rpc.publicnode.com:443 @@ -186,12 +186,12 @@ chains: max-gas-amount: 0 debug: false timeout: 20s - block-timeout: "" + block-timeout: '' output-format: json sign-mode: direct extra-codecs: [] coin-type: 118 - signing-algorithm: "" + signing-algorithm: '' broadcast-mode: batch min-loop-duration: 0s extension-options: [] @@ -203,9 +203,9 @@ paths: dst: chain-id: mocha-4 src-channel-filter: - rule: "" + rule: '' channel-list: [] -' > "$HOME/.relayer/config/config.yaml" +" > "$HOME/.relayer/config/config.yaml" rly keys restore gm_rollup a "regret resist either bid upon yellow leaf early symbol win market vital" rly keys restore mocha a "regret resist either bid upon yellow leaf early symbol win market vital" @@ -226,7 +226,7 @@ Fund the relayer on our rollup: gmd tx bank send gm-key-2 gm1jqevcsld0dqpjp3csfg7alkv3lehvn8uswknrc 10000000stake --keyring-backend test --chain-id gm --fees 5000stake -y ``` -Fund the relayer on the Celestia Mocha testnet: +Fund the relayer on the Celestia Mocha testnet: [Mocha Testnet Faucet Instructions](https://docs.celestia.org/nodes/mocha-testnet#mocha-testnet-faucet). @@ -262,16 +262,16 @@ Start the relayer: rly start gm_mocha-4 ``` -Transfer `TIA` from Mocha to our rollup: +Transfer TIA from Mocha to our rollup: ```bash ACCOUNT_ON_ROLLUP="$(gmd keys show -a --keyring-backend test gm-key-2)" -CHANNEL_ID_ON_MOCHA="$(rly q channels mocha gm_rollup | jq -r .channel_id)" +CHANNEL_ID_ON_MOCHA="$(rly q channels mocha gm_rollup | jq -r .channel_id | tail -1)" rly tx transfer mocha gm_rollup 1000000utia "$ACCOUNT_ON_ROLLUP" "$CHANNEL_ID_ON_MOCHA" --path gm_mocha-4 ``` -Verify the account on our rollup is funded with IBC `TIA`: +Verify the account on our rollup is funded with IBC TIA: ```bash gmd q bank balances "$(gmd keys show -a --keyring-backend test gm-key-2)" @@ -287,7 +287,7 @@ gmd q bank balances "$(gmd keys show -a --keyring-backend test gm-key-2)" ## ๐Ÿ’ธ Transactions {#transactions} -Finally, send a transaction on our rollup using IBC `TIA` as the gas token: +Finally, send a transaction on our rollup using IBC TIA as the gas token: ```bash ACCOUNT_ON_ROLLUP="$(gmd keys show -a --keyring-backend test gm-key-2)" @@ -301,4 +301,4 @@ gmd q tx "$TX_HASH" --output json | jq .code # => 0 ## ๐ŸŽ‰ Next steps -Congratulations! You've built a local rollup that posts to a local DA network and uses `TIA` as the gas token! +Congratulations! You've built a local rollup that posts to a local DA network and uses TIA as the gas token! From 229029eca65ca3ca72923847b0efeeaa9abdd14c Mon Sep 17 00:00:00 2001 From: Assaf Morami Date: Wed, 5 Jun 2024 14:33:18 +0300 Subject: [PATCH 15/15] Fix review comment by @gupadhyaya https://github.com/rollkit/docs/pull/386#pullrequestreview-2098857239 --- tutorials/gm-world-tia-gas.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/gm-world-tia-gas.md b/tutorials/gm-world-tia-gas.md index 72b02ec1f..aa7669415 100644 --- a/tutorials/gm-world-tia-gas.md +++ b/tutorials/gm-world-tia-gas.md @@ -6,7 +6,7 @@ description: Build a sovereign rollup using only Rollkit CLI and a local DA netw ## ๐ŸŒž Introduction {#introduction} -This tutorial will guide you through building a sovereign `gm-world` rollup using Rollkit, with TIA as the gas token. Unlike the [quick start guide](https://rollkit.dev/tutorials/quick-start), this tutorial provides a more practical approach to understanding sovereign rollup development using TIA as the gas token. +This tutorial will guide you through building a sovereign `gm-world` rollup using Rollkit, with TIA as the gas token. Unlike the [quick start guide](https://rollkit.dev/tutorials/quick-start), which uses a native rollup token for gas, this tutorial demonstrates how to integrate an IBC-enabled token, TIA, as the gas token within the rollup, providing a deeper exploration of sovereign rollup development. We will cover: