快速入门
为了方便开发者入门,我们部署了 web3infra.dev 方便开发者永存数据。快速入门将介绍如何使用 arseeding-js 将数据存通过 web3infra.dev 存储到 Arweave 网络。
准备
为了快速完成数据上传,你需要提前准备:
- node.js 开发环境
- 拥有一个 MetaMask/ArConnect 钱包。
- 该钱包拥有在 everPay 上任意一种资产。
如果还没做好准备,请查看:everPay 充值指南
创建项目
打开终端,创建一个空文件夹来存放项目, 通过 npm init
创建 package.json
进行包管理。
mkdir arseeding-demo
cd arseeding-demo
npm init
安装
通过编译器 打开 arseeding-demo
文件, 打开终端通过以下代码安装 arseeding-js
。
npm i arseeding-js
上传数据
安装完成后,在目录下创建 index.js
,将以下代码复制到 index.js
:
- MetaMask
- ArConnect
const { genNodeAPI } = require('arseeding-js')
const run = async () => {
const instance = genNodeAPI('YOUR PRIVATE KEY')
const arseedUrl = 'https://arseed.web3infra.dev'
const data = Buffer.from('........')
const payCurrencyTag = 'ethereum-usdc-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' // everPay 支持的 token tag (chainType-symbol-id)
const options = {
tags: [{ name: 'Content-Type', value: 'image/png' }]
}
const res = await instance.sendAndPay(arseedUrl, data, payCurrencyTag, options)
console.log('res', res)
}
run()
import { ArweaveSigner } from 'arseeding-js'
import { payOrder, newEverpayByRSA } from 'arseeding-js/cjs/payOrder'
import { createAndSubmitItem } from 'arseeding-js/cjs/submitOrder'
import { readFileSync } from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
const run = async () => {
const __dirname = path.dirname(fileURLToPath(import.meta.url))
const arJWK = JSON.parse(
readFileSync(path.join(__dirname, '<your arweave keyfile>.json')).toString()
)
const arAddress = 'AR Wallet Address'
const signer = new ArweaveSigner(arJWK)
const data = Buffer.from('<need upload data, such as a picture>')
const options = {
tags: [{ name: 'Content-Type', value: 'image/png' }]
}
const arseedingUrl = 'https://arseed.web3infra.dev'
const payCurrencyTag = 'ethereum-usdc-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48' // everPay 支持的 token tag (chainType-symbol-id)
const config = {
signer: signer,
path: '',
arseedUrl: arseedingUrl,
tag: payCurrencyTag
}
const order = await createAndSubmitItem(data, options, config)
const everpay = newEverpayByRSA(arJWK, arAddress)
const everHash = await payOrder(everpay, order)
console.log({everHash,order})
}
run()
提示
若您喜欢以下导入 arseeding-js, 则需要在 package.json 文件中添加 type:"module"。
import { genNodeAPI, getTokenTagByEver } from 'arseeding-js'
配置说明:
- 将你的 MetaMask 密钥填充到
YOUR PRIVATE KEY
。也可使用 Arconnect 将你的 keyfile json 文件 路径导入其中,确保 PRV KEY 对应的钱包在 everPay 拥有资产。 - arseedUrl 是需要配置的 Arseeding 后端服务地址,这里我们使用 permadao 提供的 Arseed 服务,URL 为:https://arseed.web3infra.dev 。
- data 里需要填充你想要上传的二进制数据,开发者可以采用 file io 从硬盘上读取对应的文件。
- payCurrencyTag 是需要选择的支付
Token tag
,如果你的 MetaMask 地址在 everPay 持有的是 usdc,可通过getTokenTagByEver('usdc')
,获取 usdc 的tag
,如果持有的是其他代币,请填写其他代币的名称。具体查看getTokenTagByEver。 - options 里可以配置你的 Arweave Tags,什么是 Arweave Tags 参考:这里。
- tags 中的 Content-Type 需要基于你上传的内容进行配置,例如 上传的 png 格式的图片,则配置为
image/png
,详细说明参考 Content-Type。
在准备好配置后,调用 await instance.sendAndPay(arseedUrl, data, payCurrencyTag, ops) 或 使用 Arconnect (createAndSubmitItem、newEverpayByRSA、payOrder)等方法 就可以将你的数据上传到 web3infra 的 Arseeding 节点。
在终端执行以下命令进行文件上传:
node index.js
正确执行后终端将返回:
res {
everHash: '0xf88033873d3bfc525d9333ec51b60f3f3dc03f822a9a73f66a10ebbd944b29c6',
order: {
itemId: '2bpKpp0dtfFZE82-P0lOmeI5x4m2ynatFzdjBmCWd4k',
size: 192,
bundler: 'uDA8ZblC-lyEFfsYXKewpwaX-kkNDDw8az3IW9bDL68',
currency: 'USDC',
decimals: 6,
fee: '1141',
paymentExpiredTime: 1690702235,
expectedBlock: 1210331,
tag: 'ethereum-usdc-0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
}
}
最终这些数据将打包到 Arweave 网络,永存并不可篡改。
下载数据
在返回的结果中可以找到 res.order.itemId
,上文中 itemId 为 2bpKpp0dtfFZE82-P0lOmeI5x4m2ynatFzdjBmCWd4k
。
可以使用 curl 下载数据:
curl --location --request GET 'https://arseed.web3infra.dev/2bpKpp0dtfFZE82-P0lOmeI5x4m2ynatFzdjBmCWd4k'
更深入的学习 Arseeding 和 web3infra 请查看: