Skip to content

用例:Tacet 任务大厅——Agent 中介的品牌悬赏任务

版本:v1.0(草案) 状态:草案 权威性:参考性

场景

一个健身品牌在 Tacet 任务大厅发布了一项悬赏任务:"我们需要最多 500 名在过去 3 个月内健身类消费超过 $100 的用户分享消费明细。报酬:每位合格参与者 $15。"

Tacet 平台将此作为多 Vault query 任务提交给 Symphony Core。每个参与的 Vault 在 TEE 内为其用户评估资格。合格用户通过 Tacet 应用以 Agent 驱动的推荐形式被通知:"有一个任务匹配你的画像——点击参与。"当用户接受时,其 Vault 生成脱敏的消费明细。品牌收到最多 500 条匿名记录的聚合数据集,并向每位参与用户的 Tacet 账户结算报酬。

本用例为参考性文档,展示了 SCPSCS 规范如何支持一个双边数据市场工作流,其中 AI Agent 在品牌的数据任务与单个用户的授权数据访问之间进行中介——无需将 Vault 原始内容暴露给品牌、Tacet 或任何其他方。

本文使用的规范术语遵循 SCP 协议概览SCP 核心规范

为什么这个用例很重要

本场景之所以有价值,是因为它展示了对现有优惠券活动和模型训练用例的若干重要扩展:

  1. 任务提交者是 Tacet(应用平台),代表品牌广告商行事,引入了之前用例中未出现的平台中介角色
  2. 任务针对的是自愿参与的个人用户,而非静默选择他们作为受众——用户接受是协议要求的步骤,此后其 Vault 数据才会被纳入
  3. AI Agent 在用户甚至看到任务之前,在每个用户的 Vault 内执行自动化资格预筛,将用户的认知负担降低到单次接受/拒绝点击
  4. Agent 的预筛结果本身不得构成数据披露——确定用户是否合格的行为必须在 Vault 边界内发生,而非由 Agent 读取明文记录
  5. 结算模型将报酬直接分配给个人用户,而非作为批量数据卖家的企业节点,这要求每参与者的报酬核算精确到单个数据主体层级
  6. 品牌收到的是固定模式、脱敏的输出而非原始数据转储,且交付格式在任务准入时即已确定,品牌的访问范围不能在交付时扩大

因此,它验证了协议可以将用户授权的、Agent 辅助的数据市场任务作为现有 SCP 生命周期内的完整端到端流程来支持。

入口区分

本场景包含三个不同层面:

  1. 品牌侧通过 Tacet 任务大厅 UI 表达的活动意图
  2. Tacet 平台将品牌意图转化为协议授权任务的操作
  3. 每用户的 Agent 操作,评估资格并向合格用户展示任务

品牌"寻找 500 名健身消费者"的意愿本身还不是协议事件。只有当 Tacet 作为注册的任务提交者,提交一个带有明确定向属性、授权要求、输出模式和费用托管的结构化 query 任务时,它才进入 SCP 生命周期。

与瑞幸优惠券活动用例不同,本用例涉及:

  1. 自愿参与模型:每个数据主体必须在其 Vault 贡献数据之前明确接受任务——任务不会代表品牌静默选择用户来评估记录
  2. AI Agent 作为每用户资格预筛器在 Vault 边界内运行,然后才向用户展示任务——Agent 的推荐基于私密匹配评估,而非明文记录导出
  3. 两阶段执行模型:(a) 每 Vault 资格检查产生每用户的是/否结果,然后 (b) 仅对已接受的用户触发每用户数据贡献
  4. 个人级别结算:每个参与的数据主体收到以其 data_subject_id 记录的报酬,而非批量 Vault 运营商支付
  5. 硬性受众上限(max_participants: 500)在聚合步骤强制执行,合格接受者按先到先得顺序处理

协议视角

从协议角度看,本场景将品牌的数据获取意图转化为可验证的、授权强制的、个人结算的数据贡献结果。

1. 品牌任务定义与 Tacet 平台验证

品牌通过 Tacet 企业门户提交任务定义:

  1. 定向条件:健身相关交易类别消费 ≥ $100,时间窗口:过去 90 天
  2. 要求输出字段:健身总消费(按 $50 区间分桶)、前 3 商户类别、交易频率
  3. 受众上限:最多 500 名参与者
  4. 每位参与者报酬:$15 美元,通过 Tacet 的 PayPal/ACH 结算通道支付
  5. 数据使用声明:市场规模分析,仅内部使用,不转售

