这个任务已经结束了。您必须在排行榜上有积分,才能在节点冲突结束时考虑获得奖励。官方也不再接受新的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需要迁移,请根据官方教程。(迁移比新建验证更简单)
2核
至少 100GB SSD 磁盘存储
至少 16GB RAM
至少 100mbps 网络带宽
sudo 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
输出中应该有
💈 Roller version v1.0.6-beta
💈 Build time: 2024-01-18T09:05:45+0000"
💈 Git commit: 21b1b22e96466cc83b051ebacfb513b3a0d99de1
这里我们选择默认的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 <dym开头的地址>
领取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 <service>'.
官方的默认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)。
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
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
以创建新通道。
完成后,关闭终端并重启服务
sudo systemctl restart relayer
查看relayer 详细日志(如果你的中继器一直有问题才需要看这部分)
tail -f ~/.roller/relayer/relayer.log
如果一直是这样的日志(503, error in json rpc client …) 可能是hub rpc问题
建议换一个hub rpc
roller 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/monitor
如果你的中继器运行成功了,运行
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
完成后,关闭终端并重启服务
sudo systemctl restart relayer
可以用这个命令进行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。
运行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 交互:
RollApp RPC 端点(默认端口26657
)
Rest端点(默认端口1317
)
JSON RPC 端点(默认端口8545
。仅与 EVM RollApps 相关)
首先,你需要准备一个域名,并将 RPC、REST 和 JSON RPC 端点的相应域名解析指向你的服务器。接下来,你可以使用 Nginx 或 Caddy 来配置 HTTPS 代理。请注意,这个配置过程相对复杂,建议你查询相关文档学习。
此注册过程在 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 Branch
3. 运行
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/<RollApp-ID>.<format>"
可选字段:
e. chainName: 在门户页面替换 <RollApp-ID>
作为你的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"
}
然后可以通过
这类工具验证你的json格式。
9. 在github添加并提交你的更改。
git add .
git commit -m "added RollApp"
git push -u origin main
这里需要登陆github并输入密码。然而密码处必须填写你自己设置的access token。
10. 向
提交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 <dym开头的地址>
领到水后,在同一频道发
$balance <dym开头的地址>
查询余额
接下来我们进行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会显示在
同时能看到Avail的Logo。
Leaderboard 网站也能看到你的rollapp。
至此Rollapp的运行和注册便完成了。我们只需要保持稳定运行即可。 你可以在上面开发Dapp, 吸引用户来交互,增加自己rollapp的TVL,也许能获得更多奖励。