隐私池核心SDK
用于与隐私池协议互动的 TypeScript SDK. 这个SDK为隐私池集成提供了加密功能、校对、账户管理和合同互动.
安装
npm install @0xbow/privacy-pools-core-sdk
# or
yarn add @0xbow/privacy-pools-core-sdk
# or
pnpm add @0xbow/privacy-pools-core-sdk
设置
- 通过运行安装依赖性
pnpm install - 通过运行构建 SDK
pnpm build
可用的脚本
| 脚本 | 说明 |
|---|---|
build | 使用滚动构建 SDK |
build:bundle | 构建 SDK 并设置电路 |
check-types | 检查类型脚本类型问题 |
clean | 删除建筑文物 |
lint | 运行 ESLint 以检查代码质量 |
lint:fix | 自动解决嵌入问题 |
format | 使用 Pretier 检查代码格式 |
format:fix | 自动解决格式化问题 |
test | 使用 Vitest 运行测试 |
test:cov | 生成测试覆盖报告 |
使用量
初始化
import { PrivacyPoolSDK, Circuits } from '@0xbow/privacy-pools-core-sdk';
// In Node.js — set browser: false to load artifacts from the filesystem
const circuits = new Circuits({ browser: false });
// In the browser — the default (browser: true) uses fetch
// const circuits = new Circuits();
const sdk = new PrivacyPoolSDK(circuits);
承诺证明
const commitmentProof = await sdk.proveCommitment(value, label, nullifier, secret);
const isValid = await sdk.verifyCommitment(commitmentProof);
退出证明
const withdrawalProof = await sdk.proveWithdrawal(commitment, withdrawalInput);
const isValid = await sdk.verifyWithdrawal(withdrawalProof);
密钥衍生
SDK 从一个使用 BIP- 39 的元音短语中得出决定性主键 generateMasterKeys。这些密钥用于生成每个存款和每个撤回的无效者和秘密.
import { generateMasterKeys, generateDepositSecrets, generateWithdrawalSecrets } from '@0xbow/privacy-pools-core-sdk';
const { masterNullifier, masterSecret } = generateMasterKeys(mnemonic);
const depositSecrets = generateDepositSecrets(
{ masterNullifier, masterSecret },
scope,
index,
);
const withdrawalSecrets = generateWithdrawalSecrets(
{ masterNullifier, masterSecret },
label,
index,
);
账户回收
这个 AccountService 通过扫描存款、提取和愤怒事件,重建链上账户状态.
import { AccountService, DataService } from '@0xbow/privacy-pools-core-sdk';
const { account, legacyAccount, errors } = await AccountService.initializeWithEvents(
dataService,
{ mnemonic },
pools,
);
范围不完整
无空 errors 数组表示一个或多个池无法装入 。 已重建
这些范围的状态是 缺席, 不为空 账户可能记有:
不可见,因此,将范围视为没有账户将低估
下个存款指数,产生一个以后重建找不到的存款.
在瞄准镜前检查状态 :
account.getScopeStatus(scope); // 'complete' | 'incomplete' | 'not-loaded'
account.isScopeComplete(scope); // true only for 'complete'
account.getIncompleteScopes(); // scopes whose last load failed
不属于任何范围的区块存款和提款 complete。 。 。 .
createDepositSecrets(scope) 没有针对此范围的明确索引
而不是猜测;只在恢复流量中通过明确的指数。 状态为
所以它能活下来 并恢复它.
要重试失败的池, 请通过 两者 原电话返回的服务 :
const retry = await AccountService.initializeWithEvents(
dataService,
{ service: account, legacyService: legacyAccount },
pools,
);
选择 legacyService 重建没有迁移的重试范围
它默默地省略了移徙来源的账户.
空节点
account.getSpendableCommitments() 返回每个账户的最新解密承诺。 默认includeEmptyNodes: true)结果包括: 空( 零值) 、 迁移和愤怒 节点与可花节相并列,因此呼叫者可以看到完整的解密状态.
恢复仅能支出的行为——只归还账户没有暴躁或迁移的非零值承付款——设定 includeEmptyNodes: false数字 :
const { account } = await AccountService.initializeWithEvents(
dataService,
{ mnemonic },
pools,
{ includeEmptyNodes: false },
);
在构建一个 AccountService 直接 :
const account = new AccountService(dataService, { mnemonic, includeEmptyNodes: false });
注:何时
includeEmptyNodes实值true, (中文(简体) ),getSpendableCommitments()可能归还实际上无法用上的承诺(零价值、迁移或愤怒)。 打开过滤器value在试图花费前先挂帐号.
合同互动
const contracts = sdk.createContractInstance(rpcUrl, chain, entrypointAddress, privateKey);
机械安全
SDK会的 没有 提供 generateMnemonic 函数。 使用一个可信赖的BIP-39库(例如. @scure/bip39 或者说 viem/accounts)在外部生成元音短语.
- 从不硬码 源代码或配置文件中的mnemonics.
- 永不日志或发送 明正文中释相.
- 存储模式 使用OS级安全存储器(如OS密钥链,加密金库)——在浏览器localStorage或未加密文件中从不使用.
- 不重复使用 跨越不相干应用的单元。 失密的记忆暴露了所有衍生的钥匙和他们控制的资金.
- 记忆是 所有衍生密钥的唯一根货币损失是指永久丧失获得所有相关承诺和资金的机会.
电路艺术完整性
SDK验证 每个 下载的电路文物(wasm,vkey,zkey)与预期的SHA-256文摘相对. 未经注册散列的艺术品在载货时被拒绝.
| 艺术 | SHA-256 (英语) |
|---|---|
commitment.wasm | 254d2130607182fd6fd1aee67971526b13cfe178c88e360da96dce92663828d8 |
commitment.vkey | 7d48b4eb3dedc12fb774348287b587f0c18c3c7254cd60e9cf0f8b3636a570d8 |
commitment.zkey | 494ae92d64098fda2a5649690ddc5821fcd7449ca5fe8ef99ee7447544d7e1f3 |
withdraw.wasm | 36cda22791def3d520a55c0fc808369cd5849532a75fab65686e666ed3d55c10 |
withdraw.vkey | 666bd0983b20c1611543b04f7712e067fbe8cad69f07ada8a310837ff398d21e |
withdraw.zkey | 2a893b42174c813566e5c40c715a8b90cd49fc4ecf384e3a6024158c3d6de677 |
您可以根据承诺的文物独立核实:
shasum -a 256 packages/circuits/trusted-setup/final-keys/*.{vkey,zkey}
shasum -a 256 packages/circuits/build/*/*_js/*.wasm
特征
- 零知识证明的生成和核查(承诺和撤回)
- BIP- 39 演示产生的决定性密钥
- 账户状态从链上事件恢复
- 承诺和默克勒证明公用事业
- 合同互动助手
- 类型安全 API
捐款
欢迎捐款! 请随意提交拉力请求.
许可证
阿帕奇 - 2.0 驾照 - 看 自由主义 详细文件.