跳到主要内容

bundle

如果还不知道怎么生成 Arseeding golang 请看上一节:golang SDK 概览

使用 Arseeding-go 可以帮助开发者快速将文件发送到 Arseeding 节点。

发送数据

data := []byte("some data")
tags := []types.Tag{
{"Content-Type", "application/text"},
{"aa", "aaa"},
}
currency := "USDC" // everpay supported all tokens, like 'AR','ETH','USDT' and so on
apiKey := ""
needSeq := false
order, err := sdk.SendData(data, currency, apiKey, &schema.OptionItem{Tags: tags}, needSeq)

返回值: order

data 是需要上传的数据,通常是一个二进制数据。你可以通过 io 读取文件并完成上传。

tags 是 Arweave 支持的一种 key-value 索引,你可以在 tags 中设置文件类型,设置文件名称甚至是版本号。关于 Arweave Tag

tags 中的 Content-Type 需要基于你上传的内容进行配置,例如 上传的 png 格式的图片,则配置为 image/png,详细说明参考 Content-Type

currency 选择你需要为文件存储支付的币种,如果使用个人部署的 No_Fee 模式节点,该值可以为空字符串。

apiKey Arseeding 可以提供 API Key 供用户直接上传数据而无需进行支付。

needSeq Arseeding 支持顺序上链用户的订单,需要顺序上链则设置为 true 即可

注意: 这一步操作是将数据发送至 Arseeding 进行暂存并返回给用户一个待支付的订单,订单支付完成后 Arseeding 会将数据上链,(之后你可以通过 Arseeding 或 Arweave 网关进行数据查询)。若订单1小时内未支付则订单过期,数据删除。

支付订单

通过 arseeding-go 支付上传数据所需的费用后, Arseeding 可以 100% 保证将数据上传至 Arweave 进行永存。

everTx, err := sdk.PayOrder(order)

返回值: everTx

注意:若用户在 everpay 上面还没有资产,可以参考这里进行资产跨链。支付必须在60分钟内完成,否则数据将不会被上传至 Arweave 并且 Arseeding 会将该笔数据清除。

发送数据+支付

arseeding-go 同样提供将发送数据+支付整合到一起的便捷方法,以此来满足在 everpay 中已经拥有资产的用户。

everTx, itemId, err := sdk.SendDataAndPay(data, currency, &schema.OptionItem{Tags: tags}, needSeq) // your account must have enough balance in everpay

用 API Key 发送原始数据

Arseeding 可以提供 API Key 供用户直接上传数据而无需进行支付。

arseedUrl := "<https://arseed.web3infra.dev>"
cli := sdk.New(arseedUrl)

apiKey := "aabbccddeee..."
data := "<such as a picture>"
contentType := "image/jpeg"
tags := map[string]string{
"key1": "arseeding test",
"key2": "a test bundle native data",
}

res, err := cli.SubmitNativeData(apiKey, data, contentType, tags)
fmt.Println("itemId: %s",res.ItemId)

获取 bundle 费用

根据你需要上传的数据量,返回费用值。

arseedUrl := "<https://arseed.web3infra.dev>"
cli := sdk.New(arseedUrl)

resFee, err := cli.BundleFee(dataSize, currency)

返回值:resFee

获取用户订单

通过用户的地址查询该地址的所有 Bundle 数据上传订单。

arseedUrl := "<https://arseed.web3infra.dev>"
cli := sdk.New(arseedUrl)

resOrders, err := cli.GetOrders(addr)

返回值:resOrders