1

Install Weave

First, you need to install the Weave CLI

brew install initia-labs/tap/weave
2

Configure Weave and Gas Station Account

With Weave installed, you need to set up and fund your gas station account. This account will be used to fund the various bots and processes that is involved in the rollup’s operations

weave init

This will prompt you to either generate a new account to use as your gas station account or import and existing account’s mnemonic. Once you have created your account, you then need to fund it with some INIT tokens (for OPinit Bots bridging transactions) and TIA (for submitting data to Celestia).

3

Deploy the Rollup

Now that you have configured your gas station account, you can proceed to deploying your rollup.

weave rollup launch

From the provided options, you can:

  • Select your VM
  • Choose your Chain ID and (default) gas token denomination
  • Choosing DA Layer
  • Enable Price Oracle
  • Setting Genesis Accounts

If you want more information about a specific option, access the tooltip by pressing ctrl+T. And if you want to go back to the previous step, press ctrl+Z.

To make sure that you have tokens to later send transactions on your rollup, you should add at least 1 address you control to the list of genesis accounts when prompted.

Once you have selected all the options, Weave will automatically start the rollup. When everything is complete, you will see the rollup’s endpoint information, which includes the REST, RPC, and, for EVM rollups, JSON-RPC endpoints. The CLI will also create a magic link that you can use to add your rollup to InitiaScan.

# Example output
Rollup Endpoints:
• REST API: http://localhost:1317
• RPC: http://localhost:26657
• RPC-WS: ws://localhost:26657/websocket
• gRPC: http://localhost:9090

✨ Explore your new rollup here 🪄 (We already started the rollup app for you)
https://scan.testnet.initia.xyz/custom-network/add/link?config=eyJ2bSI6Im1vdmUiLCJjaGFpbklkIjoiZGVtby0zMTQiLCJtaW5HYXNQcmljZSI6MCwiZGVub20iOiJ1bWluIiwibGNkIjoiaHR0cDovL2xvY2FsaG9zdDoxMzE3IiwicnBjIjoiaHR0cDovL2xvY2FsaG9zdDoyNjY1NyJ9

i Important
Open this in Chrome is recommended because some browsers may not support localhost access from a different host, or edit your browser's settings to allow it if necessary.

At this point, you can now interact with your rollup, send transactions, and deploy contracts on the rollup. However, for full functionality, you will need to also run the OPinit Executor and Challenger Bots as well as the IBC Relayer.

4

Start the OPinit Executor

The OPinit Executor bot is responsible for executing INIT bridging transactions between the Initia L1 and your rollup, submitting the rollup state output to the L1, submitting DA data to Celestia, and more. To start the bot, run

weave opinit init

This will prompt you to set up the bot’s configuration through a series of questions.

✓ Existing keys in /Users/tansawit/.minitia/artifacts/config.json detected. Would you like to add these to the keyring before proceeding? > Yes, use detected keys
✓ Which bot would you like to run? > Executor
✓ Please select an option for the system key for Oracle Bridge Executor > Generate new system key
✓ Existing /Users/tansawit/.minitia/artifacts/config.json detected. Would you like to use the data in this file to pre-fill some fields? > Yes, prefill
✓ Specify listen address of the bot ... localhost:3000
✓ Specify L1 RPC endpoint ... https://rpc.testnet.initia.xyz:443/
✓ Specify rollup chain ID ... demo-314
✓ Specify rollup RPC endpoint ... http://localhost:26657
✓ Specify rollup gas denom ... umin
✓ OPInit bot setup successfully. Config file is saved at /Users/tansawit/.opinit/executor.json. Feel free to modify it as needed.
✓ You can start the bot by running `weave opinit start executor`

Once all of that is complete, you can start the bot by running the following command.

weave opinit start executor

You should see the bot running in the terminal.

Streaming logs from launchd com.opinitd.executor.daemon
2025-02-11T17:28:42.094+0700	INFO	executor	executor/executor.go:80	bridge info	{"id": 659, "submission_interval": 60}
2025-02-11T17:28:42.508+0700	INFO	executor	node/node.go:118	initialize height
2025-02-11T17:28:42.525+0700	INFO	executor	node/node.go:118	initialize height
2025-02-11T17:28:42.631+0700	INFO	executor	node/node.go:118	initialize height
2025-02-11T17:28:43.844+0700	INFO	executor	node/node.go:118	initialize height
2025-02-11T17:28:43.845+0700	INFO	executor	host/host.go:88	host start	{"height": 5315486}
2025-02-11T17:28:43.845+0700	INFO	executor	child/child.go:200	child start	{"height": 1}
2025-02-11T17:28:43.845+0700	INFO	executor	batchsubmitter/batch_submitter.go:153	batch start	{"height": 1}
2025-02-11T17:28:43.845+0700	INFO	executor	node/node.go:173	tx checker looper stopped
2025-02-11T17:28:43.845+0700	INFO	executor	celestia/celestia.go:98	celestia start
2025-02-11T17:28:43.950+0700	INFO	executor	child/child.go:138	initialize tree	{"index": 1}

 ┌───────────────────────────────────────────────────┐ 
 │                   Fiber v2.52.5                   │ 
 │               http://127.0.0.1:3000               │ 
 │                                                   │ 
 │ Handlers ............. 9  Processes ........... 1
 │ Prefork ....... Disabled  PID ............. 17969
 └───────────────────────────────────────────────────┘ 

