Skip to content

hoodee86/arweb3

Repository files navigation

Arweave 上传测试工具

一套用于测试 Arweave 数据上传链路的全栈工具,包含 Go 后端 + React 前端,数据持久化使用 SQLite,链上交互通过 goar SDK 对接 Arweave。


项目结构

web3/
├── backend/
│   ├── main.go                  # 服务入口,Gin 路由配置
│   ├── go.mod / go.sum          # Go 模块依赖
│   ├── handlers/
│   │   └── handlers.go          # API 处理器(上传/查询/状态)
│   ├── db/
│   │   └── db.go                # SQLite 数据库操作
│   └── models/
│       └── models.go            # 数据结构定义
├── frontend/
│   ├── src/
│   │   ├── App.tsx              # 主应用组件
│   │   ├── api/
│   │   │   └── client.ts        # Axios API 封装
│   │   └── components/
│   │       ├── UploadForm.tsx   # 上传表单 + 状态轮询
│   │       ├── QueryForm.tsx    # 数据查询(TxID / 本地ID)
│   │       └── RecordsTable.tsx # 本地 SQLite 记录列表
│   └── package.json
├── start-backend.sh             # 后端启动脚本
├── start-frontend.sh            # 前端启动脚本
└── README.md

快速开始

1. 准备 Arweave 钱包

你需要一个 Arweave JWK 格式钱包(.json 文件)并确保钱包内有 AR 余额用于支付 Gas 费。

如果没有钱包,后端会以只读模式启动(可查询,不可上传)。

2. 启动后端

# 方式一:使用脚本
./start-backend.sh

# 方式二:手动指定
cd backend
WALLET_PATH=./wallet.json DB_PATH=./arweave_test.db PORT=8080 go run .

3. 启动前端

# 在新终端窗口执行
./start-frontend.sh

# 或手动
cd frontend
npm run dev

前端访问地址:http://localhost:5173


API 接口

方法 路径 说明
POST /api/upload 上传文本内容到 Arweave
GET /api/status/:id 查询本地记录状态(含链上确认)
GET /api/arweave/:txid 直接从 Arweave 网关获取数据
GET /api/records 列出所有本地上传记录
GET /health 服务健康检查

上传请求示例

POST /api/upload
{
  "content": "Hello, Arweave!",
  "tags": {
    "My-Tag": "my-value"
  }
}

上传响应示例

{
  "id": 1,
  "tx_id": "",
  "status": "pending",
  "arweave_url": "",
  "message": "Upload submitted. Use the record ID to poll status."
}

前端功能说明

1. 上传数据

  • 输入文本内容,点击 上传到 Arweave
  • 后端异步提交交易并返回本地记录 ID
  • 前端每 5 秒自动轮询状态,直到 confirmedfailed

2. 查询数据

  • 通过 Arweave TxID:直接从 Arweave 网关拉取链上数据
  • 通过本地记录 ID:查询 SQLite 中存储的记录及状态

3. 历史记录

  • 展示所有上传记录,包含状态徽章和 Arweave 链接

配置环境变量

变量 默认值 说明
WALLET_PATH ./wallet.json Arweave JWK 钱包路径
DB_PATH ./arweave_test.db SQLite 数据库文件路径
PORT 8080 后端监听端口

技术栈

技术
前端框架 React 18 + TypeScript + Vite
HTTP 客户端 Axios
后端框架 Go + Gin
Arweave SDK goar
本地持久化 SQLite (go-sqlite3)
跨域处理 gin-contrib/cors

交易确认时间

Arweave 交易通常需要 10-30 分钟才能获得链上确认。上传后状态流转:

pending(提交)pending(待挖矿)confirmed(已确认)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors