# Dymension rollapp部署教程

By [Silent ⚛| validator](https://paragraph.com/@exploring) · 2023-08-23

---

模块化区块链是近期的热点，Dymension是模块化区块链的结算层，开发者能够基于Dymension 构建RollApps。RollApps 能够使用 Dymension Hub 与任何支持 IBC 的链进行交互，因此将成为不断发展的 IBC 生态系统的一部分。

官网：

[

Dymension: The Chain Launchpad
------------------------------

Dymension L1 is a decentralized Chain Launchpad, giving creators the power to transform ideas into thriving blockchains.

https://dymension.xyz

![](https://storage.googleapis.com/papyrus_images/6530fb586ef445094138e7749e4a68bed78f78e7f4775a7a32cb63e8eaad6bc2.png)

](https://dymension.xyz/)

官推：

Dymension之前融资了670万美元。近期**激励测试网**floopyland刚刚上线。1%的DYM代币将分配给测试网参与者。其中，40%奖励分配给验证者（**据管理说，验证者已经被选出**），40%奖励分配给rollapp部署者，10%的奖励分配给最好的10个Rollapp，10%奖励分配给用户。

![](https://storage.googleapis.com/papyrus_images/e7bd6e784e8db732f4838dab084ba24bf82ac1fb479d157b5013055f3595b2c8.png)

根据[官方博客](https://medium.com/@dymension/froopyland-is-live-8bf21e9d7046)和公告。**只有Discord有RollApp-fam role的人才有资格拿rollapp部署者的奖励。**

![只有在discord有Rollapp-fam role的人才有资格拿rollapp部署者奖励](https://storage.googleapis.com/papyrus_images/5ff446f0b5a362cb1ddaa816f07b6733d7aabe16c5dd43bc9d9a9cd2eb5f45c2.png)

只有在discord有Rollapp-fam role的人才有资格拿rollapp部署者奖励

解锁奖励的关键在于部署 RollApp（在 Roller 工具的帮助下变得非常容易），并根据 RollApp 的正常运行时间（RPC 端点可用性的奖励）按比例分配奖励。

如果没有**RollApp-fam role** 怎么办？
=============================

官方博客中说 **如果您没有 RollApp-fam 角色，但您是一名真正的Builder，**[**请联系我们**](https://dymension.typeform.com/build)**，描述您的经验和 RollApp 想法。**

Discord公告中说**对于那些没有 RollApp-fam 角色的人，可以构建并部署一个独特的 RollApp，以表明您已经思考并投入了工作。 然后在 ⁠#share-your-rollapp 上分享您的 RollApp 并告诉我们。**

同时也可以在Discord多活跃，关注新活动，也有可能拿到这个role。

目前团队又更新了版本，请更新到v1.0.6。
======================

**_注：本教程仅供参考，请以_**[**_官方教程_**](https://docs.dymension.xyz/build/roller/)**_为准。_**

从老版本更新（如果你之前部署过应用，可以迁移。否则建议完全重新搞）
---------------------------------

安装最新版本roller

    curl -L https://dymensionxyz.github.io/roller/install.sh | bash
    

停止之前的roller

    sudo systemctl stop relayer
    sudo systemctl stop sequencer
    sudo systemctl stop da-light-client
    

迁移

重新启动roller

    sudo systemctl start da-light-client
    sudo systemctl start sequencer
    sudo systemctl start relayer
    

现在检查版本应该为

    roller version
    💈 Roller version v1.0.6-beta
    💈 Build time: 2024-01-18T09:05:45+0000"
    💈 Git commit: 21b1b22e96466cc83b051ebacfb513b3a0d99de1
    

**升级后需要重新领celestia 的水。**

     journalctl -u da-light-client.service -f
    

看celestia的新地址。

部署Rollapp
=========

### 硬件要求

*   2核
    
*   至少 100GB SSD 磁盘存储
    
*   至少 16GB RAM
    
*   至少 100mbps 网络带宽
    

### 安装roller

    sudo apt update -y
    curl -L https://dymensionxyz.github.io/roller/install.sh | bash
    

安装成功显示如下

    💈 Installation complete! You can now use roller from your terminal.
    

验证

输出中应该有

    💈 Roller version v1.0.6-beta
    💈 Build time: 2024-01-18T09:05:45+0000"
    💈 Git commit: 21b1b22e96466cc83b051ebacfb513b3a0d99de1
    

### 初始化RollApp

这里我们选择默认的EVM环境,DA层为默认的celestia。

接下来输入

    roller config init <rollapp-id> <denom> --da Celestia
    

**如果你想使用Avail 作为Da(可选)**

    roller config init <rollapp-id> <denom> --da Avail
    

其中`rollapp-id`格式如下

    仅包含字母字符
    
    例如: berlin,test
    

`denom`为你的rollapp原生代币的名称。如BTC,PEPE,DYM等，需要3字母以上。

如果成功，会显示如下

![init](https://storage.googleapis.com/papyrus_images/a67f5390ae7adefeb5401d12af6efbdd3836df1e7ee8653b1d79ce905092e7d0.png)

init

这里我们得到了3个地址，需要领水龙头。dym开头的地址去Discord #froopyland-faucet 频道发`$request <dym开头的地址>`，celestia开头的去Discord #celestia-faucet 频道发`$request <celestia开头的地址>`查余额在相应频道发`$balance <地址>`

**领取avail测试币在avail-faucet 输入 /deposit <地址>**

领到测试币后，我们可以注册我们的rollapp了。

    roller tx register
    

注册成功会显示如下

`💈 Rollapp 'test_101-1' has been successfully registered on the hub.`

接下来运行我们的rollapp。**由于我们的rollapp可能需要运行3个月左右**。我们将其配置成服务运行。

输入

    roller services load
    

成功后会显示`💈 Services 'sequencer', 'da-light-client' and 'relayer' been loaded successfully. To start them, use 'systemctl start <service>'.`

接下来输入

    sudo systemctl enable da-light-client
    sudo systemctl enable sequencer
    sudo systemctl enable relayer
    

和

    sudo systemctl start da-light-client
    sudo systemctl start sequencer
    sudo systemctl start relayer
    

以启动服务。

#### 检查运行状态

    sudo systemctl status da-light-client
    sudo systemctl status sequencer
    sudo systemctl status relayer
    

正常情况下，3个都应显示为active (running)。

#### 查看DA轻节点日志(按ctrl+c退出)

    sudo journalctl -u da-light-client -f
    

正常情况应该看到

    💈 The data availability light node is running on your local machine!
    

#### 查看sequencer 日志(按ctrl+c退出)

    sudo journalctl -u sequencer -f
    

正常情况应该看到

    💈 The Rollapp sequencer is running on your local machine!
    💈 Default endpoints:
    💈 EVM RPC: http://0.0.0.0:8545
    💈 Node RPC: http://0.0.0.0:26657
    💈 Rest API: http://0.0.0.0:1317
    💈 Log file path:  /Users/USERNAME/.roller/rollapp/rollapp.log
    💈 Rollapp root dir:  /Users/USERNAME/.roller/rollapp
    

#### 查看中继器日志(按ctrl+c退出)

    sudo journalctl -u relayer -f
    

正常情况应该看到

    💈 The relayer is running successfully on you local machine on channel channel-0!
    

**注意：中继器（relayer）通常需要较长时间才能启动成功,一般要几小时以上。请耐心等待。**

**如果一直都没有成功，则通道可能已进入卡住状态。请打开一个新终端并运行**

    roller relayer start --override
    

以创建新通道。

### 监控

请参考官方教程[https://docs.dymension.xyz/build/production/monitor](https://docs.dymension.xyz/build/production/monitor)

### IBC 转账

如果你的中继器运行成功了，运行

    roller relayer  status
    

会显示如下

    💈 Relayer Channels: src, channel-0 <-> channel-1, dst
    

这时，source channel将是**channel-0**

如果显示的内容不是上面这样，说明你的relayer还没有运行成功，**如果几小时以上还没有成功，请运行以下命令，以创建新通道。**

    roller relayer start --override
    

可以用这个命令进行ibc transfer （**这个命令不是必须的**）

    rollapp_evm tx ibc-transfer transfer transfer <src-channel> <destination-address> 5000000000000000000000000<base-denom> --from rollapp_sequencer --keyring-backend test --home ~/.roller/rollapp --broadcast-mode block
    

注意这里的 `src-channel` 就是上面显示的source channel。 而`base-denom` 是小写字母 u加上你刚刚设置的denon。如`utest`

_这里的数量和以太坊wei 相对于ether一样。1 xxx= 10^18 uxxxx_

**用户应该预计 IBC 交易提交和目标地址接收之间会有大约 15 -30分钟的延迟。这是为了模拟防欺诈期，只有在防欺诈期过后，资金才会在 Dymension Hub 上可用**

### 给水龙头转账

如果你的中继器运行成功了，运行

    roller relayer  status
    

会显示如下

    💈 Relayer Channels: src, channel-0 <-> channel-1, dst
    

\*\*channel不一定是0，1。\*\*之后我们可以运行以下命令转移部分资金给水龙头。

    roller tx fund-faucet
    

等待15-30分钟后，可以去Discord #froopyland-faucet 频道发以下命令查询你的ibc transfer是否成功。

    $balance dym1g8sf7w4cz5gtupa6y62h3q6a4gjv37pgefnpt5 <你的rollapp-id>
    

这里的rollapp-id可以通过 `roller config show` 查看，类似`silent_1319141-1`

如果成功后，其他用户将可以通过

    $request <user-address> <rollapp-id>
    

领取你的rollapp测试币。并与你的rollapp交互。

之后建议使用[门户](https://portal.dymension.xyz/)将代币IBC 传输到相应的 RollApp。

开发你的rollapp
-----------

### 导出私钥

运行`roller keys list` 将显示如下

    🔑 Addresses:
    
      my_celes_key        | RollApp Sequencer account on the Celestia network
      hub_sequencer       | RollApp Sequencer account on the Dymension Hub
      rollapp_sequencer   | RollApp Sequencer account on the RollApp
      relayer-hub-key     | IBC relayer account on Dymension Hub
      relayer-rollapp-key | IBC relayer account on RollApp
    

目前支持导出 `hub_sequencer`, `rollapp_sequencer` and `my_celes_key` 使用

    roller keys export rollapp_sequencer
    

导出你的`rollapp_sequencer` 私钥，你可以将私钥导入到metamask等其他地方。

使用以下配置连接到你自己的rollapp网络。

    Network Name: <YOUR-ROLLAPP-NAME>
    
    New RPC URL: <RPC-END-POINT> //  http:/你的ip:8545
    
    Chain ID: <YOUR-CHAIN-ID> // 你的EIP155 数字 (middle number of RollApp ID，对于test_101-1， 这个数字是101)
    
    Currency Symbol (optional): <你rollapp 原生代币，如ETH,DYM>
    

接下来，你可以想在别的evm链开发一样，开发你自己的app了。可以查看官方教程中的示例。[用Remix 部署合约并交互。](https://docs.dymension.xyz/build/quick-start/evm/create)

列出你的RollApp
-----------

根据官方博客，我们需要[列出自己的rollapp](https://docs.dymension.xyz/build/production/portal-listing)。

只有具有`RollApp-fam`角色的开发人员才有资格在门户上列出他们的 RollApp。

开发人员应在http或https下提供以下端点。这将允许用户能够与您的 RollApp 交互：

1.  RollApp RPC 端点（默认端口`26657`）
    
2.  Rest端点（默认端口`1317`）
    
3.  JSON RPC 端点（默认端口`8545`。仅与 EVM RollApps 相关）
    

为了列出您的 RollApp，需要执行下面的步骤

1.  按照给水龙头转账部分所述，用您的 rollapp 代币为Discord水龙头提供资金。
    
    可以用下面的命令查询。
    
        $balance dym1g8sf7w4cz5gtupa6y62h3q6a4gjv37pgefnpt5 <RollApp-ID>
        
    
2.  打开
    
    [https://github.com/dymensionxyz/rollapp-registry](https://github.com/dymensionxyz/rollapp-registry)
    
    并点击右上角的fork按钮。
    

![](https://storage.googleapis.com/papyrus_images/51bc685b81869cf6b795a94ac95792e8437aad9d1fa60c0ca612092055da1798.png)

3\. 运行

    git clone https://github.com/<你的github用户名>/rollapp-registry
    

4\. 运行

    cd rollapp-registry
    

5\. 通过 `roller config show` 命令找到你的RollappID 。并运行

    export ROLLAPP_ID=<你看到的RollappID>
    

6.创建适当的文件和文件夹

    mkdir -p $ROLLAPP_ID/logos
    cd $ROLLAPP_ID && touch $ROLLAPP_ID.json
    

7\. 将您的 RollApp 图标添加到该`logos`文件夹​​中。图标文件名：`<RollApp-ID>.<format>`. 可以是 SVG、PNG 或 JPG 格式（**请确保文件不超过 50KB**）。例如silent\_1319141-1.jpg。可以使用FTP上传文件到服务器里，具体用法请自行百度或者谷歌。

8\. 运行`roller config export` 并将 JSON 输出复制粘贴到 .json 并填写以下字段（可以使用vim等文本编辑器，方法请自行百度或者谷歌）： a. RPC: `"http://<你的ip或者域名>:<端口>" (默认端口是26657)` b. REST: `"http://<你的ip或者域名>:<端口>" (默认端口是1317)` c. EVM RPC (仅仅适用于evm rollapp): `"http://<你的ip或者域名>:<端口>" (默认端口是8545)` d. Logo path: `"/logos/<RollApp-ID>.<format>"` 可选字段: e. chainName: 在门户页面替换 `<RollApp-ID>` 作为你的Rollapp名称 f. description: add `"<你的RollApp描述>",` 以显示在门户页面里 g. website: add `"<你的rollapp的网址>",`以显示在门户页面里 **示例 （andromeda\_2548179-1.json）** { "chainId": "andromeda\_2548179-1", "chainName": "Andromeda", "rpc": "https://froopy-rollapp-rpc.andromedapool.com", "rest": "https://froopy-rollapp-rest.andromedapool.com", "bech32Prefix": "ethm", "currencies": \[ { "displayDenom": "pool", "baseDenom": "upool", "decimals": 18, "logo": "/logos/andromeda\_2548179-1.png", "type": "main" } \], "coinType": 60, "faucetUrl": "https://discord.com/channels/956961633165529098/1125047988247593010", "logo": "/logos/andromeda\_2548179-1.png", "ibc": { "hubChannel": "channel-5372", "channel": "channel-0", "timeout": 172800000 }, "evm": { "chainId": "0x26e1d3", "rpc": "https://froopy-rollapp-jsonrpc.andromedapool.com" }, "type": "RollApp", "da": "Celestia", "analytics": true, "rewards": true } 9. 在github添加并提交你的更改。 git add . git commit -m "added RollApp" git push -u origin main 这里需要登陆github并输入密码。然而密码处必须填写你自己设置的[access token](https://www.jianshu.com/p/5e15eb39ab31)。 10. 向 [https://github.com/dymensionXYZ/rollapp-registry](https://github.com/dymensionXYZ/rollapp-registry) 提交pull request。 打开你自己的仓库 https://github.com/<你的github用户名>/rollapp-registry 点击contribute按钮下的Open pull request，提交PR。 更多信息可以自行谷歌或者百度 pr示例 11. 在Discord list-your-rollapp频道发送 `$pair Rollapp-Id` **然后，社区管理员将在 Discord 中与您开始对话。请您密切关注，以便尽快完成列出流程。** 列出RollApp后，我们的任务就完成了。 根据官方博客，奖励将根据 RollApp 的正常运行时间（RPC 端点可用性的奖励）按比例分配奖励，我们只需要保证RollApp正常运行即可。 **_至于如何成为前10的RollApp。我估计比较优质的，有很多用户的RollApp才有希望。难度比较大。_** 如果有新的变化，本教程还会持续更新。 欢迎关注我的推特 [https://twitter.com/EthExploring](https://twitter.com/EthExploring)

---

*Originally published on [Silent ⚛| validator](https://paragraph.com/@exploring/dymension-rollapp)*
