节点身份认证层

该层不仅确保节点身份的唯一性与抗伪造能力,同时为算力验证、激励归属与治理参与提供基础认证接口。

在去中心化算力网络中,身份不可伪造性是构建可信协作关系的前提。DF Protocol 在通信加密层之上,设计了完整的节点身份认证层,通过密码学手段生成并验证每一个节点的唯一身份标识 —— Node DH-ID,实现“在无需信任的环境中建立信任身份”。

节点身份生成机制(Node DH-ID Generation)

在 DF Protocol 中,节点身份并非依赖传统账号系统(如中心化钱包地址、链上合约账户),而是通过密码学方法生成的 原生加密身份标识,即 Node DH-ID。该机制使每个节点具备唯一、不可伪造、可验证的链上身份,并在数据传输与算力确权流程中承担认证基准作用。

1)原理基础

Node DH-ID 是一种通过 非对称密钥对 + 哈希映射 派生出的身份系统,构建过程基于如下加密原语:

  • 椭圆曲线密钥协商算法(ECDH)

  • 单向哈希函数(SHA-256 / Keccak-256)

  • 签名算法(ECDSA / Ed25519 / BLS)

身份生成过程不依赖链上账户结构,具备原生加密独立性,天然适配去中心化和匿名环境。

2)生成流程

每个 DF 节点在初始化时,将执行如下步骤生成其唯一身份:

Step 1:生成密钥对

  • 节点通过安全熵源生成一对 ECDH 密钥对 (sk, pk)

  • 示例曲线:secp256r1curve25519,用于派生加密通道密钥

Step 2:计算身份指纹

  • 对公钥进行哈希处理:DH_ID = SHA256(pk)

  • DH_ID 即为该节点在 DF 网络中的唯一身份标识

Step 3:生成声明签名

  • 节点使用自身钱包地址对 DH_ID 进行签名,证明其归属权

  • 签名结构满足链上验证接口的格式(如 EIP-712)

3)身份属性要求

Node DH-ID 的设计满足以下条件:

属性
要求说明

唯一性

每个节点生成的 DH-ID 在全网唯一,不可重复

去中心化

不依赖注册服务器或节点名单,身份自生成

抗伪造性

仅持有私钥的节点能完成身份注册与签名

可验证性

所有 DH-ID 可通过链上注册表与链下签名校验

匿名性(可选)

不绑定真实用户信息,适用于隐私网络

4)与传统身份模型的区别

模型类型
描述
风险

地址绑定型身份

绑定钱包地址(如 EOA)

可伪造,难以证明物理设备是否一致

注册型身份

依赖中心化平台分配 UID

不可复用,不具备迁移能力

DH-ID 身份(DF)

基于密钥对原生派生,链上哈希声明

密钥私有、数据可审计、安全高

5)失效与重注册机制

  • 若节点私钥遗失或更换密钥对,需执行链上注销旧 DH-ID 并注册新身份流程;

  • 系统支持 NodeRevoke()NodeRebind() 接口,防止身份漂移造成攻击向量;

  • 所有变更记录存储于链上,可供算力验证与收益系统调用。

6)用途集成

Node DH-ID 将用于:

  • 通信层加密身份标记(Encrypted Packet Header)

  • 算力验证签名字段

  • 奖励归属与分发映射

  • 节点治理参与身份验证

  • 零知识身份绑定(未来扩展)

示例

ECDH 公钥:
pk = 0x04593a8f...acf11

DH-ID = SHA256(pk) = 
0xb14e925c6fe498bb2d7a12c7cf3af6fd48ff28f1b9...

绑定签名:
Sig(0xb14e... | wallet_addr)

链上身份声明与注册流程(On-chain Node Identity Registration)

为确保所有节点身份具有可验证性、防伪造能力与链上可追溯性,DF Protocol 设计了一套结合加密签名与智能合约的身份声明机制。该流程是通信安全、算力验证与收益归属的信任前提。

1)设计目标

  • 使每个节点的 DH 身份在链上公开可验证

  • 绑定身份与其控制的钱包地址,避免伪冒与攻击

  • 提供安全、轻量、可审计的声明与更新路径

  • 为通信加密与算力奖励提供身份锚定依据

2)核心元素

  • Node DH-ID:由节点 ECDH 公钥经哈希生成的唯一身份标识

  • Wallet Address:节点控制的钱包地址,用于声明签名与治理绑定

  • Identity Registry Contract:部署在链上的节点身份注册合约

  • Sig_Wallet(DH-ID):由钱包私钥对 DH-ID 的签名,证明其所有权

3)注册流程步骤

Step 1:生成身份

节点本地生成 ECDH 密钥对 (sk, pk),通过哈希计算其 DH-ID:

DH-ID = SHA256(pk)

Step 2:声明签名

节点使用其钱包地址对 DH-ID 签名,生成声明证明:

Signature = Sign(wallet_sk, DH-ID)

Step 3:提交注册

节点调用链上注册合约接口 registerNode(DH-ID, pk, signature),将以下信息提交:

  • DH-ID:身份标识

  • pk:ECDH 公钥(或压缩形式)

  • Signature:钱包对 DH-ID 的签名

Step 4:链上验证

注册合约执行以下检查逻辑:

  • 验证签名合法性 Verify(wallet_addr, DH-ID, signature)

  • 校验 DH-ID 是否已存在,避免重名注册

  • 将身份映射写入链上存储结构:

mapping(bytes32 => NodeIdentity) public nodeRegistry;

struct NodeIdentity {
    address wallet;
    bytes pubkey;
    uint64 registeredAt;
    bool revoked;
}

4)接口说明

function registerNode(bytes32 dhId, bytes calldata pubkey, bytes calldata signature) external;
function revokeNode(bytes32 dhId) external;
function getNode(bytes32 dhId) view returns (NodeIdentity memory);

5)安全特性

机制
安全目标

钱包签名

证明身份归属,防止伪造声明

链上存证

提供身份查询、可审计的索引结构

不可变映射

避免身份漂移、身份重用攻击

冻结与解绑(Revoke)

支持节点身份轮换与密钥丢失处理

6)身份生命周期

状态
描述

未注册

节点尚未声明身份

注册成功

已完成声明,具备算力参与权限

被撤销

由节点主动或治理系统冻结身份

可重绑定

解绑旧 DH-ID 后可注册新身份

7)应用接口调用路径

  • 通信层读取链上 DH-ID 映射以防 MITM 攻击

  • 验证节点对算力上报进行签名验证时检索 DH-ID → wallet 地址映射

  • 奖励模块依据 wallet 地址识别激励归属者

Last updated