Tacet 平台侧验证(在协议提交之前)检查:

  1. 品牌拥有活跃的 Tacet 企业账户,已通过身份验证且预充值预算($7,500 覆盖 500 × $15)
  2. 要求的输出字段不包含直接标识符(姓名、地址、设备 ID)
  3. 数据使用声明未描述 Tacet 任务内容政策下的禁止用途
  4. 定向条件可使用语义注册表中注册的规范属性表达

只有在 Tacet 平台验证通过后,任务才进入 SCP 生命周期。

2. 任务准入

Tacet 作为注册的任务提交者,向主集群的 API 网关提交 QueryTaskRequest

身份与授权

  1. 网关验证 Tacet 的任务提交者凭证
  2. 身份和认证服务确认 Tacet 注册为平台级任务提交者,有权代表第三方品牌提交任务

授权范围声明

任务声明 consent_scope: task_participation_marketing,意味着任务只能包含已授予营销使用范围任务参与授权的用户。授权不是假定的;它在执行时按数据主体强制执行。

语义解析

语义注册服务将定向条件和输出模式解析为规范属性:

  1. transaction_category(直接可查询,commerce 领域)——过滤为健身子类别
  2. transaction_amount(直接可查询)——在 90 天窗口内聚合
  3. merchant_category_rank(通过 transaction_category 的聚合规则派生)——前 3 排名
  4. transaction_frequency(通过计数规则派生)——标准化为月率
  5. spend_bucket(通过分桶规则派生)——将总消费映射到 $50 宽度的区间,替换原始总额

spend_bucket 的分桶派生规则至关重要:它确保品牌收到的是分桶值($100-149$150-199 等),而非精确消费数字。品牌在提交时声明 spend_bucket 为要求的输出字段;语义注册表确认派生路径并在 TaskEnvelope 中注册。

隐私预算预检查

由于准入时不知道合格用户的确切集合,隐私预算预留服务在参与的 Vault 间执行基于采样的预检查,以确认预期参与人群有足够的预算余量。正式的每用户预留不在准入时进行,而是在每个用户接受任务的时刻进行。

费用托管

品牌的任务费用在准入时锁定在 Aptos 上的托管合约中。托管金额涵盖:

  1. 每参与者数据贡献报酬(最多 500 × $15)
  2. Vault 运营商存储和执行份额
  3. 执行器 TEE 计算份额
  4. 聚合器和验证器份额
  5. 协议国库份额

TaskEnvelope 组装

TaskEnvelope 携带以上全部内容,另加:

  1. participation_mode: voluntary——向企业节点发出信号,没有明确的用户接受就不贡献数据
  2. max_participants: 500——在聚合步骤强制执行
  3. output_schema:品牌结果集的精确字段和派生规则
  4. task_expiry:任务在 14 天后或达到 500 名参与者时关闭,以先到者为准

3. Agent 侧资格预筛

任务准入且 TaskEnvelope 分派到企业节点后,每个企业节点的计算运行时为其每个拥有 task_participation_marketing 活跃授权的用户运行预筛步骤。

预筛在企业节点的 TEE enclave 内运行:

  1. enclave 从 Vault 记录存储中加载每个候选用户的相关交易
  2. 评估定向条件:该用户在过去 90 天内的健身类别消费是否 ≥ $100?
  3. 对于达到阈值的用户,生成资格标志——一个布尔值加上 spend_bucket
  4. 资格结果与用户的 data_subject_id 和任务特定随机数一起密封

资格结果不返回给主集群或品牌。它保留在企业节点内,仅通过加密通知推送到用户委托凭证中注册的设备端点,专属展示给用户的 Tacet Agent。

Tacet Agent 收到:"有一个品牌任务可用。你似乎符合条件。预期报酬:$15。点击查看。"

用户在 Tacet 应用中看到任务卡片。Agent 的预筛结果不包含用户的实际消费总额——它只显示分桶范围和是否合格。品牌不会得知该用户被预筛过或选择了拒绝。

4. 每用户参与授权与隐私预算预留

当用户在 Tacet 应用中点击"接受"时:

  1. Tacet 应用向主集群发送接受信号,携带用户的 data_subject_idtask_id 和新的参与授权签名
  2. 授权验证服务向用户企业节点的授权管理器发送 RPC,确认 task_participation_marketing 授权活跃且用户的明确接受已收到
  3. 隐私预算预留服务向用户的隐私预算账本发送预留 RPC,用于该任务的特定隐私预算消耗(分桶输出字段消耗的预算少于原始消费查询)
  4. 主集群在任务状态存储中记录用户的参与承诺,并递减剩余受众上限计数器

