Frame-95.png
2022-03-23

使用 goar 在 Arweave 上进行数据永存

Arweave 是一条简单易用的存储链,使用 Arweave 可以非常方便的进行数据永久存储和数据读取。
与 FIL 不同,Arweave 没有繁复的下单流程,用户和开发者只需要持有 AR 就可以将数据上传到 Arweave 网络。数据交易打包后,用户和开发者可以随时下载这些数据。

什么是 goar

goar 是由 everFinance 团队开发的 Arweave SDK,也是 Arweave 官方指定的 Golang 版本 SDK。

通过 github 链接直达 goar repo:https://github.com/everFinance/goar

开发者也可以从 Arweave 官网获得更多的 SDK:https://www.arweave.org/build#interfaces

下文会介绍 Arweave 的存储费用以及如何集成 goar。

存储费用

永久存储的费用高于 AWS 等云服务商的存储费用,但是远远便宜于 Ethereum 等传统公链。Ethereum 上一笔交易需要数十美金,而 Arweave 上永久存储 1 GB 仅需要 10 美金。使用 ArweaveFees 查看存储费用:https://arweavefees.com/

准备工作

在进行开发之前,开发者必须拥有 Arweave 钱包地址并且持有一定数量的 AR。

生成 AR 钱包

使用 Arweave 官方钱包可以安全的生成 Arweave 钱包地址。可以在 Chrome 商店中搜索 Arweave 即可下载官方钱包。

 

直达链接:https://chrome.google.com/webstore/detail/arweave/iplppiggblloelhoglpmkmbinggcaaoc

安装完成后即可点击插件的“Create a new wallet”按钮创建钱包。创建时生成的 keyfile 需要严密保存,keyfile 即为 Arweave 钱包的私钥千万不可泄露。keyfile 将用于 goar 的配置文件,密钥注入 goar 后就可以用于数据存储

 

使用 Arweave 官方钱包生成的钱包地址如下图所示:

获得 AR

有两种途径可以获得。第一是使用中心化交易所,目前 Binance,Huobi,OKX 等交易所都支持 Arweave。开发者可以在中心化交易所购买 AR 并提现到 Arweave 钱包地址。

 

第二个途径是通过去中心化交易所获得 AR。如果开发者已经拥有 Ethereum 账户,并持有 Ethereum 上的 USDC 或者 USDT,可以将 U 充值到 everPay 协议,使用 everPay Swap 进行兑换。兑换完成后将 AR 提现到 Arweave 主网。直达链接:https://app.everpay.io/swap

同时,也可以到 Uniswap 购买 WAR,购买完成后使用 everPay 将 WAR 跨链回 Arweave 主网。直达链接:

如何集成 goar

完成集成之前需要准备好 Arweave 钱包的 keyfile 和持有一定数量的 AR。如果还没 Arweave 钱包以及 AR,请查看上一节。

加载钱包

通过以下命令即可将 goar 安装到自己的仓库:

go get github.com/everFinance/goar

goar 支持从文件路径加载钱包:

wallet, _ := goar.NewWalletFromPath(“./keyfile.json”, “https://arweave.net”)

./keyfile.json 即是钱包的密钥文件。https://arweave.net 则是 Arweave 网关地址,如果开发者有自己的节点,也可以配置自有的

发送数据

导入完成后使用 wallet 对象即可进行数据交易发送处理。

tx, err := wallet.SendData(

  []byte(“123”), // Data bytes

  []types.Tag{

    types.Tag{

      Name“testSendData”,

      Value: “123”,

    },

  },

)

fmt.Println(tx.ID, err)

 

其中

[]byte(“123”) 为需要上传的数据,开发者可以将任意的二进制数据放在此处进行处理。

[]types.Tag 是 Arweave 交易的标签,标签是键值对数据,将被 Arweave.net 的 GraphQL 处理,用于数据检索。开发者可以为 Arweave 交易定义多个标签。

使用 tx.ID 可以获得 Arweave 交易的 ID。

下载数据

可以通过 Arweave 交易 ID 对数据进行下载。

data, err := wallet.Client.GetTransactionData(id)

上传和下载本地文件

使用 goar 开发者可以很轻松的构建数据上传应用。这些数据可以是本地数据,也可以是 API 获得的数据。点击下面链接可以查看使用 goar 进行文本文件上传的示例:

https://github.com/everFinance/goar/blob/main/example/local_data_test.go 

可能遇到的问题

1.交易打包慢

Arweave 需要 2-10 分钟出一个区块,交易打包速度较慢。Arweave 出块慢,但是容积大(无限),Arweave 交易没有区块大小限制,也没有交易大小限制,开发者可以一次性批量的上传更大更多的文件。

2.交易长时间不打包

很可能是由于网络拥堵,手续费不能满足矿工需求导致交易打包失败。一笔 Arweave 交易必须在 50 个区块以内进行打包,若在交易发出后超过 50 个区块高度,该交易会被网络遗弃永不再进行打包。超过 50 个区块仍然没有打包的交易,开发者可以考虑重新发送交易。如果网络拥堵,开发这可以使用交易加速功能,提高交易的支出费用加速交易打包。

3.并发上传文件

Arweave 交易不像 Ethereum 有前后交易依赖关系,在 Ethereum 上用户发送新的交易必须等待上一笔交易打包。Arweave 可以支持并发交易,每笔交易都会独立的打包到 Arweave 上。


Join our
Telegram / Discord / Twitter / CN Twitter

Tagged with In No tags

Sign up for newsletter

Sign up here to get the latest news and updates delivered directly to your inbox.