Dymension rollapp部署教程

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

官网:

官推:

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

根据官方博客和公告。只有Discord有RollApp-fam role的人才有资格拿rollapp部署者的奖励。

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

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

如果没有RollApp-fam role 怎么办?

官方博客中说 如果您没有 RollApp-fam 角色,但您是一名真正的Builder,请联系我们,描述您的经验和 RollApp 想法。

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

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

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

注:本教程仅供参考,请以官方教程为准。

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

安装最新版本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 migrate

重新启动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

输出中应该有

💈 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
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

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交互。

之后建议使用门户将代币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 部署合约并交互。

列出你的RollApp

根据官方博客,我们需要列出自己的rollapp

只有具有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

    并点击右上角的fork按钮。

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

10. 向

提交pull request。

打开你自己的仓库

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

点击contribute按钮下的Open pull request,提交PR。 更多信息可以自行谷歌或者百度

pr示例
pr示例

11. 在Discord list-your-rollapp频道发送 $pair Rollapp-Id

然后,社区管理员将在 Discord 中与您开始对话。请您密切关注,以便尽快完成列出流程。

列出RollApp后,我们的任务就完成了。

根据官方博客,奖励将根据 RollApp 的正常运行时间(RPC 端点可用性的奖励)按比例分配奖励,我们只需要保证RollApp正常运行即可。

至于如何成为前10的RollApp。我估计比较优质的,有很多用户的RollApp才有希望。难度比较大。

如果有新的变化,本教程还会持续更新。

欢迎关注我的推特

Subscribe to Silent ⚛| validator
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.