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

everVision

Based on Arweave Blockchain, everFinance is building a Storage-based Consensus Paradigm: development of middleware like MySQL, transforms traditional applications into trusted applications, integrates and internet and blockchain

Sign up for newsletter

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