createAndSubmitItem
功能
仅上传数据,不支付存储费用。
示例
- Node
- Web
import { EthereumSigner, ArweaveSigner } from 'arseeding-js'
import { createAndSubmitItem } from 'arseeding-js/cjs/submitOrder'
import { readFileSync } from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
import { Config } from 'arseeding-js/cjs/types'
const run = async () => {
// use ecc signer
const privateKey = '<your ecc private key>'
const signer = new EthereumSigner(privateKey)
// or
// or use rsa signer
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const wallet = JSON.parse(
readFileSync(path.join(__dirname, '<your arweave keyfile>.json')).toString()
)
const signer = new ArweaveSigner(wallet)
const data = Buffer.from('<need upload data, such as a picture>')
const options = {
tags: [
{ name: 'key01', value: 'val01' },
{ name: 'Content-Type', value: 'data type' } // you should set the data type tag
]
}
const arseedingUrl = 'https://arseed.web3infra.dev'
const tag = '<chaintype-symbol-id>' // everPay 支持的 token tag (chainType-symbol-id)
const config: Config = {
signer: signer,
path: '',
arseedUrl: arseedingUrl,
tag: tag
}
const order = await createAndSubmitItem(data, options, config)
console.log(order)
}
import { InjectedEthereumSigner, InjectedArweaveSigner } from 'arseeding-js'
import { createAndSubmitItem } from 'arseeding-js/cjs/submitOrder'
import { Config } from 'arseeding-js/cjs/types'
import { ethers } from 'ethers'
const run = async () => {
const data = Buffer.from('<need upload data, such as a picture>')
// ethereum
const provider = new ethers.providers.Web3Provider(window.ethereum)
const signer = new InjectedEthereumSigner(provider)
await signer.sign(data)
// or
// arweave
const signer = new InjectedArweaveSigner(window.arweaveWallet)
const data = Buffer.from('web test createSubmitArweave')
await signer.sign(data)
const options = {
tags: [
{ name: 'key01', value: 'val01' },
{ name: 'Content-Type', value: 'data type' } // you should set the data type tag
]
}
const arseedingUrl = 'https://arseed.web3infra.dev'
const tag = '<chaintype-symbol-id>' // everPay 支持的 token tag (chainType-symbol-id)
const config: Config = {
signer: signer,
path: '',
arseedUrl: arseedingUrl,
tag: tag
}
const order = await createAndSubmitItem(data, options, config)
console.log(order)
}
createAndSubmitItem
: 将进行数据上传。如果使用 web3infra 提供的 Arseeding 服务,需要对 Response 的订单进行支付,否则数据将在 60 分钟后清空。完成费用支付,web3infra 将 100% 保证该数据上传到 Arweave 网络。
如果使用自有节点打开 No_Fee 模式,无需再进行额外的支付工作。
- 参数
- 类型
字段 | 描述 |
---|---|
signer | 通过以太坊私钥 或 Arweave Key File 创建的一个 signer 实例。 |
arseedingUrl | arseedUrl 是需要配置的 Arseeding 后端服务地址,这里我们使用 permadao 提供的 Arseed 服务,URL 为:https://arseed.web3infra.dev 。 |
data | 需要上传的数据。 |
tag | 需要支付费用的 token tag ,如果你的 MetaMask 地址在 everPay 持有的是 usdc ,可通过 getTokenTagByEver('usdc') 获取 token tag ,具体使用查看getTokenTagByEver。 |
options | 配置你的 Arweave Tags,什么是 Arweave Tags 参考:这里。 |
tags | tags 中的 Content-Type 需要基于你上传的内容进行配置,例如 上传的 png 格式的图片,则配置为 image/png ,详细说明参考 Content-Type。 |
config | 如果需订单进行顺序上链可以配置 config 中的 needSeq 参数为 true,默认情况下为 false。 |
interface Config {
signer: Signer
path: string
arseedUrl: string
tag: string
apiKey?: string
needSeq?: boolean
}
(
data: Buffer
options: DataItemCreateOptions
config: Config
)
返回数据
- 返回示例
- 返回类型
{
itemId: 'b9qf5fCDY0dB-nF3ixPqL6pHVPFLiDvNYBm_MOi4yq4',
size: 203,
bundler: 'uDA8ZblC-lyEFfsYXKewpwaX-kkNDDw8az3IW9bDL68',
currency: 'USDC',
decimals: 6,
fee: '1247',
paymentExpiredTime: 1691058571,
expectedBlock: 1213090,
tag: 'ethereum-usdc-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
}
{
itemId: string
size: number
bundler: string
currency: string
decimals: number
fee: string
paymentExpiredTime: number
expectedBlock: number
tag: string
}