@cowprotocol/sdk-app-data

中文文档
6.1.1发布于 2026/11/04MITTypeScriptESM + CJS构建来源已验证近 30 天下载 10.3万

CoW 协议 AppData 计划定义

中文使用文档
文档目录8 节
  1. 测试覆盖率
  2. 安装
  3. 使用量
  4. 通过牛 SDK 使用
  5. 示马斯
  6. 类型定义
  7. 常数
  8. 用户

牛 AppData SDK 软件

测试覆盖率

发言分支职能行数
StatementsBranchesFunctionsLines

AppData 计划定义

这些计划被用于编码于 appData 字段用于牛协议命令.

详情请检查 文档。 。 。 .

安装

pnpm add @cowprotocol/sdk-app-data

使用量

import { AppDataSdk } from '@cowprotocol/sdk-app-data'
import { EthersV6Adapter } from '@cowprotocol/sdk-ethers-v6-adapter'
import { JsonRpcProvider, Wallet } from 'ethers'

// Proper adapter initialization
const provider = new JsonRpcProvider('YOUR_RPC_URL')
const wallet = new Wallet('YOUR_PRIVATE_KEY', provider)
const adapter = new EthersV6Adapter({ provider, signer: wallet })

export const appDataSdk = new AppDataSdk(adapter)

const appCode = 'YOUR_APP_CODE'
const environment = 'prod'
const referrer = { address: `REFERRER_ADDRESS` }

const quote = { slippageBips: 1 } // Slippage percent, it's 0 to 100
const orderClass = { orderClass: 'market' } // "market" | "limit" | "liquidity"

const appDataDoc = await appDataSdk.generateAppDataDoc({
  appCode,
  environment,
  metadata: {
    referrer,
    quote,
    orderClass,
  },
})

// Get appData info
const { appDataContent, appDataHex, cid } = await appDataSdk.getAppDataInfo(appDataDoc)

// The app-data hex string (app-data part of the order struct)
console.log(appDataHex)

// Full appData content. It will be the exact string that if hashed using keccak-256 you would get the
// returned appDataHex (app-data hex part of the order struct).
console.log(appDataContent)

// IPFS's content identifier. Normally you don't need to use this.
// The app-data content can be uploaded to IPFS. If its uploaded, this CID will be the content identifier.
// This is a way to be able to connect the appDataHex (app-data hex part of the order struct) to its
// content using a decentralized system.
console.log(cid)

通过牛 SDK 使用

您也可以导入 AppDataSdk 直接从主 SDK :

import { AppDataSdk } from '@cowprotocol/cow-sdk'
import { EthersV6Adapter } from '@cowprotocol/sdk-ethers-v6-adapter'
import { JsonRpcProvider, Wallet } from 'ethers'

// Proper adapter initialization
const provider = new JsonRpcProvider('YOUR_RPC_URL')
const wallet = new Wallet('YOUR_PRIVATE_KEY', provider)
const adapter = new EthersV6Adapter({ provider, signer: wallet })

export const appDataSdk = new AppDataSdk(adapter)
// ... rest of the usage remains the same

示马斯

Schemas作为json文件被曝光,其中版本是文件名:

// Getting the version v0.4.0
// If you use TypeScript, enable `resolveJsonModule` in tsconfig.
const schema = require('@cowprotocol/sdk-app-data/schemas/v0.4.0.json')

// Now you can for example run validation against a schema

类型定义

还有类型定义

import { v0_4_0 } from '@cowprotocol/sdk-app-data'

// Note: this example is
function createAppDataV0_4_0(appCode: v0_4_0.AppCode, metadata: v0_4_0.Metadata): v0_4_0.AppDataRootSchema {
  return {
    version: '0.4.0',
    appCode,
    metadata,
  }
}

常数

最新版本名称作为常数曝光

import {
  LATEST_APP_DATA_VERSION,
  LATEST_QUOTE_METADATA_VERSION,
  LATEST_REFERRER_METADATA_VERSION,
} from '@cowprotocol/sdk-app-data'

用户

获取应用数据计划

要逐个版本得到一个计划定义

import { getAppDataSchema } from '@cowprotocol/sdk-app-data'

const schema = getAppDataSchema('0.1.0')

如果版本不存在,它会扔出去的

验证appDataDoc

要验证文档,请交给 validateAppDataDoc。 。 。 . 它会返回一个有布尔指示的物体 success 财务报告和审定财务报表 errors如果有的话. 对照的版本将取自博士本身.

import { validateAppDataDoc } from '@cowprotocol/sdk-app-data'

let doc = { version: '0.4.0', metadata: {} }

let result = await validateAppDataDoc(doc)
console.log(result) // { success: true }

doc = { version: '0.0.0', metadata: {} }

result = await validateAppDataDoc(doc)
// Contrary to `getAppDataSchema`, invalid or non-existing schemas won't throw
console.log(result) // { success: false, errors: 'AppData version 0.0.0 doesn\'t exist'}

贡献

叉出还款,这样你就可以创建出一个新的PR. 然后说:

  1. 使用 铸造 公约
  • 只要复制最新版本即:. src/schemas/<old-version>.json 改为 src/schemas/<new-version>.json
  1. 如果您正在添加新的元数据
  1. 如果您正在修改已有的元数据
  • 使用 铸造 公约
  • 您需要为元数据计划创建新文件 : <meta-data-name>/<new-version>.json
  • 更新到您刚创建的主要计划 步骤1: 设置到 "<meta-data-name>": { "$ref": "<meta-data-name>/<new-version>.json#" }
  1. 生成打字符类型
  • 运行 pnpm build它自动检测每个 src/schemas/v*.json 文件并重生类型,最新的版本是自动生成的(最高级的semver),所以没有常数可以手动更新.
  1. 以新的或修改过的元数据为重点的测试 :
  1. 创建 PR 并将其与修改动机一起记录

说明: 上面的例子说明在适配器系统被引入之前遗留的应用数据存储器. 对于新的实施,如上文使用实例所示,请使用具有适当适配器初始化的当前存储器.

版本与发布记录

@cowprotocol/sdk-app-data 共发布 74 个版本,首次发布于 2025/08/02;过去 12 个月发布了 54 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
6.1.1latest2026/11/046 天前
6.1.02026/11/046 天前
6.0.132026/11/037 天前
6.0.122026/10/2615 天前
6.0.112026/10/1328 天前
6.0.102026/10/091 个月前

其他发布通道:next → 4.1.0-beta.0。

关于 @cowprotocol/sdk-app-data 的常见问题

@cowprotocol/sdk-app-data 是什么?

CoW 协议 AppData 计划定义

如何安装 @cowprotocol/sdk-app-data?

在项目目录运行 npm install @cowprotocol/sdk-app-data,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:ajv(^8.x)、multiformats(^9.x)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cowprotocol/sdk-app-data 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cowprotocol/sdk-app-data 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@cowprotocol/sdk-app-data 可以商用吗?

@cowprotocol/sdk-app-data 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cowprotocol/sdk-app-data 的下载量有多少?

根据 npm 官方下载统计,@cowprotocol/sdk-app-data 在 2026/10/11 – 2026/11/09 这 30 天内被下载 102,915 次,日均约 3,431 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cowprotocol/sdk-app-data 还在维护吗?

最新版本 6.1.1 发布于 2026/11/04(6 天前);至今共发布 74 个版本,其中过去 12 个月发布了 54 个;首次发布于 2025/08/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。