从协议设计的角度理解 DePIN 与 web3 物联网项目的工作原理

作者:Pika,Sui 公链大使,DePIN 研究员

编辑:Faust,极客 Web3

导语:尽管 DePIN 赛道在当下十分火热,但 DePIN 相关的物联网设备要大规模接入到区块链,仍存在技术上的障碍。一般而言,若要将物联网硬件接入到区块链中,要经历以下三个关键阶段:

1. 硬件设备的可信任运行;

2. 收集验证并提供数据;

3. 将数据分发到不同应用。

这三个阶段中存在不同的攻击场景与反制手段,需要引入各种机制设计。本文从项目工作流程与协议设计的角度,回顾分析了物联网设备从可信任产生数据,验证存储数据,通过计算产生证明,和向区块链 rollup 数据的整个流程。如果你是 DePIN 赛道的创业者,希望本文可以在方法论和技术设计上对你的项目发展有所帮助。

下文中,我们以空气质量检测的场景为例,结合 IoTeX、DePHY、peaq 这三个 DePIN 基础设施进行分析,向大家阐明 DePIN 基础设施是如何工作的。此类基础设施平台可以对接物联网设备与区块链/Web3 设施,帮助项目方快速启动 DePIN 应用类项目。

硬件设备的可信任运行

硬件设备的可信任,包括设备身份的信任与程序执行可验证无篡改的信任。

DePIN 的基础工作模式

在大多数 DePIN 项目的激励方案里,硬件设备的运行者会对外提供服务,以此为筹码向激励系统索要奖励,比如在 Helium 中,网络热点设备通过提供信号覆盖,来获取 HNT 奖励。但在从系统中获取激励前,DePIN 设备需要先出示证据,证明自己的确按要求付出了一定 “努力”。

这类用于证明自己在现实世界中提供了某类服务、进行了某些活动的证明,被称为物理工作证明(Proof of Physical Work, PoPW)。在 DePIN 项目的协议设计中,物理工作证明占有举足轻重的地位,相应的也存在各种攻击场景与对应的反制手段。

DePIN 项目要依托于区块链完成激励分发与代币分配。类似于传统公链中的公私钥体系,DePIN 设备的身份核验流程中,也需要使用公私钥,私钥用于生成和签署 “物理工作证明”,公钥则被外界用于验证上述证明,或作为硬件设备的身份标签 (Device ID)。

除此之外,直接用设备的链上地址接收代币激励并不方便,因此 DePIN 项目方往往在链上部署一个智能合约,合约中记录着不同设备持有人的链上账户地址,类似于数据库中一对一或多对一的关系。这种方式下,链下物理设备应当收到的代币奖励,可以直接打到设备持有人的链上账户里。

女巫攻击

绝大多数提供激励机制的平台,都会遇到 “女巫攻击”,就是说有人可能操控大量的账号或设备,或是生成不同的身份证明,伪装成多个人,拿多份奖励。以我们前面提到的空气质量检测为例,提供此服务的设备越多,系统分发出去的奖励也越多。有人可以通过技术手段,快速生成多份空气检测数据以及对应的设备签名,制造大量的物理工作证明来获利,这会使 DePIN 项目的代币陷入高通胀,所以要制止此类作弊行为。

所谓的反女巫,如果不采用 KYC 等破坏隐私性的方法,最常见的措施就是 POW 和 POS,在比特币协议中,矿工要付出大量的算力资源,才能获得挖矿奖励,POS 公链则直接让网络参与者质押大量的资产。

在 DePIN 领域中,反女巫可以归结为 “抬高物理工作证明的生成成本”,由于物理工作证明的生成,依赖于有效的设备身份信息(私钥),所以只要抬高身份信息的获得成本,就可以防止某些低成本生成大量工作证明的作弊行为。

针对上述目标,一种相对有效的方案是,让 DePIN 设备生产商垄断身份信息的生成权限,对设备进行定制化处理,为每部设备录入唯一的身份标签。这就好比,由公安局统一记录全体公民的身份信息,只有在公安局数据库里可查的人,才有资格领取政府补贴。

