Cover photo

Dymension rollapp部署教程

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

官网:

官推:

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

post image

根据官方博客和公告。只有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

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
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按钮。

post image

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. 向 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