使用 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 主网。直达链接:
- Uniswap https://app.uniswap.org/#/swap?inputCurrency=0x4fadc7a98f2dc96510e42dd1a74141eeae0c1543&chain=mainnet
- everPay https://app.everpay.io
如何集成 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