可验证算力协作层

该层构建于通信加密层与身份认证层之上,确保每一份算力都具备可追溯性与经济激励归属。

DF Protocol 的可验证算力协作层是将加密通信与经济激励连接起来的技术中枢。该层负责接收来自各节点的算力贡献数据,并通过一套基于密码学与链上合约的机制,对算力的真实性、时效性与归属进行验证,从而实现“算力即资产”的可信确权。

该层由以下关键模块组成:

安全算力验证模块(PoSW: Proof of Secure Work)

PoSW(安全算力证明)是 DF Protocol 的核心共识逻辑之一,负责判断每一份算力上报是否为节点真实完成的计算任务。相比传统的 PoW(工作量证明)或 PoS(权益证明)模型,PoSW 更侧重“计算行为的真实性”而非计算难度或资产抵押,通过签名、随机抽验与链上确权相结合的方式,实现算力产出的可验证、安全化与抗造假。

1)设计目标

  • 确保每份算力上报数据为节点独立计算的结果,不可仿造、拷贝或批量篡改;

  • 避免无算力真实贡献的节点获取收益,防止“假矿机”与“无效节点”耗尽激励;

  • 提供可拓展、多任务结构兼容的标准化算力验证路径。

2)核心验证流程

Step 1:身份合法性验证 系统从数据包中提取 node_id(DH-ID),查询链上注册表,确认该节点具备活跃身份。

Step 2:签名校验 读取签名字段,使用链上登记的公钥对任务摘要与时间戳进行签名验证,确保数据未被篡改且归属于该节点。

Step 3:时效性校验 验证上报时间戳与当前区块时间差是否在设定的 T 秒时效窗口内,防止重放攻击与滞后数据重复计分。

Step 4:任务内容一致性审查 若任务类型为结构化计算(如哈希、推理、模型验证),系统会对任务摘要字段执行二次重算(或基于 ZK 快速一致性验证),确保结果真实性。

Step 5:随机抽验机制(Sampling Challenge) 引入基于 VRF(Verifiable Random Function)或链上熵源生成的抽验逻辑,对部分节点上报任务执行二次验证。

  • 若验证通过,记为有效算力;

  • 若抽验失败,则当轮所有任务作废,计入信誉惩罚。

3)数据结构验证模型

每笔算力上报最终将生成以下结构(映射入链):

struct SecureWork {
  bytes32 nodeId;
  bytes32 taskHash;
  uint64 timestamp;
  uint32 computeUnits;
  bool verified;
}

该结构通过事件 ComputeProofSubmitted 写入链上,构成可信算力账本。

4)多维防护能力

风险类型
PoSW 防护策略

身份伪造

依赖链上注册 DH-ID + 签名校验,身份不可伪造

签名攻击

所有数据包签名必须与注册密钥对匹配,确保一致性

数据伪造

使用任务摘要重计算与时间戳窗口机制拒绝假数据

抽验逃避

抽验概率不公开、节点不可预测;违例自动降低信誉

同步攻击

所有提交含 nonce 与链上随机值避免重复记账

任务数据封装模块(Compute Payload Composer)

任务数据封装模块是 DF 节点本地运行的轻量级构建器,专用于构造标准化算力上报数据包。该模块承担链下计算结果向链上可信数据格式转换的桥梁角色,确保所有传输数据具备统一结构、加密处理与可验证性,是 DF 架构中通信安全与算力验证的起点。

1)设计目标

  • 将节点完成的计算任务数据封装为结构化、可签名、可加密的数据报文;

  • 为算力验证、加密通信与上链确权提供基础数据单元;

  • 抵御数据重放、伪造、修改与归属不清等攻击风险。

2)数据包结构

任务数据包由以下字段组成:

字段名
类型
描述

compute_hash

bytes32

节点对任务输入+输出内容的哈希摘要(如 `SHA256(task_input

timestamp

uint64

本次任务完成时间戳(Unix 格式),用于时效性校验

node_id

bytes32

节点的 DH-ID(即 SHA256(pubkey_ECDH)

sig_node

bytes

节点私钥对 compute_hash + timestamp 的签名

payload_meta

bytes

附加信息(如算力类别、输入规模等),可用于算力加权与向量分类

nonce

bytes12

AES-GCM 的随机 IV,用于加密内容防重放

cipher_data

bytes

通过共享密钥加密后的完整数据体

3)封装流程

Step 1:计算任务摘要 节点完成计算后,对输入与输出执行摘要生成:

compute_hash = SHA256(task_input || result)

Step 2:附加元信息构建 如任务类型、参与周期编号、算力规模等放入 metadata:

{
  "task_type": "static_compute",
  "cu_size": 100,
  "version": "v1.0"
}

Step 3:签名构建 使用节点控制的钱包或 DH 私钥对 (compute_hash || timestamp) 签名:

sig_node = Sign(sk_wallet, H(compute_hash || timestamp))

Step 4:加密打包 使用从通信层派生出的共享密钥 K_ABmetadata + compute_hash + sig_node 执行 AES-256-GCM 加密:

cipher_data = AES_GCM_Encrypt(K_AB, plaintext, nonce, aad=node_id)

最终生成完整结构化数据包,作为算力验证模块的输入。

4)防攻击设计

攻击类型
防御机制

重放攻击

强制 timestamp 不得落后于上链窗口/轮次

假数据注入

所有字段加密、签名校验,必须匹配 DH-ID 所属私钥

内容篡改

AES-GCM 自带认证标签(auth_tag)确保报文完整性

跨节点伪冒

节点身份与公钥绑定,签名+链上注册双重验证

加密签名与上报模块

加密签名与上报模块负责将任务数据包在本地完成签名处理,并通过加密通道将算力数据发送至网络中指定的验证节点或中继器。该模块直接继承通信加密层与身份认证层的信任基础,实现算力数据的“不可否认性”和“抗篡改性”,并为算力验证过程提供结构化、安全的数据输入源。

1)模块目标

  • 使用链上注册身份对应的私钥对算力上报包进行不可伪造签名;

  • 确保数据归属节点身份(DH-ID),与签名、钱包地址可一致性校验;

  • 通过安全加密信道上传报文,防止内容在传输过程被监听或替换;

  • 支持异步重发、批量压缩与多路径广播机制,确保上报的高可用性。

2)签名机制

默认使用椭圆曲线签名算法(如 ECDSA / Ed25519)对封装数据进行加密签名,推荐过程如下:

message = SHA256(compute_hash || timestamp || payload_meta)
sig_node = Sign(wallet_sk, message)
  • 签名与 DH-ID 绑定,钱包地址作为链上注册身份验证源;

  • 验证节点通过链上注册表获取 DH-ID → wallet → 公钥路径,完成签名校验;

  • 支持将签名加入数据包原始结构或另附独立字段进行外包验证。

3)上报路径与通道

DF 提供两种上报模式:

模式
描述

Direct Submit

节点直接将签名数据包通过 HTTPS/WebSocket 发送至验证服务端

p2p Broadcast

节点将数据包通过 libp2p/gossipsub 广播给网络邻居,等待采样

所有数据包均需通过 AES-256-GCM 加密通道发送,并附带加密元字段(IV、AAD、auth_tag)。

4)冗余容错与异步重试机制

  • 若在指定时间内未收到验证确认,可自动重新发起提交;

  • 每个数据包附带 nonce + seq_id,防止重复上链;

  • 重发次数受限于合约内设定的“每轮最大上报次数”,防止恶意 DDoS。

示例提交格式(JSON 报文):

{
  "node_id": "0xb14e...e3f",
  "compute_hash": "0x8c3ab...",
  "timestamp": 1716900000,
  "payload_meta": {
    "task_type": "static",
    "cu": 100
  },
  "signature": "0x3045...",
  "cipher_data": "0x9ab9...",
  "iv": "0x77c1fa...",
  "auth_tag": "0xde88..."
}

Last updated