如果在用户的接受被处理之前受众上限达到 500,主集群返回"任务已满"响应,不进行预留。

5. 每用户执行与切片生产

对于每个已接受的用户,企业节点的计算运行时执行任务切片:

  1. enclave 从 Vault 记录存储中检索用户的健身交易
  2. 应用 TaskEnvelope 中的派生规则:计算总消费、派生 spend_bucket、排名前 3 商户类别、计算频率
  3. 生成包含分桶和派生输出字段的 SliceResultBundle,不含原始交易记录
  4. 将隐私预算消耗记录附加到切片证据中
  5. 为该执行切片生成 AttestationReport
  6. 没有明文交易记录离开 enclave

每个用户的 SliceResultBundle 返回给主集群上的多 Vault 协调器。

6. 安全聚合与受众上限强制

主集群上的聚合运行时(在其经过认证的 TEE 内运行)接收到达的每用户切片结果:

  1. 按接受时间戳先到先得的顺序累积切片,最多 max_participants: 500 上限
  2. 收集到 500 个切片(或任务过期)后运行聚合:500 条个人记录组装成品牌的输出数据集
  3. 聚合运行时执行最终基数检查:如果参与人数少于协议定义的最小结果基数,结果被抑制,任务标记为未完成
  4. 聚合结果携带聚合 enclave 的 AttestationReport,证明组装的字段不超过声明的输出字段
  5. 聚合运行时在生成聚合结果后不保留单个切片输入

7. 验证与结算

结果验证

结果验证服务验证:

  1. 每个每用户 AttestationReport——enclave 测量值、平台、新鲜度随机数
  2. 聚合 AttestationReport
  3. 输出模式与 TaskEnvelope 声明完全匹配
  4. 受众上限未被超过

结算

验证通过后:

  1. 结算平面最终确定结算上下文,链接所有 500 个每用户执行切片和聚合步骤
  2. 支付服务将最终化的报酬记录转换为 Aptos 的 PayoutInstructionSet
  3. 奖励合约从托管中分配 SYM:数据贡献者份额(按参与用户)、Vault 运营商份额、执行器份额、聚合器份额、验证器份额、协议国库份额
  4. 品牌的 Tacet 账户被扣款;每位参与用户的 Tacet 收益余额通过 PayPal/ACH 结算通道入账 $15 美元(独立于 SYM 分配)
  5. 如果任务过期前参与用户少于 500 名,托管合约释放剩余资金

品牌结果投递

品牌通过 Tacet 企业门户收到聚合数据集:

  1. 最多 500 行,每行包含:spend_bucket、前 3 商户类别、交易频率——无标识符,无原始金额
  2. 一个 SettlementRoot 引用,可在 Aptos 上验证结果来源
  3. 数据血统摘要:多少 Vault 贡献了数据、哪个语义版本和策略版本管辖了本次运行、使用的聚合方法和 enclave 测量值

8. 用户侧审计追踪

每位参与用户可以在 Tacet "数据访问日志"中查看:

  1. 在该日期,一个品牌任务使用了其健身消费数据
  2. 从其记录中精确派生了哪些输出字段(消费区间、商户类别、频率)
  3. 消耗了多少隐私预算
  4. 收到了 $15 报酬,关联到任务 ID

用户可随时撤销其 task_participation_marketing 授权。撤销不影响已完成的任务,但阻止未来的任务参与。


协议扩展点

本场景要求对现有 SCP/SCS 规范进行一项扩展和一项澄清:

平台级任务提交者角色

当前参与者模型覆盖企业节点和数据生产者。像 Tacet 这样的平台级任务提交者——一个在品牌和用户之间进行中介的应用,代表品牌提交任务同时管理用户委托凭证——是任务提交者中的新子角色。参与者注册表应区分平台级任务提交者与直接企业或个人任务提交者,因为它们有额外的职责:预验证品牌任务内容、持有用户委托凭证、对品牌遵守数据使用声明负责。

participation_mode: voluntary 作为一等任务属性

现有的 TaskEnvelope 不包含 participation_mode 字段。所有当前用例都假定任务被动选择用户(企业节点评估记录并返回结果,执行时不需要每用户授权,依赖于预授予的授权)。自愿参与模型需要一个新的协议认可流程,其中每数据主体的执行在该用户的明确接受被记录在任务生命周期之前不会开始。这是任务状态机中 dispatchedexecuting 状态之间的一个独立协议事件。