(图片来源:DigKey)

在生产环节,DePIN 设备厂商会使用程序在足够长的时间里生成根密钥,然后随机选择根密钥使用 eFuse 技术写入到芯片中。这里要科普下,eFuse(可编程电子熔断器)是在集成电路中存储信息的电子技术,录入的信息通常无法被篡改或擦除,具有较强的安全保障。

在这种生产流程下,设备持有者和生产商都无法获知设备的私钥,以及根密钥。硬件设备可以在 TEE 的隔离环境中,从根密钥导出并使用工作密钥,包含签署信息用的私钥,和交由外界验证设备身份的公钥。TEE 环境外的人或程序都无法感知到密钥的细节。

上述模式下,如果你想获取代币激励,必须要从专属厂商那里购买设备。女巫攻击者若想绕开设备厂商,低成本生成大量的工作证明,就需要破解厂商的安全系统,将自己生成密钥的公钥注册到网络许可设备中去,女巫攻击者很难低成本发起攻击,除非设备生产厂商监守自盗。

而一旦人们发现设备厂商有作恶的可疑迹象,可以通过社会共识的方式对 DePIN 设备生产厂商进行曝光,这往往会使得 DePIN 项目本身连带遭殃。但多数情况下,设备厂商作为 DePIN 网络协议的核心受益方,大多没有作恶动机,因为让网络协议井然有序运转的话,卖矿机赚的钱会比 DePIN 挖矿赚的钱多,所以他们更多会倾向于不作恶。

(图片来源:Pintu Academy)

如果硬件设备不是由中心化生产商统一供应的,那么当任意一台设备接入 DePIN 网络时,系统要先确认该设备具有协议要求的特性。比如,系统会检查这些新加入的设备,有没有专属的硬件模块,没有此类模块的设备往往无法通过认证。而要让设备拥有上述硬件模块,要花费一定的资金,这就抬高了女巫攻击的成本,进而达到反女巫的目的。在这种情况下,还是正常运行设备而非制造女巫攻击更为明智和稳妥。

数据篡改攻击

让我们脑洞一下,如果某台设备收集到的空气质量检测数据,其波动性越强,系统就认为数据更有价值,并为此提供更多奖励,那么任何设备都有充足的动机伪造数据,让其故意表现出高波动性。即便是由中心化厂商做身份认证的设备,也可以在数据计算过程中 “夹带私货”,对收集到的原始数据进行改写。

该如何保证 DePIN 设备是诚实可信的,没有对收集到的数据进行肆意修改呢?这需要用到可信固件 (Trusted Firmware) 技术,其中较为出名的是 TEE(Trusted Execution Environment), 还有 SPE(Secure Processing Environment).。这些硬件层面的技术,可以保障数据在设备上按照事先验证过的程序来执行,计算过程中没有 “夹带私货”。

(图片来源:Trustonic)

这里简单介绍下,TEE(可信执行环境) 通常是在处理器或处理器核心中实现的,用于保护敏感数据,执行敏感操作。TEE 提供了一个受信任的执行环境,其中的代码和数据能够受到硬件级别的安全保障,以防止恶意软件、恶意攻击或未经授权的访问。比如, Leger, Keystone 这些硬件钱包都有使用到 TEE 技术。

大多数现代芯片都支持 TEE,尤其是针对移动设备、物联网设备和云服务的芯片。通常情况下,高性能处理器、安全芯片、智能手机 SoC(系统级芯片)和云服务器芯片都会集成 TEE 技术,因为这些硬件涉及的应用场景,往往对安全性有较高的追求。

但是,不是所有的硬件都支持可信任固件,一些较低端的微控制器、传感器芯片和定制的嵌入式芯片可能缺乏对 TEE 的支持。对于这些低成本芯片,可以通过探针攻击等手段去获取芯片内留存的身份信息,进而伪造设备身份和行为。比如,攻击获取到芯片上保存的私钥数据,然后使用私钥对篡改或伪造的数据进行签名,伪装成设备自身运行生成的数据。

