使用 Avail 作为 DA 层部署 Madara 应用链

最新更新

这个任务已经结束了。您必须在排行榜上有积分,才能在节点冲突结束时考虑获得奖励。官方也不再接受新的tickets。

Avail,由Polygon前联合创始人Anurag Arjun创建,是一个专注于数据可用性(DA)的模块化区块链(和celestia同赛道)。

它为下一代去中心化应用和主权级Rollup提供支持,特别强调轻客户端通过对等网络轻松验证数据可用性的能力。Avail的模块化设计使开发人员可以更容易地集成区块链技术,无需担心验证节点集合或代币经济模型。此外,它支持各种执行环境,包括EVM、WASM和新的自定义运行时。

近期Avail 开启了Clash of Nodes激励测试网完成任务有积分。目前有一个Anyone都能参与的任务——使用 Madara 和 Karnot 部署应用链。目前虽然在官方文档显示为暂停状态,但是PR通过后能在排行榜显示,有积分

这是一个所有人都能参与的任务
这是一个所有人都能参与的任务
如何参与—来自官方文档
如何参与—来自官方文档

官方提到了如何参与:

  1. 部署 Madara 应用链:使用 Karnot CLI 进行快速部署。您可以选择自己托管或请求Karnot团队提供托管服务。

  2. 在 Avail Goldberg 测试网上部署:选择将您的链数据发布到 Avail Goldberg 测试网上。

  3. 为您的帐户注入资金:使用 Avail Goldberg 水龙头获取 Goldberg 测试网的代币。

  4. 为Clash of Nodes列出您的应用链:创建一个 PR,按照指定的 JSON 格式在 Karnot CLI 的官方存储库上列出您的应用链。

本教程选择自己托管应用链,仅供参考,请以官方教程karnot给的教程为准。

配置要求

根据Karnot的mirror文章,由于madara cli目前在本地构建madara镜像,需要一定的配置。官方测试时用了4 vCPU, 16 GB memory and 50 GB storage的实例

基础环境配置

安装必要的基础环境

sudo apt-get update -y
sudo apt-get install git jq build-essential pkg-config libssl-dev clang protobuf-compiler screen -y

安装docker

curl -fsSL https://get.docker.com -o install-docker.sh && bash install-docker.sh

安装rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

安装madara cli

git clone https://github.com/karnotxyz/madara-cli
cd madara-cli
cargo build --release
cp ./target/release/madara $HOME/.cargo/bin

初始化应用链

madara init

这里需要输入一个独特的chain name

init
init

注意:由于之后要替换钱包,请不要给这个钱包领水。

替换钱包

下载https://polkadot.js.org/extension/ 插件

新建一个钱包,保存好助记词。

这个助记词也导入到

接下来去Avail discord领取测试币,需要验证Gitcoin Passport(具体规则见Avail discord faucet-access频道)

验证完成后,在goldberg-faucet频道发

/deposit 你的avail地址

把配置文件里的助记词替换成刚刚创建的

m="你的助记词"
sed -i "s/\"seed\":\"[^\"]*\"/\"seed\":\"$m\"/" ~/.madara/app-chains/<刚刚的chain name>/da-config.json

把配置文件里的地址也替换成刚刚创建的

address="刚刚导入得到的地址"
sed -i "s/\"address\":\"[^\"]*\"/\"address\":\"$address\"/" ~/.madara/app-chains/<刚刚的chain name>/da-config.json

检查

cat ~/.madara/app-chains/<刚刚的chain name>/da-config.json

生成App Id

打开

点击Detect extensions按钮,选择你之前创建的账户。

接下来在黑色框中输入你刚刚的app name,然后点击send tx and create app id按钮

然后在钱包中确认交易即可。

接下来在Find an App Id下方的框中输入你刚刚的appname,点击Search App id按钮。

下方会显示

App found - AppId: xxx, Owner: xxxxxx

其中Appid后面的数字就是我们需要的Appid。

替换App Id

appid=你刚刚得到的数字
sed -i "s/\"app_id\":\s*[0-9]*/\"app_id\":$appid/" ~/.madara/app-chains/<刚刚的chainname>/da-config.json

检查

cat ~/.madara/app-chains/<刚刚的chain name>/da-config.json

启动你的链

启动一个screen终端

screen -S madara
cd
madara run

上下键选择你的链,然后按回车。

接下来需要等待较长时间(等待编译,时间取决于你的机器配置)。

编译结束后,会有一个问题。

? Have you funded your Avail address xxx using the faucet? (Y/n)

输入y按回车即可。正常运行后会这样显示

启动浏览器

按Ctrl +AD 退出这个screen (他会在后台运行)

screen -S explorer

打开一个浏览器的screen终端

madara explorer --host=你的ip地址(不需要http或者https,纯ip即可)

正常情况显示

🐳 Running docker image: ghcr.io/lambdaclass/stark_compass_explorer:v0.2.34.3-1
🧭 Explorer is running on http://localhost:4000

打开http://你的ip:4000 能看到如下

浏览器
浏览器

我们的应用链和浏览器就跑起来了。

按Ctrl +AD 退出这个screen (他会在后台运行)

下面是对我们有用的3个endpoints

  1. rpc_urlhttp://你的ip:9944

  2. explorer_urlhttp://你的ip:4000

  3. metrics_endpointhttp://你的ip:9615/metrics

浏览器和metrics endpoint的链接都可以直接在浏览器打开,你可以打开验证一下。(如果打不开,请检查防火墙设置

注 1:对于metrics_endpoint您需要在/metrics前面添加端口号

注 2:请勿在端口号后添加 /

创建PR

1.打开 https://github.com/karnotxyz/avail-campaign-listing

并点击右上角的fork按钮。

如果你以前fork过,打开你自己的库

( https://github.com/<你的github用户名>/avail-campaign-listing

点击Sync fork,并点击Update Branch

2. 运行

cd && git clone https://github.com/<你的github用户名>/avail-campaign-listing

3. 运行

cd avail-campaign-listing/app_chains

4.打开

生成一个类似

d0a850e3-f34f-49cf-a5ee-bf4c9bfbc91b

的id。

5.创建json文件

id=刚刚的id
touch $id.json

6.填写以下内容到刚刚创建的json中,(可以使用vim等文本编辑器,方法请自行百度或者谷歌)

{
  "name": "<chain name>",
  "logo": "<logo 链接,比如我的 https://i.imgur.com/0KUHPnZ.png>",
  "rpc_url": "http://你的ip:9944",
  "explorer_url": "http://你的ip:4000",
  "metrics_endpoint": "http://你的ip:9615/metrics",
  "id": "你刚刚生成的id"
}

下面是官方示例,请根据自己情况修改

{
  "name": "my_app_chain",
  "logo": "https://placehold.co/400x400",
  "rpc_url": "https://rpc.mychain.xyz",
  "explorer_url": "https://explorer.mychain.xyz",
  "metrics_endpoint": "https://metrics.mychain.xyz",
  "id": "942ff35e-f048-4d10-ae61-6cb970cad2f0"
}

7. 在github添加并提交你的更改。

git add .
git commit -m "Adding 你的chainname"
git push -u origin main

这里需要登陆github并输入密码。然而密码处必须填写你自己设置的access token

8. 向

提交pull request。

打开你自己的仓库

https://github.com/<你的github用户名>/avail-campaign-listing

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

9. 之后,等待PR通过即可。PR合并需要等待较长时间。PR合并后,应用链将出现在排行榜。(也需要一段时间)

至此应用链的运行和注册便完成了。我们只需要保持稳定运行即可。 你可以在上面开发Dapp, 吸引用户来交互,增加自己应用链的TVL,也许能获得更多奖励。

以下是来自Karnot官方的Madara开发教程,大家如果想要在appchain开发东西,增加交互输,可以参考。(非必需)

来自推特大佬@skyMetaverse的补充

提交PR等待merge的时候,如果提示json文件的格式要正确。可以使用下面的命令将json文件格式化 ,然后重新提交。

npx prettier --write "app_chains/改成自己的UUID.json"

测试币消耗过快,不够用怎么办

打开app-chain-builders频道

点击 I Agree按钮,可以获得AppChain Builder这个role。之后,在频道发

/deposit-rollup 你的avail地址

这将让你每天能领25AVL, 一周最多 200 AVL。

如果有问题,可以在Avail discord的 #developer-discussions 频道提问。

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

欢迎关注我的推特

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.