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