但探针攻击依赖于专门设备和精确的操作、数据分析流程,攻击成本过高,远高于从市场上直接获取这类低成本芯片的成本。相比于通过探针攻击等手段破解伪造低端设备的身份信息来获利,攻击者会更愿意直接购买更多台低成本的设备。

数据源攻击场景

前面提到的 TEE 可以保证硬件设备如实的生成数据结果,只能证明数据在输入到设备内部后,没有被恶意的处理,但无法确保数据在进行计算处理前,其输入源头可信,这其实类似于预言机协议面对的难题。

比如,某台空气质量检测仪,被放置在了排废气的工厂附近,但有人在夜里用密闭的玻璃罐把空气质量检测仪罩起来,那么这台空气检测仪获取的数据必定不真实。但上述攻击场景往往无利可图,攻击者大多数时候没必要这么做,因为是费力不讨好。对于 DePIN 网络协议而言,只要设备满足诚实可信的计算过程,付出了满足激励协议所要求的工作量,理论上就该获得奖励。

方案介绍

IoTeX

IoTeX 提供了 W3bStream 开发工具,将物联网设备接入到区块链和 Web3 当中。在 W3bStream 物联网端的 SDK 中, 包含了通信和消息传递、身份和凭证服务以及密码学服务等基本组件。

W3bStream 的 IoT SDK 对加密功能的开发非常完善,包含多种加密算法的实现,比如 PSA Crypto API, Cryptographic primitives, Cryptographic services, HAL, Tooling, Root of Trust 等模块。

有了这些模块,可以在各种硬件设备上,用安全或欠安全的方式去对设备产生的数据进行签名,并通过网络传递到后续数据层供验证。

DePHY

DePHY 在物联网端提供了 DID(Device ID) 认证服务。DID 由生产商铸造,每一个设备都有且仅有一个对应的 DID。DID 的元数据可以自定义,可以包含设备序列号、型号、保修信息等等。

对于支持 TEE 的硬件设备,最开始由生产商生成密钥对,使用 eFuse 将密钥写入芯片中,而 DePHY 的 DID 服务,可以帮助生产商根据设备公钥来生成 DID. 而生产商生成的私钥除了被写入到物联网设备,就只有生产商持有。

由于可信任固件可以实现安全可靠的消息签名与硬件端私钥保密,如果人们发现网络中存在作弊生成设备私钥的行为,基本就可以认为是设备生产商在作恶,就可以溯源到对应的生产商身上,实现信任溯源。

DePHY 的用户在买入设备后,可以获取设备的激活信息,再调用链上的激活合约,将硬件设备的 DID 与自己的链上地址关联绑定,进而接入到 DePHY 网络协议中。物联网设备经过 DID 设置流程后,就可以实现用户与设备之间的数据双向流动。

当用户通过链上账户向设备发送控制指令时,流程如下:

1. 确认用户拥有访问控制权限。由于设备的访问控制权限以 metadata 的形式写在 DID 上,可以通过检查 DID 来确认权限;

2. 允许用户和设备开通私密通道建立联接来支持用户控制设备。DePHY relayer 除了 NoStr relay 外,还包含 peer-to-peer 的网络节点,可以支持点对点通道,由网络里的其他节点帮忙中继流量。可以支持用户在链下实时控制设备。

在物联网设备向区块链发送数据时,后续数据层会从 DID 上读取设备的许可状态,只有通过注册被许可的设备才能上传数据。比如被生产商注册过的设备。

这个 DID 服务另一项有意思的功能在于提供了物联网设备的功能特性 (trait) 认证。这项认证可以识别出物联网硬件设备是否具有某些特定功能,达到足以参与特定区块链网络的激励活动的资格。比如一台 WiFi 发射器,通过识别到具有 LoRaWAN 的功能 (trait),可以认为具有提供无线网络连接的作用,也就可以参与到 Helium 网络中。类似的,还有 GPS trait, TEE trait 等。

在拓展服务方面,DePHY 的 DID 还支持参与质押,链接可编程钱包等,方便参与链上活动。

peaq

peaq 的方案比较奇特,它的方案分为三个等级,分别是源自设备的认证、模式识别校验、基于预言机的认证。

