用途:面向自建钱包或自管账户、查看密钥、笔记发现与证明的后端团队,提供 Starknet 隐私池的底层 SDK。若只是在已有钱包上构建 dapp,应改用 strk20-wallet-api。
安装:npm install @starkware-libs/starknet-privacy-sdk,需 Node.js >= 24。若 npm 返回 404,可从 GitHub Packages 安装并配置 @starkware-libs 注册表,或固定提交:npm install "starkware-libs/starknet-privacy#<commit-sha>"。不要在 .npmrc 中写入 token。
接线:使用 starknet 的 Account、RpcProvider、constants,并调用 createPrivateTransfers 传入 account、viewingKeyProvider(必须返回 bigint,十六进制字符串会静默派生错误通道密钥)、provingProvider、discoveryProvider、poolContractAddress。查看密钥范围 [1, MAX_VIEWING_KEY],密钥与机密保存在环境变量中。
提交规则:选取 provingBlockId = 当前区块 - 10,以缓冲 L2 重组;账本读取的透明状态(查看密钥、代币余额、授权、空值集)必须已存在于该基准块。每次 waitForTransaction 后需重新获取。没有 proofFacts 时不要传空数组,否则 v3 交易序列化无效。v3 交易必须带 tip。
操作:register() 每个账户每池一次;deposit 需两笔交易(先 approve);transfer 需 surplusTo 处理盈余,变更笔记成熟 10 块;withdraw 收款地址公开,代币与金额公开但资金来源隐藏;多操作多代币可在一个交易内链式组合,但受证明大小限制。
发现与限制:discoverNotes 为查询,AddressMap 需以 BigInt 为键。注册表为会话内优化,应按会话重建。生产环境建议启用 OHTTP、固定 publicKeyConfig、使用 HTTPS。存款需 FPI 筛查签名。文中许多行为标记为发布候选或可能变动,使用前应核实最新版本文档。