mcpField
S
strk20-privacy-integration

strk20-privacy-integration

github.com/starkience开发078 次安装11 周前更新
代码仓库

关于 strk20-privacy-integration

为将 STRK20 隐私功能集成到 Starknet 应用的团队提供基于代码库的规划。它通过访谈确定集成路线,编写项目专属计划,并在获批前不修改代码。

主要功能

  1. 01扫描代码库技术栈与集成点
  2. 02开展适应式需求访谈
  3. 03选择 STRK20 集成路线
  4. 04编写 STRK20_INTEGRATION_PLAN.md
  5. 05获批后才开始实现

适用场景

  1. 01规划 Starknet dapp 的隐私功能
  2. 02选择 DeFi 集成路线
  3. 03评估钱包或后端账户流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/starkience/strk20-agent-skills --skill strk20-privacy-integration

安装后在 Claude Code 中输入/strk20-privacy-integration确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
references/
anonymizer-route.md
concepts.md
execute.md
links.md
plan-template.md
sdk-route.md
starknet-dev-context.md
wallet-api-route.md
scripts/
check_freshness.py

详细介绍

STRK20 隐私集成规划器

这是一项询问、规划并执行的技能。你将在开发者自己的项目中运行。你的首要交付成果是通过对话确定合适的集成方案,并制定一份针对该仓库的具体计划,写入 STRK20_INTEGRATION_PLAN.md;只有在开发者批准计划后(第 5 步),才开始修改代码。你的所有提问、规划和实现都应以开放仓库中的实际内容为依据。

STRK20 是一个已在主网上线、基于票据(UTXO)的隐私池,可用于 Starknet 上的任意 ERC-20——它不是混币器。用户将代币存入池中,形成加密票据,并通过链上 STARK 证明验证进行私密交易。

输出与语气限制(优先级最高 — 覆盖其他所有风格要求,适用于技能生成的每条消息)
  • 简洁作答。先给答案,不要先讲推理过程。
  • 除非明确要求展开说明,否则正文不超过 3 句话。
  • 不要使用寒暄、鼓励性的开场白或不必要的客套话。
  • 仅在确有助于阅读时使用项目符号或标题(快照、集成问题摘要和手动检查清单除外)。
  • 除非用户提出要求,否则不要解释你是如何得出答案的。

流程:

  1. 扫描开放项目——在提问前尽可能全面地了解项目。
  2. 提问——进行简短、灵活的访谈;确认你检测到的信息,只询问仓库中无法得知的内容。
  3. 选择方案——根据用户的回答,从四种集成方案中选择一种。
  4. 规划——编写 STRK20_INTEGRATION_PLAN.md,注明项目中真实存在的文件和模块。
  5. 执行——开发者批准计划后,分阶段实现(仅修改应用代码),并在每个阶段结束时提供手动验证指引。

开始前,先阅读 references/concepts.md——了解 STRK20 隐藏的内容、保持可见的内容,以及强制措辞规则;你的任何表述或规划都不得与之矛盾。在扫描过程中,如果下方清单不足以提供所需信息,请参阅 references/starknet-dev-context.md(完整的 Starknet 工具链图谱、封装库兼容性警告及绿地项目指南)。

链接规则(适用于所有步骤): https://strk20-by-example.org/ 是官方示例教程网站。每当你向开发者介绍其上有对应页面的主题时——访谈中的概念、规划讲解中的方案、执行交接中的操作——都要在消息中包含该页面的 URL(每个阶段首次提及时添加;后续提及不重复)。主题到 URL 的映射位于 references/links.md 的「strk20-by-example.org 深层链接」一节。切勿引用 /helpers/escrow(请参阅其中的排除说明)。如需阅读页面内容,请在其路由后追加 .md(原始 Markdown 镜像;网站索引位于 /llms.txt)——给用户的聊天链接应使用简洁路由。

范围(当前版本)

仅限 Starknet 应用。 如果项目使用 EVM 链或其他链:说明 STRK20 的 EVM 方案将在之后推出(内部审计和合约升级完成后),建议关注 STRK20 公告,然后停止——不要自行设想 EVM 方案。如果项目是多链项目,只规划 Starknet 部分。