1. 源自设备的认证。peaq 同样提供了生成密钥对,在设备上使用私钥签署信息,将设备地址 peaq ID 绑定用户地址等功能函数。但是,在他们的开源代码中却找不到可信固件的功能实现。peaq 简单的使用私钥对设备信息进行签名的认证方式,并不能保证设备的诚信运行和数据未经篡改。peaq 更像是一个乐观 Rollup,默认设备不会作恶,然后在后续阶段去验证数据的可信状况。

2. 模式识别校验。第二个方案是结合机器学习、模式识别。通过学习之前的数据得到模型,当新的数据输入时,与先前的模型做比较,判别是否可信。但统计模型其实只能识别出异常数据,并不能判断物联网设备是否诚实运行。

比如,城市 A 中的某台空气质量检测仪放置在了地下室,收集产生的数据与其他空气质量检测仪都不一样,但并不代表数据伪造,设备仍在诚实运行。另一方面,只要收益足够大,黑客们也愿意使用 GAN 等方法,生成机器学习难以鉴别的数据,尤其是判别模型公开共享的情况下。

3. 基于预言机的认证。第三个方案是他们会挑选一些更受信任的数据源作为预言机,与其它 DePIN 设备收集上来的数据进行比较验证。比如,项目方在城市 A 部署了一台精确的空气质量检测仪,其他空气质量检测仪收集的数据如果偏差太大,就被认为不可信。

这种方式一方面给区块链引入并依赖权威,另一方面,也可能因为预言机数据源的采样偏差,而使得整个网络数据采样都出现偏差。

就目前的资料来看,peaq 的基础设施,在物联网端无法保证设备和数据的可信任。(注:笔者查阅了 peaq 的官网、开发文档、Github 仓库,以及一份仅有的 2018 年白皮书草稿。即使向开发团队发送邮件,也未能在发稿前得到更多补充说明资料)

数据的产生与发布(DA)

DePIN 工作流程中第二个阶段主要是收集、验证物联网设备传递过来的数据,保存起来向后续阶段提供数据,要确保数据能完整无误、可被还原的发送给特定接收方,这被称为数据可用性层 (DA 层)。

物联网设备往往通过 HTTP, MQTT 等协议,将数据和签名认证等信息广播出去。而 DePIN 基础设施的数据层在接收到设备端的信息时,需要验证数据的可信度,把通过验证的数据汇集存储起来。

这里介绍下,MQTT(MQ Telemetry Transport) 是一种轻量级的、开放的、基于发布/订阅模式的消息传输协议,旨在用于连接受限的设备,如传感器和嵌入式系统,在低带宽和不稳定网络环境下进行通信,非常适合物联网 (IoT) 应用程序。

在验证物联网设备消息的环节,会包含设备可信执行的认证和消息的认证。

设备可信执行的认证可以结合 TEE.。TEE 通过将数据收集代码隔离在设备的受保护区域中,确保了数据的安全收集。

另一种方式是零知识证明,这种方法使得设备能够证明其数据收集的准确性,同时又不泄露底层数据的细节。这种方案因设备而异,对于性能强大的设备,可以在本地生成 ZKP,对于受限制的设备,则可以进行远程生成。

在认证了设备的信任之后,使用 DID 去验证消息签名,就可以确定消息是由该设备产生。

方案介绍

IoTeX

在 W3bStream 中,分为可信任数据收集、验证,数据清洗,数据存储这三个部分。

  • 可信数据的收集、验证使用了 TEE 和零知识证明的方法。
  • 数据清洗是指将来自不同类型设备上传的数据格式统一化、标准化,便于存储和处理。
  • 数据存储环节,允许不同应用项目通过配置存储适配器来选择不同的存储系统。

在当前的 W3bStream 实现中,不同的物联网设备可以直接把数据发送给 W3bStream 的服务终端,也可以先把数据通过服务器收集后,再发送给 W3bStream 的服务器终端。

