本文描述了设计一个面向DePIN提供区块链底层服务的基础设施应考虑哪些问题,以及如何完成设计。 该方案基于BoAT3 Oracle。
<!--StartFragment-->
DePIN项目的运行原理一般为:
让我们拿起放大镜,来把上述流程看的更仔细一些!
2.1 PoPW的生成
IoT设备在工作中会不断产生PW数据,如太阳能电池板的发电数据,基站的服务数据等。但如何能让DePIN网络相信这台IoT设备矿机没有凭空捏造自己的数据,甚至有人在没有矿机的情况下,凭空创造出这些数据呢?一般有两种方法:
2.2 PoPW的验证:BoAT3 Oracle
DePIN网络中的IoT设备矿机数量一般很多,如上万台,甚至上百万台。因此生成的PoPW数量也非常巨大。这些PoPW在链上验证会产生巨大的成本,且没有必要。因此这些数据一般是通过Oracle完成验证的。BoAT3 Oracle可以处理上述1,2,方式产生的PoPW。其原理如下:
PoPW被传至BoAT3 Oracle后,Oracle通过链上DID合约获取其公钥,使用公钥验证PoPW合法性。如果合法性验证通过,就会将PW数据传输至Connector,表示该PW已被认可,Connector中的运行逻辑由DePIN项目方决定,可以将该PW数据发送至链上合约进行奖励,也可以按照奖励规则收集到合适数量/时间的PW后进行奖励。
PW数据量一般很大,不会直接将PW数据全部上链,而是将其保存在去中心化存储网络中(例如FIL, Arweave),计算出其数据承诺(如将数据构建Merkle树,Merkle树根即为数据承诺),将数据承诺以及获取数据的方法放至链上。每次奖励周期均可在链下获取生成奖励的原始数据。
2.3 BoAT3 Oracle和DePIN项目脚手架
因为DePIN项目涉及到的模块相对比较多,为了便于项目开发和实施,BoAT3 Oracle提供的了几个工具供DePIN项目方使用,主要包括:
2.4 奖励发放和兑换
奖励发放一般由Oracle完成,可以在链上直接发放;也可以将发放承诺/证明上链,由矿工在链上领取,这样可以减少链上交易,降低发放成本。
无论使用哪种方式发放,都需要向社区证明奖励的发放符合规则。每次奖励发放时,Oracle通过PW数据计算哪些矿工可以获取奖励,以及获取多少奖励。可以将所有奖励细节生成一棵merkle树,每个叶子都是一个奖励的Hash,这个Hash由奖励的期数,获得奖励的账户,奖励数量等数据组成。奖励树的树根可以和PW数据树的树根,以及其他奖励相关数据一起输入智能合约。智能合约中可以允许社区成员对奖励的分发发起并完成挑战,如果社区成员挑战成功,则Oracle抵押的Token将被罚没,并将其中可观的部分奖励给挑战者。挑战过程可以约束Oracle必须按规则完成奖励的分发。
矿工获取奖励后,可以通过DEX或CEX将奖励兑换成稳定币或提现成法币,可以补贴其运行矿机,维护DePIN网络的成本,也可以激励其进一步购买矿机,扩大DePIN网络规模,形成DePIN网络的增长飞轮。
2.5 其他PoPW模型
除了上述模型外,也有其他可用于DePIN项目的模型。例如通过区块链生成有时限的可信挑战,如每小时都在变化的随机数。该挑战会被下发至每台矿机,矿机需要在其有效时间内,结合自身的IoT工作数据完成挑战,并将其生成PoPW,发回DePIN网络。DePIN网络根据挑战来验证IoT设备的工作是否真实有效。该方案无需对IoT设备芯片生产商或IoT平台等产生信任和依赖。但如何设计完善可信的挑战机制是件很有挑战的工作,而完成挑战也许需要额外消耗IoT设备的计算能力和资源等,对设备硬件有较高要求。
3. 构建满足DePIN要求的区块链和基础设施
3.1 需求和整体架构
DePIN项目对区块链等基础设施有如下要求:
基于以上需求,考虑支持DePIN项目的区块链和基础设施的架构如下:
整个系统是基于RollUp的三层结构,包括如下核心部分:
下面我们来一起深入了解这些模块,以及为什么这样设计。
3.2 为什么使用RollUp构造区块链
RollUp采用了模块化区块链设计,能在最大程度上继承结算链(如以太坊)的安全性。以扩展以太坊性能为例,从以太坊L1角度思考,L2的安全性和信任均来自于L1,应做到用户们只信任L1的情况下,仍能认为L2上执行的交易,以及交易结果是可信的,安全的;甚至L1与L2的智能合约之间可以互相调用。落实到实现层面,L2需要满足如下三个要求:
Sequencer(定序器)是L2上的共识模块,L2上的交易都会被发送到Sequencer处理,Sequencer可能是中心化的,也可能是去中心化的。Sequencer会对收到的交易排序,并打包出块。每隔一段时间,Sequencer会将L2上这段时间的所有交易压缩后,使用calldata提交到L1,该过程称为DA(Data Availability)。Sequencer还会定期将L2最新的状态根提交到L1里的智能合约中。L2通过OP或ZK方式保证提交的状态根是正确的。
证明L2的状态根正确后,即可认为所有通过DA提交到L1的交易均被正确执行了,且执行后的状态根也是正确的。因此如果这些交易中有跨链调用交易,也是可以安全执行的。
从L2上Sequencer之外的节点来看,它们并不直接信任由Sequencer通过p2p网络发出的区块,而是信任已经通过DA提交到L1的区块,并监督这些区块后续的状态根;从L2的用户来看,他/她们也不信任L2 Sequencer直接给出的交易回执和状态,而是只相信已经被提交到L1的区块,以及在L1上被验证的状态根。因此在RollUp架构里,信任和安全是来源于L1的,而不是来源于L2。所以RollUp的安全性和可信度接近L1本身,这是一种安全可信的,效率极高的区块链扩容方案。因此选择使用RollUp作为服务于DePIN的区块链基础设施是非常合适的。
3.3 为什么使用L2+L3架构
虽然可以使用RollUp安全地扩展以太坊的性能,但是受限于EVM的性能和其顺序执行特性,即使加快出块速度,调高gas limit,单条RollUp的性能上限也并不高,一般认为在千级别。而DePIN应用所需的性能是比较高的,因此一条RollUp无法承载太多DePIN应用。
DePIN应用的场景很丰富,因此很多DePIN应用都会有定制需求,如隐私保护等。这些定制需求可能会需要在RollUp层修改来满足,而不是在合约层就能满足。因此这些DePIN应用需要定制的RollUp。
综上,我们不可能用一条RollUp就支持所有DePIN项目的需求,DePIN应用的大规模落地必定是要求多链协作的。这些协作的链之间需要一个可以信任的公共基石来进行信息的同步和交换,以及完成一些公共服务,如统一的经济学中代币的发行,我们称之为管理链,相应的,承载各个DePIN项目的链称为应用链,应用链包含多条DePIN App Chain L3链。
虽然以太坊主网是管理链的理想选择,但以它的成本比较高,性能偏低,因此以太坊上的主流RollUp L2是管理链的理想选择,如Optimism, Arbitrum等。而以管理链作为结算层的L3是承载应用链的合理选择,它们可以提供足够的安全性,性能扩展和足够低的链上成本。
3.4 DA服务
DA在RollUp里是非常重要的模块,它不仅让L1了解到L2上发生的交易,还是安全性的重要来源。以OP RollUp为例,当社区节点对Sequencer提交的L2状态根有异议,对其发起挑战时,需要在L1上重放有歧义的交易或opcode,从而确认哪一方是对的。挑战中需要在合约里提交这个有歧义的交易或opcode,此时需要使用之前提交的DA数据来验证挑战中提交的内容与DA数据是一致的。因此DA数据必须是可以被所有社区成员获取的,并且是可以被验证的。
最简单和安全的DA方案是使用以太坊L1作为DA,所有L2交易数据被压缩后,通过calldata方式提交到L1,并保存于L1的区块数据里。因此当挑战发生时,仅需从L1区块数据里便能读出所有所需的DA数据,不存在数据扣留风险。但calldata是要消耗以太坊L1的区块gas的,以太坊L1区块有gas limit,因此以太坊L1的gas limit将直接决定RollUp扩展性能的上限。按测算,以当前的gas limit计算,即使所有区块gas fee都用作DA,也仅能将以太坊TPS提升至几千级别。即使采用L2+L3的架构,仅使用以太坊作为DA,也无法进一步提升性能。因为交易数据的压缩是有限的,一笔L3上发生的交易,压缩后提交到L2,再由L2提交到L1,其压缩率并不会比L2上直接提交的交易更高。
因此服务于DePIN的RollUp,需考虑使用第三方DA。该DA需解决数据扣留攻击的风险,即发布给DA的数据必须能够全部无条件被任何人公开获取,任何DA节点都没有能力扣留住数据不对外公布。因此L3 Sequencer仅需将交易数据发送到第三方DA,并将如何获取该DA数据的方式(如Celestia上的名字空间和数据commitment)和数据承诺等提交至L2(即结算层)即可。L3上的其他节点可以在L2上获取相关数据后,各自从第三方DA获取交易数据,完成链上状态的计算和挑战等工作。通过使用第三方DA,交易数据不再大量消耗以太坊L1的区块gas,这给以太坊L1带来了近乎无限的扩展能力,这也是DePIN项目所需的能力。
DA服务一般采用DAS(Data Availability Sample)防止数据扣留,DAS一般基于Reed-Solomon编码。假设交易数据有N bytes,将N bytes交易数据转换为一个(N-1)阶多项式,交易数据就是该多项式的系数,即它们是该多项式上的N个点。在该多项式的曲线上随机抽取另外N个点,则使用这2N个点中的任意N个即可恢复原始数据。DA网络中有大量轻客户端,轻客户端会分别随机对数据进行抽样。如果第一次抽样中数据可正常返回,则证明至少50%的数据是可获取的,进行第二次抽样时数据仍可返回,则证明至少75%的数据是可获取的,抽样成功的次数越多,则数据扣留的几率越小。当不重复的抽样达到N次及以上时,则通过已抽样数据就可以恢复所有数据,不存在数据扣留的可能性。抽样失败的节点会被惩罚。
使用第三方DA服务将交易数据存储在以太坊之外,虽然流程变复杂了,安全性上需要额外信任第三方DA服务,但它可以极大降低对以太坊上gas fee的消耗,进而将以太坊的性能扩展极限提升至几乎无限,并可以极大地降低RollUp使用成本,因此是值得的。Celestia, EigenDA等均提供成熟的,高性能的DA服务。
3.5 存储服务
存储服务与DA服务不同。DA服务的目标是数据公开和分发,专门保存RollUp里的DA交易数据,服务于RollUp安全,相当于区块链的区块数据;而存储服务用于保存PW或PoPW数据,即IoT设备上生成的工作数据,主要为链下数据。
不同的DePIN项目对PW数据有不同的保存需求,有的需要有一定的隐私保护能力,需要对数据做脱敏或权限管理;有的需要长期保存数据,甚至永久保存。因此不同DePIN项目可以按自己实际需求选择合适的存储服务。
3.6 全链DID服务
不同DePIN项目间可以互相协作,构建更丰富的DePIN生态。这需要能跨项目地为每个IoT设备提供唯一标识,且能依据此标识获取关于该设备的各种数据(如密码学能力,公钥等),DID可以提供该服务。因为不同DePIN项目可能位于不同链上,因此该DID服务需要提供全链服务能力,即在系统内支持的所有链上,每个IoT设备均具有不重复的DID,且通过该DID可获取该设备的数据。
让不同链上的任意设备具有不重复的DID,有两种常见方案:
在当前场景下,方案b是不合适的。因为当需要多个DePIN项目间协作,获取其他链上设备的DID时,不可能通过跨链查询完成,最好的方式是把需要的设备DID可信地同步到每条需要的链上(由于采用L3,实际成本并不高),并在这些链之间保证数据一致性。对方案b来说,会导致名字空间的混乱,且无法保证数据一致性。因此此处考虑方案a。方案a中包含3部分:
工作流程分为三步:
Arweave不仅提供永久数据保存,而且其支持EVM合约和通过PermWeb对保存的数据进行查询和处理,因此非常适合用来保存全链DID数据。DID数据的条目虽然多,但所需的总存储量并不大,因此其成本也是合适的。
3.7 密钥可信初始化
IoT设备安全容器中保存的密钥是验证PoPW的信任来源,必须做到密钥被安全可信地初始化,私钥不可被任何一方读出,公钥可被提交至DID合约中,供任何人通过DID读取。可信初始化有多种可能方式:
方案一是业界成熟方案,成本低,适合一次性大批量初始化芯片。安全容器可以位于通信模组中,而通信模组可以适配到各种不同用途的IoT设备中,因此可将其作为通用产品使用。可以一次性批量生产大量芯片后,向多个不同DePIN项目方供应该芯片。并由芯片生产方或可信第三方批量在链上初始化DID数据。
方案二更加灵活,可在任意阶段通过无线网络和去中心化TSM网络完成对芯片内密钥对的初始化。由于密钥种子来自多个去中心化参与方,因此只要去中心化TSM网络中有一个诚实参与方,整个流程就是安全可信的,没有任何参与方可以解码出芯片内的私钥。
3.8 经济学支持
经济学是DePIN项目的引擎和重要组成部分。DePIN项目可以使用自己的Token,也可以使用生态Token作为项目Token。甚至可以两者兼而有之,在项目启动阶段使用有价值的,已经被认可的生态Token作为激励和应用Token,迅速推进网络建设并获得用户和价值支撑,降低使用摩擦;在发展壮大后将网络规模和服务能力作为价值支撑,转换为使用自己的Token获得更高的价值捕获。
多个DePIN项目使用统一的生态Token可以形成合力,对项目方和DePIN App Chain生态的发展都有好处。从DePIN App Chain生态的角度而言,更多项目使用生态Token,可以捕获更多价值,也给生态的发展带来更多可能性;从项目方角度而言,在项目启动阶段其网络价值较低,不易吸引用户,此时如果使用已经具有价值的生态Token,可以提高项目价值,降低用户使用的摩擦;从终端用户和投资者角度看,拥有生态Token便可以使用多种DePIN应用服务,获取多个项目成长的预期,是件方便划算的事情。
除了Token经济学外,DePIN项目的发展还需要很多其他生态经济支持,如DEX, 借贷等传统DeFi支持;除此之外,鉴于DePIN的RWA属性,也会产生现实世界里的法币需求。DePIN App Chain 生态会对接多种工具,帮助项目方构建链上链下的经济学,帮助项目成长。
3.9 全链服务
由于各种原因,DePIN项目方可能会将其项目部署在各种各样的区块链网络上,如polygon, Solana等L1网络,或Arbitrum, Optimism, zkSync等L2网络。
通过上述分析,读者们会发现各项核心服务并不依赖于特定区块链。只要在某条区块链上部署了区块链服务合约,并通过跨链将管理链上可信的服务实体(BoAT3 Oracle),数据(DID)或资产(DePIN生态Token等)在该区块链上实例化,该区块链就可以成为应用链中的一员,与其他基于DePIN App Chain L3构建的应用链所获得的能力几乎是一样的。唯一的区别在于,由于链的运行原理不同,这条区块链可能并没有结算层,或其结算层不是现有的管理链,因此该链无法在系统内与其他链进行无信任的跨链协作,但这可以通过其他跨链方式完成。
4. 示例
下面以一个简单的示例来说明怎样基于DePIN App Chain生态构建一个DePIN项目。例子中的各项基础设施,从IoT设备到数据平台的服务,都是成熟可购买的,但项目的设计,资源的整合,社区的运营和服务,需要项目方精心设计和落地。
该例子使用太阳能电池,构建一个去中心化绿色能源网络,该网络旨在促进清洁能源的生产和使用。项目方收集太阳能电池发电的数据,以此数据证明清洁能源的生产过程是可信的,并依据此数据发出绿证。绿证可用于碳排放抵消,比特币绿化等多种场景。除绿证收入外,项目方通过发行的Token鼓励矿工们构建该绿色网络。
太阳能电池的发电数据可通过连接逆变器的数采器获得。矿工们可以直接购买集成好项目方的数采器的光伏系统,也可以购买项目方提供的数采器后自行安装。项目方生产数采器时会使用已经内置了密钥的安全芯片,项目方委托供应商在链上生成DID,并写入公钥(项目方也可获得公钥后自行生成DID,并写入公钥)。
电池板发电过程中会不断产生发电数据,如实时发电功率,发电量等。数采器会对这些数据进行采样,并发送给通信模块;数采器中的安全芯片会使用私钥对这些数据签名,即生成PoPW,然后将PoPW发送给BoAT3 Oracle。BoAT3 Oracle根据收到的数据从DID合约中读取该电池板的公钥,通过公钥验证收到的PoPW的合法性。如果数据是合法的,则会提取出其中的有效数据部分,并使用自身私钥对其签名,表示对数据的认可,由BoAT3 Oracle签名的数据称为PW(Physical Work)。BoAT3 Oracle会将PW提供给项目方,项目方会将收集到的PW数据和原始PoPW签名批量保存至存储网络,如FIL,Arweave或云存储。
项目方会针对提供了有效发电数据的矿工进行奖励。奖励使用DePIN生态Token。为了降低链上成本,可能会随机抽取部分矿工发放奖励,因为抽取是随机的,所以从更长时间来看,所有诚实的矿工都会公平地收到奖励。奖励数量由矿工的发电量决定,会将发电量抽象为奖励权重,计算所有获奖矿工的总权重后,每个矿工按自己的发电量权重获取奖励。项目方在链下计算每位矿工获得的奖励,并通过Oracle发放奖励。但同时会将奖励计算相关的所有数据公开至存储或DA网络,供社区验证和挑战。发放奖励时在合约中提供的数据至少包括:
针对本次奖励发放,开启挑战期。在挑战期内,任何人均可针对奖励的公平性,正确性发起挑战,包括矿工获得的奖励数量是否正确,未获得奖励的矿工是否确实不该获得奖励,等等。这些挑战均在链上,使用Oracle提交的数据完成,而这些数据进一步都来自于矿工提交的PoPW,任何人都可以独立下载并验证所有数据和奖励的公平性。挑战期结束后,矿工可以提取奖励。
提取奖励后,矿工可以将获得的DePIN生态Token在CEX,DEX等兑换成稳定币或法币,补贴其购买和运行矿机的成本,形成正向经济循环。DePIN网络向终端用户提供服务,如碳排放抵消,绿化比特币等;这些服务的价格是稳定的,终端用户可以购买生态Token后,将其燃烧铸造成价值稳定的应用Token,使用应用Token购买各种服务。
在购买矿机的过程中,矿工也许需要资金进行初始投资的资助。可以使用DePIN App Chain生态的链上借贷服务获取资金,资金的回报可通过挖矿所得的生态Token或服务于终端用户所得的应用Token支付。由于挖矿等活动均在链上完成,因此资金回报可通过智能合约自动完成利润计算,将利润分账至资金方。
5. 总结
RollUp技术解决了区块链扩容难题,使得区块链可以在保持高度安全,可信的前提下,获得极大的性能扩展和极低的使用成本,这给DePIN应用的大规模落地创造了条件。
<!--EndFragment-->
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!