2025-02-11T17:28:46.207+0700	INFO	executor	batchsubmitter/batch.go:173	finalize batch	{"height": 54, "batch start": 1, "batch end": 54, "batch size": 47462, "chunks": 1, "txs": 2}
2025-02-11T17:28:52.584+0700	INFO	executor	child/withdraw.go:174	finalize working tree	{"tree_index": 1, "height": 54, "start_leaf_index": 1, "num_leaves": 0, "storage_root": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}
5

Start the OPinit Challenger

For production use, we recommend setting up the Challenger bot on a separate machine from the Executor bot.

The OPinit Challenger Bot is responsible for monitoring the Executor bot’s output proposal and ensuring its validity. To start the bot, run

weave opinit init

Again, you’ll be guided through a series of questions similar to the Executor. The main difference is that you’ll be setting up the Challenger instead of the Executor.

✓ Existing keys in /Users/tansawit/.minitia/artifacts/config.json detected. Would you like to add these to the keyring before proceeding? > Yes, use detected keys
✓ Which bot would you like to run? > Challenger
✓ Existing /Users/tansawit/.minitia/artifacts/config.json detected. Would you like to use the data in this file to pre-fill some fields? > Yes, prefill
✓ Specify listen address of the bot ... localhost:3001
✓ Specify L1 RPC endpoint ... https://rpc.testnet.initia.xyz:443/
✓ Specify rollup chain ID ... demo-314
✓ Specify rollup RPC endpoint ... http://localhost:26657
✓ OPInit bot setup successfully. Config file is saved at /Users/tansawit/.opinit/challenger.json. Feel free to modify it as needed.
✓ You can start the bot by running `weave opinit start challenger`

Once all of that is complete, you can start the bot by running the following command.

weave opinit start challenger

You should see the bot running in the terminal.

Streaming logs from launchd com.opinitd.challenger.daemon
2025-02-11T17:31:59.060+0700	INFO	challenger	challenger/challenger.go:94	bridge info	{"id": 659, "submission_interval": 60}
2025-02-11T17:31:59.200+0700	INFO	challenger	node/node.go:118	initialize height
2025-02-11T17:31:59.346+0700	INFO	challenger	node/node.go:118	initialize height
2025-02-11T17:31:59.347+0700	INFO	challenger	host/host.go:88	host start	{"height": 5315486}
2025-02-11T17:31:59.347+0700	INFO	challenger	child/child.go:200	child start	{"height": 1}

2025-02-11T17:31:59.347+0700	INFO	challenger	node/node.go:173	tx checker looper stopped
 ┌───────────────────────────────────────────────────┐ 
2025-02-11T17:31:59.347+0700	INFO	challenger	node/node.go:173	tx checker looper stopped
 │                   Fiber v2.52.5                   │ 
2025-02-11T17:31:59.452+0700	INFO	challenger	child/child.go:138	initialize tree	{"index": 1}
 │               http://127.0.0.1:3001               │ 
 │                                                   │ 
 │ Handlers ............ 11  Processes ........... 1
 │ Prefork ....... Disabled  PID ............. 20592
 └───────────────────────────────────────────────────┘ 

If everything is working correctly, you will now have both the Executor and Challenger bots running.

6

Start the IBC Relayer

Finally, you need to set up the IBC Relayer Bot. This bot relays IBC messages between the Initia L1 and your rollup. It is essential for oracle price updates and managing IBC bridging transactions, including compatibility with Minitswap.

weave relayer init

By default, Weave also allows you to setup the relayer for any whitelisted rollup. But in this case, we will be setting up the relayer for your local rollup.

✓ Select the type of Interwoven rollup you want to relay > Local Rollup (demo-314)
✓ L1 network is auto-detected > initiation-2
✓ Specify rollup RPC endpoint ... http://localhost:26657
✓ Specify rollup GRPC endpoint ... http://localhost:9090
✓ Specify rollup WebSocket endpoint ... ws://localhost:26657/websocket
✓ Select method to setup IBC channels for the relayer. > Subscribe to only `transfer` and `nft-transfer` IBC Channels (minimal setup)
✓ Select the IBC channels you would like to relay ... 2 IBC channels subscribed
✓ Do you want to setup relayer with the challenger key > Yes (recommended, open the tooltip to see the details)
✓ Relayer setup successfully. Config file is saved at /Users/tansawit/.hermes/config.toml. Feel free to modify it as needed.
✓ You can start the relayer by running `weave relayer start

Once all of that is complete, you can start the bot by running the following command.

weave relayer start

You should see the bot running in the terminal.

Updating IBC client: 07-tendermint-1 of network: demo-314
Successfully updated IBC client: 07-tendermint-1 of network: demo-314
Updating IBC client: 07-tendermint-0 of network: demo-314
wSuccessfully updated IBC client: 07-tendermint-0 of network: demo-314
Streaming logs from launchd com.hermes.daemon
2025-02-11T10:36:06.546411Z  INFO ThreadId(01) using default configuration from '/Users/tansawit/.hermes/config.toml'
2025-02-11T10:36:06.547351Z  INFO ThreadId(01) running Hermes v1.10.4+542e14f
2025-02-11T10:36:06.749253Z  INFO ThreadId(16) REST service running, exposing REST API at http://127.0.0.1:7010