SuperAPI AI 工具集

walrus-ts-sdk

编程与开发

查看项目

更新于 10-16 01:33

技能介绍

用途:@mysten/walrus 是 Walrus 官方 TypeScript SDK,适合需要直接与 Walrus 交互,或由用户自付存储费用的应用。若无中继,写一个 blob 约需 2200 次请求、读约 335 次,因此文档建议多数应用改用 publisher/aggregator。

安装与初始化:npm install --save @mysten/walrus @mysten/sui;使用 new SuiGrpcClient({ network, baseUrl }).$extend(walrus()),通过 client.walrus 访问。弃用 JSON-RPC 的 SuiClient。SDK 内置各网络的 package 与 object ID,自定义部署可传 packageConfig。

主要能力:两级 API——WalrusFile API(getFiles、writeFiles)处理普通 blob 与 quilt,是推荐入口;raw API(readBlob、writeBlob)处理单个 Uint8Array。writeFilesFlow / writeBlobFlow 将写入拆为 encode、register、upload、certify,适用于浏览器钱包逐次签名与崩溃可恢复上传。读取需 blobId;blobObject.id(0x 开头)用于生命周期操作与可用性校验。

使用方式:写入必须传 epochs、deletable 与 signer;签名者需有 SUI 付 gas 与 WAL 付存储及写入费。浏览器应用应设置 uploadRelay.host 与 sendTip.max(主网 https://upload-relay.mainnet.walrus.space,测试网 https://upload-relay.testnet.walrus.space),中继在 <host>/v1/tip-config 公布小费。写入结果不代表持久可用,需用 getBlobObject 检查 certified_epoch 非空、storage.end_epoch 未过且不可删除。Vite 与 Next.js 打包需配置 wasmUrl 或 serverExternalPackages。

限制:所有 blob 公开,敏感数据须客户端加密;不存在 storeBlob 方法;writeBlob 只接受 Uint8Array;遇到 RetryableWalrusClientError 需先 client.walrus.reset() 再重试;Bun 下 abort 信号行为有差异;非 TypeScript 语言需使用社区 SDK 经 HTTP 访问。具体架构细节与版本支持暂未提供。