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

By [Silent ⚛| validator](https://paragraph.com/@exploring) · 2024-02-04

---

最新更新
====

![](https://storage.googleapis.com/papyrus_images/0f617d936e0219361d98fd9b912c11a6e6b741506e2402f6234b3d7b81af0e85.png)

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

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

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

近期Avail 开启了[Clash of Nodes**激励测试网**](https://docs.availproject.org/clash-of-nodes/challenges/)，**完成任务有积分**。目前有一个Anyone都能参与的任务——使用 Madara 和 Karnot 部署应用链。目前虽然在官方文档显示为暂停状态，**但是PR通过后能在排行榜显示，有积分**。

![这是一个所有人都能参与的任务](https://storage.googleapis.com/papyrus_images/eca2753c970d0396489899d693789e6d982ab5bc43644be5232c83ee17d66333.png)

这是一个所有人都能参与的任务

![如何参与—来自官方文档](https://storage.googleapis.com/papyrus_images/09f7e42025a978bbe38f5a8988685aa7b277d3e9712c7e134c9b18b13f61f4e2.png)

如何参与—来自官方文档

官方提到了如何参与：

1.  **部署 Madara 应用链**：使用 Karnot CLI 进行快速部署。您可以选择**自己托管**或请求Karnot团队提供托管服务。
    
2.  **在 Avail Goldberg 测试网上部署**：选择将您的链数据发布到 Avail Goldberg 测试网上。
    
3.  **为您的帐户注入资金**：使用 Avail Goldberg 水龙头获取 Goldberg 测试网的代币。
    
4.  **为Clash of Nodes列出您的应用链**：创建一个 PR，按照指定的 JSON 格式在 Karnot CLI 的官方存储库上列出您的应用链。
    

**本教程选择自己托管应用链，仅供参考，请以**[**官方教程**](https://docs.availproject.org/clash-of-nodes/dymension/)**和**[**karnot给的教程**](https://mirror.xyz/karnot.eth/5y5OV_kiX9UJDW1HGc8mXcummpcgt4VpwjQRHMzDlFI)**为准。**

配置要求
====

根据Karnot的[mirror文章](https://mirror.xyz/karnot.eth/5y5OV_kiX9UJDW1HGc8mXcummpcgt4VpwjQRHMzDlFI),由于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](https://storage.googleapis.com/papyrus_images/bb28e5bde1e88617606851d6e7b9b436ec37522afd07b331f818b446c19190ba.png)

init

**注意：由于之后要替换钱包，请不要给这个钱包领水。**

替换钱包
----

下载[https://polkadot.js.org/extension/](https://polkadot.js.org/extension/) 插件

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

这个助记词也导入到

[https://goldberg.avail.tools/#/](https://goldberg.avail.tools/#/)

**接下来去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
--------

打开

[https://app-id-gen.vercel.app/](https://app-id-gen.vercel.app/)

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

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

![](https://storage.googleapis.com/papyrus_images/7b59c8567cdec44963e0a763f6965dbfdc589e2ff7e492bf4d3e1656061c7898.png)

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

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

![](https://storage.googleapis.com/papyrus_images/ac6bec23f0287561d45d500a4a74ff5872d4f4c65a1a9f86a33ec953b35e6445.png)

下方会显示

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按回车即可。正常运行后会这样显示

![](https://storage.googleapis.com/papyrus_images/62e4e62d46e23787566574e66b73b3ea8cd4ac7c037355dae5bd52e53d9ec232.png)

启动浏览器
-----

按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` 能看到如下

![浏览器](https://storage.googleapis.com/papyrus_images/ae38fcff435136f207e6b9016b35bd376d0fac17afb589e83d556725e2b8c59f.png)

浏览器

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

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

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

1.  `rpc_url`: [http://你的ip:9944](http://13.233.147.221:9944/)
    
2.  `explorer_url`: [http://你的ip:4000](http://13.233.147.221:4000/)
    
3.  `metrics_endpoint`: [http://你的ip:9615/metrics](http://13.233.147.221:9615/metrics)
    

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

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

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

创建PR
----

1.打开 [https://github.com/karnotxyz/avail-campaign-listing](https://github.com/karnotxyz/avail-campaign-listing)

并点击右上角的fork按钮。

![](https://storage.googleapis.com/papyrus_images/eebb3b9015414ebd2fc7ab77f1353b4c5ceea4935d54127d0a58b0e4bb27f2f0.png)

如果你以前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.打开

[

Online UUID Generator
---------------------

Quickly and easily generate individual or bulk sets of universally unique identifiers (UUIDs).

https://www.uuidgenerator.net



](https://www.uuidgenerator.net/version4)

生成一个类似

    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](https://www.jianshu.com/p/5e15eb39ab31)。

8\. 向

[

GitHub - karnotxyz/avail-campaign-listing
-----------------------------------------

Contribute to karnotxyz/avail-campaign-listing development by creating an account on GitHub.

https://github.com

![](https://storage.googleapis.com/papyrus_images/198603d1bfc95e3ad345b9f1da83496d102a701e285d018f78135ed99e89ed16.png)

](https://github.com/karnotxyz/avail-campaign-listing)

提交pull request。

打开你自己的仓库

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

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

![](https://storage.googleapis.com/papyrus_images/dfc5e4f8066287a2c1062198124ce08b3d8e93cfed7d650d64a443a3349938ba.png)

9\. 之后，等待PR通过即可。**PR合并需要等待较长时间。PR合并后，应用链将出现在**[**排行榜**](https://leaderboard.availproject.org/)**。（也需要一段时间）**

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

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

[https://mirror.xyz/karnot.eth/6acUc1sKrFjBEHG5UHptNeY2CjiXhgyb-kKZ1zTxoUc](https://mirror.xyz/karnot.eth/6acUc1sKrFjBEHG5UHptNeY2CjiXhgyb-kKZ1zTxoUc)

**来自推特大佬@skyMetaverse的补充**

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

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

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

打开app-chain-builders频道

![](https://storage.googleapis.com/papyrus_images/6f0ef976f53ea368a6304c03425a45408570930961a0d3885b33d8a8c33bc655.png)

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

    /deposit-rollup 你的avail地址
    

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

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

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

**欢迎关注我的推特**
============

---

*Originally published on [Silent ⚛| validator](https://paragraph.com/@exploring/avail-da-madara)*