在接收到传入的数据时,W3bStream 会像一个中心分发调度器那样,将传入的数据分发给不同的程序去处理,而 W3bStream 生态内的 DePIN 项目,会在 W3bStream 上申请注册, 并定义事件触发逻辑 (Event Strategy) 和处理程序 (Applet).

每部物联网设备都会有设备账号 (device account), 归属于一个而且也只能有一个 W3bStream 上的项目。因此,当物联网设备的消息传递到 W3bStream 服务端口时,可以先根据注册绑定信息,重定向到某个项目,并验证数据的可信

至于前面提到的事件触发逻辑,可以定义从 HTTP API 终端、MQTT 话题接收到的数据信息,以及检测到区块链上的事件记录,检测到区块链高度等可以被触发的事件 (Event triggers) 类型,并且绑定对应的处理程序去处理。

处理程序 (Applet) 中定义了一个或多个执行函数,被编译成了 WASM 格式。数据的清洗和格式整理就可以通过 Applet 去执行。处理之后的数据被存放到由项目定义的 key-value 数据库中。

DePHY

DePHY 项目采用了更为去中心化的方式来处理和提供数据,他们称之为 DePHY 消息网络 (DePHY Message network).

DePHY 消息网络由无许可的 DePHY 中继节点 (relayer) 组成。物联网设备可以通过任意一个 DePHY 中继节点的 RPC 端口将数据传入,传入的数据会先调用中间件,结合 DID 去验证数据可信任。

通过信任验证的数据需要在不同的中继节点之间同步,形成共识。DePHY 消息网络采用了 NoStr 协议来实现。NoStr 原本的用途是用于构建去中心化的社交媒体,还记得之前有人用 NoStr 代替 Twitter 而大火么,用在 DePIN 数据的同步中居然也巧妙的合适。

在 DePHY 网络中,每台物联网设备存储的数据片段,都可以被组织成一棵 Merkle 树,节点间会彼此同步这棵 Merkle 树的 root,以及整棵树的 tree 哈希。当某个 Relayer 得到上述 Merkle Root 和 Tree 哈希后,可以快速定位还缺少哪些数据,方便从其他 Relayer 中获取补齐。这种方法能异常高效地达成共识确认 (Finalize)。

DePHY 消息网络的节点运行是 Permissionless 的,任何人都可以质押资产并运行 DePHY 网络节点。节点越多,网络的安全性越高,可访问性就越强。DePHY 节点可以通过 zk 条件付款 (Zero-Knowledge Contingent Payments) 的方式,获得奖励。也就是说,有数据索引需求的应用,在向 DePHY 中继节点请求数据时,根据可否检索到数据的 ZK 证明,来决定向中继节点支付多少费用。

同时,任何人都可以接入 DePHY 网络来监听、读取数据。项目方运营的节点可以设置过滤规则,只储存与自己项目相关的 DePIN 设备数据。由于沉淀了原始数据,DePHY 消息网络可以作为后续其他任务的数据可用层。

DePHY 协议会要求中继节点在运行时至少把接收到的数据在本地存储一段时间,再把冷数据要转存到 Arweave 这种永久性的存储平台上。如果全部数据都当作热数据去处理,最终会抬高节点的存储成本,进而提高全节点运行门槛,使得普通人难以运行全节点。

通过冷热数据分类处理的设计,DePHY 能大大降低消息网络中全节点的运行成本,更能应对海量的物联网数据。

peaq

前面的两种方案都是把数据的收集存储放在链下去执行,然后 Rollup 到区块链上去。这是因为物联网应用产生的数据量本身极大,同时又有通信延时的要求。如果在区块链上去直接去执行 DePIN 交易,数据处理能力有限而且存储成本很高。

单是等待节点共识就带来不可忍耐的延时问题。peaq 却另辟蹊径,自己搭建了一条公链,直接承载和执行这些计算和交易。它是基于 Substrate 开发的,当主网实际上线后,承载的 DePIN 设备增多,将会因为 peaq 的性能瓶颈,最终无法承载那么大量的计算和交易请求。

由于 peaq 没有可信任固件的功能,基本无法有效验证数据的可信。在数据存储方面,peaq 直接在开发文档中介绍了如何给基于 substrate 的区块链接入 IPFS 分布式存储。

将数据分发到不同应用

DePIN 工作流程中的第三阶段,是根据区块链应用的需求,将数据可用层的数据抽取出来,通过执行运算或零知识证明,把执行结果高效地同步到区块链上。

方案介绍

IoTeX

W3bStream 把这一阶段称为数据证明聚合 (Data Proof Aggregation)。这部分网络由许多聚合器节点 (Aggregator Nodes) 组成一个计算资源池 (computing resource pool), 给所有的 DePIN 项目共享调用。

每个聚合器节点会在区块链上记录自己的工作状态,是忙碌还是空闲。当有 DePIN 项目的计算需求过来时,根据链上的状态监控 (monitor) 选择空闲的聚合器节点去处理。

被选中的聚合器节点,会先从存储层检索需要的数据;然后根据 DePIN 项目的需求对这些数据做运算,并且生成运算结果的证明;最后把证明结果发送到区块链上给智能合约去验证。完成工作流程之后,聚合器节点重新回到空闲状态。

而聚合器节点在生成证明时,会用到分层聚合电路 (layered aggregation circuit)。分层聚合电路包含四个部分:

  • 数据压缩电路:类似于 Merkle 树,验证所有收集的数据都来自特定的 Merkle 树根。
  • 签名批验证电路:批量验证来自设备的数据的有效性,每个数据都与一个签名相关联。
  • DePIN 计算电路:证明 DePIN 设备按照特定计算逻辑正确执行了一些指令,例如在医疗健康项目中验证步数,或者在太阳能发电厂中验证产生的能量。
  • 证明聚合电路:将所有证明聚合成一个单一的证明,以供 Layer1 智能合约最终验证。

数据证明聚合对于确保 DePIN 项目中计算的完整性和可验证性至关重要,为验证链下计算和数据处理提供了可靠和高效的方法。

IoTeX 的收益环节也主要在这一阶段,用户可以通过质押 IOTX 代币,运行聚合器节点。越多聚合器的参与,也就能带来更多的运算处理能力,形成算力充足的计算层。

DePHY

在数据分发层面,DePHY 提供了协处理器来监听 DePHY 消息网络的 finalized 消息,进行状态迁移 (State change) 后,将数据打包压缩并提交到区块链。

状态迁移是用于处理消息的类智能合约的函数,由不同 DePIN 项目方定制,还包括 zkVM 或 TEE 的计算打包数据处理方案。这部分由 DePHY 团队向 DePIN 项目方提供项目脚手架 (Scaffold) 来开发和部署,具有很高的自由度。

除了 DePHY 提供的 co-processor, DePIN 项目方也可以根据项目脚手架将 DA 层的数据接入到其他基础设施的计算层,实现上链。

综合分析

尽管 DePIN 赛道火热,但物联网设备要大规模接入到区块链,仍存在技术上的障碍。本文从技术实现的角度,回顾分析了物联网设备从可信任产生数据,验证存储数据,通过计算产生证明和向区块链 rollup 数据的整个流程,从而支持将物联网设备集成到 Web3 应用中。如果你是 DePIN 赛道的创业者,也希望本文可以在方法论和技术设计上能对项目发展有所帮助。

在选择分析的三个 DePIN 基础设施中,peaq 依然像六年前网上的评论一样,is just hype. DePHY 和 IoTeX 都选择了链下收集物联网设备数据,然后 rollup 到链上的工作模式,能够在低时延、保证设备数据可信的条件下,将物联网设备数据接入到区块链。

DePHY 和 IoTeX 又各有侧重,DePHY 的 DID 包含了硬件功能 trait 的验证,双向数据传输等特点,DePHY 消息网络更注重于去中心化的数据可用层,更多是作为低耦合的功能模块与 DePIN 项目结合;IoTeX 的开发完整度很高,有完整的开发工作流程,更侧重于给不同事件绑定处理程序,偏向计算层。DePIN 项目方可以根据实际需求,选择不同的技术方案去组合。

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。文章内的信息仅供参考,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。