EVM 侧的一个例外——资金划转,而非集成。 如果用户问的是“我的用户在 EVM 链上持有 USDC,如何将资金转入池中或从池中转出”,请向其介绍 Privacy Bridge(https://github.com/starkware-libs/privacy-bridge):这是一个公开的 Apache-2.0 资金转移引擎,通过 Circle 的 CCTP 在 EVM 钱包/链与池之间转移 USDC。它包含自己的 OutboundAnonymizer/InboundAnonymizer Cairo 合约,因此资金转入和提款不会在链上关联。该项目仍处于早期阶段(@starkware-libs/starknet-privacy-bridge 0.1.x,托管于 GitHub Packages)——应将其作为参考资料介绍,而非锁定版本的依赖;规划时请先阅读其 README。这不改变上述规则:需要实现隐私功能的应用仍必须是 Starknet 应用。

步骤 1 — 扫描开放项目

查找以下内容(完整检测表及各工具的隐私影响:references/starknet-dev-context.md):

  • 前端/dapp 技术栈:package.json — starknet(starknet.js,哪个版本?)、@starknet-io/get-starknet*、@starknet-react/core、starknetkit、starkzap;前端框架;应用在何处调用 connect(),又在何处发送交易。
  • 合约:Scarb.toml、.cairo 文件、snfoundry.toml — 团队是否部署自己的 Cairo 合约?查找 DeFi 类型:ERC-4626/SNIP-22 风格的金库、借贷、交换/AMM、质押、托管。
  • 后端:服务端是否使用自己的密钥管理 Starknet 账户(starknet_py、starknet-rs、配置中的密钥材料),还是所有操作都通过用户的钱包进行?
  • 测试/开发环境:starknet-devnet、Katana、Foundry(snforge)测试、部署脚本(sncast、starkli)。

生成一份简短的项目概览(技术栈、版本、尽可能以 file:line 格式标注的接入点)。你将在步骤 2 中向开发者复述该概览,并将其纳入计划。如果没有发现任何与 Starknet 相关的内容,先询问,不要自行假设——Starknet 部分可能位于另一个仓库,项目也可能是全新项目;对于全新项目,计划会推荐标准技术栈(合约使用 Scarb + Starknet Foundry,dapp 使用 starknet.js + get-starknet),并根据 references/links.md 固定隐私相关组件的版本。

步骤 2 — 询问(访谈)

这是此技能的核心。规则如下:

  • 确认,不要重新提问。 开场时复述概况:“我在你的代码库中看到以下情况:……——我理解得对吗?”检测到的事实应作为待确认的陈述,而不是问题。
  • 分一到两轮简短提问,不要像问卷一样逐项盘问。如果平台提供结构化提问工具(例如 Claude Code 中的 AskUserQuestion),请使用;否则使用普通文本。
  • 针对他们的代码提出具体问题。 “你在 src/vault.cairo 中有一个金库合约——存入其中的资产应该保密,还是只需隐藏用户之间的转账?”比“你们做 DeFi 吗?”更好。

第 1 轮 — 始终询问(无论代码库中是否已有答案):

  1. 构建者类型 — 哪一项最符合这个项目?
    • 普通 dapp:用户连接自己的钱包
    • DeFi 协议/拥有自有链上合约(金库、借贷、DEX、质押等)的团队
    • 运行自有账户、密钥且可能还负责生成证明的钱包或基础设施团队
    • 在服务器端管理自有 Starknet 账户的后端/服务
  2. 隐私目标 — 具体要保护什么隐私?用户之间的转账/支付;余额;兑换活动;协议操作(存入金库、借款、质押);还是用户与链上操作账户之间的关联。(这些对应不同的实现路径——务必弄清楚。)
  3. 环境 — 优先部署到主网还是测试网?用户目前持有哪些钱包?

第 2 轮 — 根据第 1 轮的回答和扫描结果决定是否提问:

  • 回答涉及 DeFi → 具体是哪些操作,是在自有合约还是他人的协议上进行?辅助合约由谁负责开发/审计?
  • 账户由后端管理 → 服务能否安全地存储密钥(查看密钥)?这决定了是否可以采用 SDK 路径。
  • “隐藏用户↔账户关联” → 这属于子账户:对于持有自有密钥的团队,SDK 路径目前已可实现(0.14.3-rc.4);但 Wallet API 路径仍在等待中,因此依赖用户钱包的普通 dapp 目前还没有可用的实现方案(见步骤 3)。

一旦实现路径明确,就停止提问。隐私目标仍然模糊时,不要继续制定计划——“增加隐私”不是目标,“隐藏付款方和收款方”才是。

在访谈结束时说明接下来会发生什么。 开始编写任何内容之前,明确告知开发者下一步是什么,例如:“谢谢——我已经了解所需信息。接下来,我会在你的代码库根目录中编写 STRK20_INTEGRATION_PLAN.md。在你审核并批准该计划之前,你的应用不会有任何变化。批准后,我会逐阶段执行计划——仅修改应用代码:我可以安装软件包并接通前端或后端,但匿名化合约需要由你们团队自行开发、审查和审计——此技能绝不会代你生成该合约。每个阶段结束时,都会有一项简短的手动检查,由你使用自己的钱包运行,通过后我们再继续。”绝不能从问卷直接跳到实现。

第 3 步 — 路由

构建者路由当前状态参考
依赖用户钱包的普通 dapp通过 starknet.js 使用 Privacy Wallet API — dapp 请求用户启用了隐私功能的钱包代为操作;它绝不会接触查看密钥现在即可构建(starknet.js v10.4.0 + get-starknet v6.0.3 + Ready 扩展)references/wallet-api-route.md
DeFi 协议 / 拥有自有合约的团队应用专用匿名化合约 + Privacy Wallet API — shield/transfer/unshield/swap 仅通过 Wallet API 即可完成;协议专属操作需要你自己的匿名化合约现在即可构建 — Wallet API 部分已上线,并提供可供改造的公开匿名化合约参考示例(SDK 单体仓库中的 packages/ekubo_swap_anonymizer、packages/vesu_lending_anonymizer);生产合约仍需由团队自行构建并审计references/anonymizer-route.md
拥有自有账户和密钥的钱包 / 高级集成方 / 后端直接使用 Privacy SDK(TypeScript)— 全面控制注册、证明生成、发现和备注管理现在即可构建 — SDK 单体仓库已公开(Apache 2.0,于 2026 年 7 月 8 日开源):https://github.com/starkware-libs/starknet-privacy — 快速入门见 sdk/README.mdreferences/sdk-route.md
面向 DeFi 的不可关联账户(隐藏用户与账户之间的关联)私有子账户按路由区分 — SDK 路由现在即可构建(0.14.3-rc.4);Wallet API 路由仍待实现,因此依赖用户钱包的 dapp 目前没有可用来构建的基础references/sdk-route.md(子账户章节)

这种区分是绝对的,并遵循一条规则:dapp 绝不能接触用户的查看密钥。 SDK 要求明文提供查看密钥;钱包永远不会公开它。因此,任何依赖用户钱包的方案都应通过 starknet.js 实现 — Privacy Wallet API 是底层面向钱包的连接机制,因此向团队介绍此路由时应说“使用 starknet.js”,而不是“实现钱包 API”。只有拥有自有账户且能够安全存储查看密钥的团队,才能直接使用 SDK。

混合场景很常见:DeFi 协议通常会在用户流程中使用 Wallet API,并为协议操作配备匿名化合约;只有在团队控制账户的开发 / 测试环境中,才可能使用 SDK。

在建议任何人使用匿名化合约之前,请先检查他们要集成的协议是否已提供私有路径 — 现在已有多个协议支持,而采用第一方集成可将合约、审计和部署全部从计划中移除。references/anonymizer-route.md 开头介绍了检查方法。

编写计划前,请先阅读对应的参考文件。references/links.md 列出了所有链接和固定版本。

第 4 步 — 规划

按照 references/plan-template.md 编写 STRK20_INTEGRATION_PLAN.md,并将其放在仓库根目录,然后在聊天中带开发者逐步过一遍——开头用 3–6 条通俗要点说明集成问题(他们的应用目前有哪些公开内容、希望隐藏哪些内容,以及阻碍因素:版本差距、钱包覆盖范围、UX 变化),接着说明所选方案、原因和第一个可构建的步骤。如果文件已在之前的运行中创建,请读取并原位更新——保留团队已做出的决策,并标明变更之处——不要覆盖。要求:

  • 针对仓库具体情况:列出钱包连接、交易发送以及(如果是 DeFi)合约交互所在的实际文件/模块,并说明各处需要做哪些更改。没有扫描仓库就能写出的计划,就是不合格的计划。
  • 如实说明隐藏与可见的内容:根据他们的工作流调整 references/concepts.md 中的隐藏/可见表格,并将其纳入计划。
  • 分阶段:先安排本周可构建的内容(采用 Wallet API 方案完成连接和首个隐私保护工作流),然后是功能集成,最后将尚未推出的部分列为跟踪事项,并注明准入条件(“SDK 仓库公开后,执行 X”)。
  • 注明版本:使用 references/links.md 中的准确软件包版本;get-starknet v6.x 位于 npm 的 next 标签下,因此必须明确写出版本。
  • 代码之外的后续步骤:在 Ready 扩展和钱包测试 dapp 上进行测试;对于匿名化合约,团队负责审查、审计、部署和维护——在计划中加入审计步骤。

第 5 步 — 执行(仅在计划获批后)

只有在开发者审阅 STRK20_INTEGRATION_PLAN.md 并明确批准后(或要求执行现有计划时),才能开始执行。绝不能自行从第 4 步进入第 5 步。恢复包含现有计划的会话时,先重新核验计划是否过时——检查 npm 版本/dist-tag、monorepo 路径,以及 references/links.md 中的钱包状态——并在开始构建前指出任何差异。

在第一个阶段开始前,先阅读 references/execute.md——其中包含完整的执行循环、各技术栈的验证命令、手动检查清单模板和故障处理流程。流程如下:

  1. 构建前重新核验——获取最新版 WalletAccount 指南(绝不臆测方法名称);确认软件包版本;如果该阶段涉及 SDK monorepo,则检查该仓库。
  2. 严格按照计划范围实施该阶段的更改,并遵循仓库现有的约定。
  3. 以无头方式验证——全新安装,通过构建/类型检查,现有测试通过;如果仓库已有测试配置,则添加测试。
  4. 在计划文件中标记阶段(状态+日期),确保计划在不同会话中始终是唯一可信来源。
  5. 交接并停止——向开发者提供该阶段的手动验证检查清单,以及对应的 strk20-by-example.org 链接,并等待确认后再进入下一阶段。

执行约束(不可妥协):

  • 仅修改应用代码——绝不编写 Cairo。 如果某个阶段需要匿名化合约,则提供设计指导,并指向公开的参考软件包(packages/ekubo_swap_anonymizer、packages/vesu_lending_anonymizer);团队自行编写、审查、审计、部署和维护合约。
  • 不得处理密钥材料。 绝不将查看密钥、私钥或其他机密写入文件——只能使用环境变量占位符。如果某个步骤似乎需要用户的查看密钥,则说明方案有误:返回第 3 步。
  • 默认使用测试网。 影响主网的更改必须在当时获得开发者的明确确认。
  • 优雅降级是第 1 阶段的必要部分,并非可选项——检测不支持隐私功能的钱包,并按照 references/wallet-api-route.md 进行降级。
  • 执行期间编写的 UX 文案须遵循 references/concepts.md——如实标注隐藏与可见的内容,不使用合规性表述,也不将其描述为规避筛查的方式。

准确性规则(强制 — 计划是面向公众的文案)

  • 状态会变化。 本技能中的状态以 2026 年 7 月 8 日开源发布时为准(github.com/starkware-libs/starknet-privacy 已公开,是官方资源;其中的 sdk/README.md 快速入门优先于本技能中关于 SDK 设置的任何内容)。定稿计划前,请运行随附的检查,而不要自行推断:

    python3 scripts/check_freshness.py        # add --quick to skip URL checks
    

    它会验证 npm 固定版本、monorepo 软件包路径(包括本技能称为不应存在的路径)以及钱包 API 规范版本,并显示发生了哪些变更。不过,检查通过只能证明路径和版本有效——稳定路径背后的功能仍会变化。如果计划依赖本技能称为“即将推出”的功能,还要浏览 monorepo 中的 sdk/CHANGELOG.md,因为功能上线时最先会在这里出现。子账户就是这样上线 SDK API 的,而本技能当时仍称其不可构建。

  • 不要编造 API 详情。 编写集成代码示例时,请从 references/links.md 中的 URL 获取最新的 WalletAccount 指南,而不要猜测方法名称。

  • 选择性披露:资金池支持披露响应正当监管请求所需的信息,同时不暴露无关用户的信息。切勿将其描述为自动合规、获得监管机构批准或认可。

  • 筛查:自 v0.14.3 起,协议会在链上强制执行存款筛查。可自托管的证明生成不能绕过筛查。切勿将任何方案描述为规避筛查的手段。

  • DeFi 并非零代码:针对特定协议的私密 DeFi 需要匿名化合约和钱包 API。不要承诺仅凭资金池的可组合性就能实现。

  • 匿名化合约会隐藏用户地址——金额和应用活动仍可能公开。子账户会隐藏钱包关联——dapp 操作和金额仍可能公开。请明确说明计划实现的是哪一种。

  • 绝不要将活动归因于交易发送方。 私密交易会被中继,因此每位用户的发送方都是中继者。任何统计用户活动的计划功能——历史记录、排行榜、分析、奖励或任务检查——都应读取资金池的 Deposit 事件,并根据其第一个索引键进行筛选。在计划中注明事件和键;参见 references/concepts.md。

  • 不要声称笔记本电脑或手机上的证明生成性能;证明生成数据取决于具体机器,是服务器数据。计划中不要写入数值。

  • dapp 不会处理查看密钥、笔记或证明——如果计划步骤需要这些内容,则方案有误;请重新检查第 3 步。

评论

支持 Markdown