# 使用Avail作为DA部署Dymension RollApps **Published by:** [Silent ⚛| validator](https://paragraph.com/@exploring/) **Published on:** 2024-01-27 **URL:** https://paragraph.com/@exploring/avail-da-dymension-rollapps ## Content 最新更新这个任务已经结束了。您必须在排行榜上有积分,才能在节点冲突结束时考虑获得奖励。官方也不再接受新的tickets。 Avail,由Polygon前联合创始人Anurag Arjun创建,是一个专注于数据可用性(DA)的模块化区块链(和celestia同赛道)。 它为下一代去中心化应用和主权级Rollup提供支持,特别强调轻客户端通过对等网络轻松验证数据可用性的能力。Avail的模块化设计使开发人员可以更容易地集成区块链技术,无需担心验证节点集合或代币经济模型。此外,它支持各种执行环境,包括EVM、WASM和新的自定义运行时。 近期Avail 开启了Clash of Nodes激励测试网,完成任务有积分。目前有一个Anyone都能参与的任务——使用Avail作为DA部署Dymension RollApps。官方文档中提到了哪些ROLLAPP符合要求使用Avail作为DA层可操作和可访问:RollApp 应在可公开访问的环境中主动运行和托管,而不是局限于专用网络。功能性:必须不仅仅是一个裸节点;RollApp 应具备操作特性或功能。公共界面:提供可公开访问的网页,以便用户与 RollApp 交互,或其使用的详细说明。护照验证:管理 RollApp 的团队成员必须在社区内具有“Passport verified”角色。(通过Gitcoin Passport认证)本教程仅供参考,请以官方教程为准。部署Rollapp本教程是新建rollapp,如果你有老的rollapp需要迁移,请根据官方教程。(迁移比新建验证更简单)硬件要求2核至少 100GB SSD 磁盘存储至少 16GB RAM至少 100mbps 网络带宽安装rollersudo apt update -y sudo apt install jq -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层为Avail。roller config init <rollapp-id> <denom> --da Avail 其中rollapp-id格式如下仅包含字母字符 例如: berlin,test denom为你的rollapp原生代币的名称。如BTC,PEPE,DYM等,需要3字母以上。 如果成功,会显示如下。这里我们得到了3个地址,需要领水龙头。dym开头的地址去Dymension Discord #froopyland-faucet 频道发$request 领取avail测试币需要在Avail discord领取,需要验证Gitcoin Passport(具体规则见Avail discord faucet-access频道)。 验证完成后,在goldberg-faucet频道发/deposit 你的avail地址 领到测试币后,我们可以注册我们的rollapp了。roller tx register 注册成功会显示如下 💈 Rollapp 'xxx_4544616-1' has been successfully registered on the hub. 接下来运行我们的rollapp。我们将其配置成服务运行。 输入roller services load 成功后会显示💈 Services 'sequencer', 'da-light-client' and 'relayer' been loaded successfully. To start them, use 'systemctl start '. 官方的默认hub rpc不太稳定,我们可以换成其他的。 roller config set hub-rpc "https://rpc-dymension-testnet.mzonder.com:443" 接下来输入sudo systemctl enable sequencer sudo systemctl enable relayer 和sudo systemctl start sequencer sudo systemctl start relayer 以启动服务。检查运行状态sudo systemctl status sequencer sudo systemctl status relayer 正常情况下,2个都应显示为active (running)。查看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 查看详细日志tail -f ~/.roller/rollapp/rollapp.log 查看中继器日志(按ctrl+c退出)sudo journalctl -u relayer -f 正常情况应该看到💈 The relayer is running successfully on you local machine on channel channel-0! 注意:中继器(relayer)通常需要较长时间才能启动成功,一般要几小时以上。请耐心等待。 如果一直都没有成功,则通道可能已进入卡住状态。请打开一个新终端并运行sudo systemctl stop relayer roller relayer start --override 以创建新通道。 完成后,关闭终端并重启服务查看relayer 详细日志(如果你的中继器一直有问题才需要看这部分) tail -f ~/.roller/relayer/relayer.log 如果一直是这样的日志(503, error in json rpc client …) 可能是hub rpc问题建议换一个hub rpcroller config set hub-rpc "新的hub rpc:443" sudo systemctl restart sequencer sudo systemctl restart relayer 也可能是avail rpc的问题。tail -f ~/.roller/rollapp/rollapp.log 检查sequencer +da的日志。 如果出现说明avail rpc有问题,建议去avail discord反馈。正常应该是这样的然后等几分钟再看看relayer日志。上面这样是正常的。监控请参考官方教程https://docs.dymension.xyz/build/production/monitorIBC 转账如果你的中继器运行成功了,运行roller relayer status 会显示如下💈 Relayer Channels: src, channel-0 <-> channel-1, dst 这时,source channel将是channel-0 (具体数字不一定是0,1) 如果显示的内容不是上面这样,说明你的relayer还没有运行成功,如果十几小时以上还没有成功,请运行以下命令,以创建新通道。sudo systemctl stop 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交互。 PR通过后,建议使用门户将代币IBC 传输到相应的 RollApp。开发你的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 部署合约并交互。 也可以用truffle,hardhat等。设置https rollapp rpc开发人员应在https下提供以下端点。这将允许用户能够与您的 RollApp 交互:RollApp RPC 端点(默认端口26657)Rest端点(默认端口1317)JSON RPC 端点(默认端口8545。仅与 EVM RollApps 相关)首先,你需要准备一个域名,并将 RPC、REST 和 JSON RPC 端点的相应域名解析指向你的服务器。接下来,你可以使用 Nginx 或 Caddy 来配置 HTTPS 代理。请注意,这个配置过程相对复杂,建议你查询相关文档学习。将您的 RollApp 添加到 Dymension Registry此注册过程在 Dymension Hub 中为您的 RollApp 引入了专用命名空间。注册后,RollApp 就会被 Dymension Hub 识别,从而允许排序器在链上发布状态更新,并增强不同生态系统之间的互操作性。 为了将您的RollApp添加到Dymension Registry,需要执行下面的步骤 1. 按照给水龙头转账部分所述,用您的 rollapp 代币为Discord水龙头提供资金。 可以用下面的命令查询。$balance dym1g8sf7w4cz5gtupa6y62h3q6a4gjv37pgefnpt5 <RollApp-ID> 2.打开 https://github.com/dymensionxyz/chain-registry (注意,现在更换了一个新的github链接) 并点击右上角的fork按钮。如果你以前fork过,打开你自己的库 ( https://github.com/<你的github用户名>/chain-registry) 点击Sync fork,点击Update Branch3. 运行git clone https://github.com/<你的github用户名>/chain-registry 4. 运行cd chain-registry/devnet 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文件夹​​中。图标文件名:.. 可以是 SVG、PNG 或 JPG 格式(请确保文件不超过 50KB)。例如silent_1319141-1.jpg。可以使用FTP上传文件到服务器里,具体用法请自行百度或者谷歌。 8. 运行roller config export 并将 JSON 输出复制粘贴到 刚刚创建的$ROLLAPP_ID.json文件 并填写以下字段(可以使用vim等文本编辑器,方法请自行百度或者谷歌): a. rpc: "http://<你的ip或者域名>:<端口>" (默认端口是26657) 根据新要求,需要是https端点。 b. rest: "http://<你的ip或者域名>:<端口>" (默认端口是1317) 根据新要求,需要是https端点。 c. evm rpc (仅仅适用于evm rollapp): "http://<你的ip或者域名>:<端口>" (默认端口是8545) 根据新要求,需要是https端点。 d. Logo path: "/logos/." 可选字段: e. chainName: 在门户页面替换 作为你的Rollapp名称 f. description: add "<你的RollApp描述>", 以显示在门户页面里 g. website: add "<你的rollapp的网址>",以显示在门户页面里 json下方"analytics": true, 必须补充以下内容 "goldberg": true "availAddress": "<你Rollapp的avail 地址 >" avail 地址运行roller keys list 可以得到 下面是avail官方给的模版,请参考这个模版 { "chainId": "your_chain_id", "chainName": "Your Chain Name", "rpc": "http://your.rpc.url:port", "rest": "http://your.rest.url:port", "bech32Prefix": "your_prefix", "currencies": [ { "displayDenom": "YOUR_TOKEN", "baseDenom": "uYOUR_TOKEN", "decimals": 18, "logo": "/path/to/your/logo.png", "type": "main" } ], "coinType": 60, "faucetUrl": "http://link.to.your.faucet", "website": "http://link.to.your.website", "logo": "/path/to/your/logo.png", "ibc": { "hubChannel": "your_hub_channel", "channel": "your_channel", "timeout": 172800000 }, "evm": { "chainId": "your_evm_chain_id", "rpc": "http://your.evm.rpc.url:port" }, "type": "RollApp", "da": "Avail", "description": "Description of your RollApp", "analytics": true, "goldberg": true, "availAddress": "Your RollApp's Avail address" } 然后可以通过 https://jsonlint.com/ 这类工具验证你的json格式。 9. 在github添加并提交你的更改。 git add . git commit -m "added RollApp" git push -u origin main 这里需要登陆github并输入密码。然而密码处必须填写你自己设置的access token。 10. 向 https://github.com/dymensionxyz/chain-registry 提交pull request。 打开你自己的仓库 https://github.com/<你的github用户名>/chain-registry 点击contribute按钮下的Open pull request,提交PR。 更多信息可以自行谷歌或者百度 由于官方需要看我们rollapp的活动,我们需要在没有前端的情况下向rollapp存入DYM并转出DYM。这个过程非常繁琐,已经有人找官方反馈了,但是目前暂时还没有变化。 方法一:可以使用 https://explorer.nodestake.org/wallet/keplr?chain 输入自定义链的config,然后添加自己的链到Keplr钱包中,然后使用钱包进行ibc转账。这里不详细写,可以去avail discord求助。 方法二:使用命令行 10. 用新钱包向你的rollapp存入DYM 创建一个新钱包 dymd keys add 钱包名 去Dymension Discord #froopyland-faucet 频道发$request 领到水后,在同一频道发 $balance 查询余额 接下来我们进行IBC 转账 首先查询自己rollapp的port和channel roller relayer status 会显示如 Active src, channel-0 <-> channel-8399, dst 这里的channel-8399 是我们转账到dymension hub要用的 src-channel 我们可以用自己的rollapp_sequencer 作为接收地址(roller keys list 可以看) 设置好dymension的rpc和chain-id dymd config node https://rpc-dymension-testnet.mzonder.com:443 dymd config chain-id froopyland_100-1 向你的Rollapp IBC转账(这里转了10个dym)转账不一定能成功,建议多发送几次交易。 dymd tx ibc-transfer transfer transfer <你的src-channel> <你的rollapp_sequencer地址,ethm开头> 1000000000000000000udym --from <刚刚设置的钱包名> --fees 20000udym -y 我们可以通过命令查询DYM是否成功到达你的rollapp_sequencer钱包。 接下来我们需要一个去掉0x的0x地址 这里的钱包地址由这个命令得到 rollapp_evm debug addr 你刚刚的接收地址 注:需要Address (hex): 后面的地址 接下来运行下面的命令查询 WALLET_ADDRESS=刚得到的去掉0x的钱包地址 CONTRACT_ADDRESS=0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd curl -s -X POST -H "Content-Type: application/json" \ --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"to": "'$CONTRACT_ADDRESS'", "data": "0x70a08231000000000000000000000000'$WALLET_ADDRESS'"},"latest"],"id":1}' \ http://127.0.0.1:8545 如果结果不为 {"jsonrpc":"2.0","id":1,"result":"0x0000000000000000000000000000000000000000000000000000000000000000"} 就说明ibc转账到账了。到账后才能进行下一步操作,如果一直不到账,可以考虑多发几次IBC 交易。 11. 从你的rollapp中转出dym到dymension hub 将你的rollapp_sequencer钱包导入rollapp_evm。 首先需要导出你的rollapp_sequencer 私钥(刚刚接收dym的钱包) roller keys export rollapp_sequencer 接下来将私钥导入到rollapp_evm 以进行ibc转账 rollapp_evm keys unsafe-import-eth-key 钱包名 私钥 我们需要将erc20的dym转换为Cosmos coin rollapp_evm tx erc20 convert-erc20 0x80b5a32E4F032B2a058b4F29EC95EEfEEB87aDcd 10000000000000000000 --from 刚刚导入的钱包名 --chain-id 你的RollappID --gas 10000000 -y 注: roller config show 可以看你的RollappID 运行以下命令查询转换结果 rollapp_evm query bank balances <你的rollapp_sequencer地址,ethm开头> 如果转换成功,能看到类似下面的结果 balances: - amount: "10000000000000000000" denom: ibc/15B5176FE96608C01D36B7B23A990E2AE4E16BAE78EDA4D54B2672B844922823 我们终于可以将rollapp中的dym IBC转账到Dymension Hub了。 首先查询自己rollapp的port和channel roller relayer status 会显示如 Active src, channel-0 <-> channel-8399, dst 其中channel-0 是我们从自己的rollapp转出DYM到Dymension Hub要用的 src-channel 我们可以用之前新创建的dym地址当接收地址(随便用一个dym地址也行)。 向Dymension Hub IBC转账(这里转了2个dym) rollapp_evm tx ibc-transfer transfer transfer <你的src-channel> <你之前创建的dym地址,dym开头> 2000000000000000000ibc/15B5176FE96608C01D36B7B23A990E2AE4E16BAE78EDA4D54B2672B844922823 --from <刚刚设置的钱包名> -y --gas 1000000 --chain-id 你的RollappID 例如下方是我的命令,你需要根据自己的情况修改。 rollapp_evm tx ibc-transfer transfer transfer channel-0 dym1sfla5j67eyepslh0s6ltr4ype724pk3wrg24ly 2000000000000000000ibc/15B5176FE96608C01D36B7B23A990E2AE4E16BAE78EDA4D54B2672B844922823 --from silent -y --gas 1000000 --chain-id silent_4544616-1 如果转账成功,你将在之后看到之前的dym钱包余额增加(这里转了2个dym)。转账不一定能成功,可以多发送几次交易。这里增加的是in Txs Count 如果成功后(dym接收地址余额增加),等待半小时到一小时左右可以打开以下网站(网站更新感觉很慢) https://fl.dym.fyi/rollapp/<你的RollappID> 注: roller config show 可以看你的RollappID 打开网站看IBC 30 days activities这栏 需要In Txs Count 和 Out Txs Count 都大于一,如果你完成了上面的步骤,应该达到了要求。 12. 验证你的rollapp 去avail discord 中 rollapp-verification 频道开票。 发送自己的Github PR链接,和 https://fl.dym.fyi/rollapp/<你的RollappID> 等待管理验证。 之后管理会要求你用hub_sequencer地址从metamask转指定数量的DYM到他指定的地址。 首先导出hub_sequencer地址 roller keys export hub_sequencer 然后导入到小狐狸里。小狐狸里需要根据下面配置添加并切换至DYM网络 Network name: Dymension Froopyland testnet RPC: https://froopyland-json.rpc.silknodes.io/ Chain-id: 100 Symbol: DYM Explorer URL: https://fl.dym.fy 之后,用你刚刚导入的hub_sequencer钱包给官方指定的地址发指定数额的DYM。 之后将这笔交易的区块浏览器链接发给管理,等待管理验证。 如果验证通过后,PR 将会被Merge(需要等待较长时间,可能一两天?)。 之后,你的rollapp会显示在 https://portal.dymension.xyz/ 同时能看到Avail的Logo。 Leaderboard 网站也能看到你的rollapp。 https://leaderboard.availproject.org/ 至此Rollapp的运行和注册便完成了。我们只需要保持稳定运行即可。 你可以在上面开发Dapp, 吸引用户来交互,增加自己rollapp的TVL,也许能获得更多奖励。 如果有新的变化,本教程还会持续更新。 欢迎关注我的推特 https://twitter.com/EthExploring ## Publication Information - [Silent ⚛| validator](https://paragraph.com/@exploring/): Publication homepage - [All Posts](https://paragraph.com/@exploring/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@exploring): Subscribe to updates - [Twitter](https://twitter.com/EthExploring): Follow on Twitter