密码极客 | 国内最权威的区块链技术创投社群

Nervos:链外扩容 + Layer 2才是区块链的未来(下)

云上春野云上春野 2019-05-28 796 次 收藏0

5月14日晚20点整,密码极客邀请到了Nervos的联合创始人兼COO吕国宁先生做客“密码极客大咖直播间”,为大家详细讲述了Nervos 的链外扩容与Layer 2设计。吕国宁先生曾是全球最大以太坊钱包imToken的CTO。

以下为吕国宁先生的分享全文。

技术进展:Token Economics

下面,我想跟大家分享的是在分层模型当中,我们针对Layer 1涉及的加密经济学,也就是我们的Token 经济模型。

在讨论经济模型之前,我想跟大家先讨论一个问题,大家觉得经济模型对于一个区块链项目来说,它的目标是什么?

我们可以观察到现在绝大部分区块链的主网络,它经济模型设计的主要目标都是为了帮助共识的达成。这个怎么解释?经济模型的设计会去激励网络中所有节点去达成共识,或者更高效地达成共识,从而去获得一笔奖励。如果有人在里面作恶,那么经济模型的作用就是惩罚作恶者,或者不给作恶者奖励,这种激励好人惩罚坏人的方式,就是现在所有经济模型在区块链网络当中所扮演的主要角色。

但如果我们在考虑下一代区块链经济模型设计的时候,经济模型设计的主要功能仅仅是为了帮助这个网络达成一次共识吗?

我们觉得Layer 1 经济模型设计的主要目标是去想办法通过经济模型和技术手段去帮助Layer 1 去支撑一个更加繁荣的加密经济生态。

所以它的经济模型不仅是帮助这个网络去完成共识,还需要在长久的运行过程中去激励网络所有参与方更好去给这个网络去贡献价值,并且可以去吸引到更多的用户、开发者和参与方参与进来,最后能够去达到一个繁荣的加密经济生态。

我们归纳一个好的经济模型,要有三个主要的目标:

1、保证这个网络长期的安全和持久稳定的运行;

2、协调所有的参与方,让大家的价值和利益能够对齐;

3、帮助这个网络完成价值的捕获。

先说第1 点,经济模型的设计如何能够保证主网络长久安全稳定的执行?

在这里,我想跟大家谈一个现有经济模型设计当中,在目前主网络中越来越重要的一个问题——状态爆炸问题。

不管是比特币还是以太坊或者其它的网络,其实都存在一个状态爆炸的问题,目前大家都会针对计算进行收费,但是不会对存储进行收费,不管是计算还是存储,都是网络当中的一种资源。

但计算资源和网络资源有一个明显的区别,计算资源是一种瞬时资源,或者可以说是可再生资源,而网络资源其实是一种不可再生的持久化资源。当你使用计算资源的时候,你只是为了这一秒的计算资源付费,到下一秒的话计算资源又会再生出来,但是如果你存储了数据之后,到了下一秒,这个数据是不会删除的。

这就导致了一个问题,在现在网络当中,我们每次产生一笔交易,并且要在主网络上写入一笔数据的话,我们只为这次数据的写入支付一次费用,然后网络就会长久地把这些数据存储下来,每个节点都会帮你存储一份这种数据,而且无论这个数据存储的时间有多长,你都不用再为这些数据去额外的付费,但是节点会长久的保存。

如果这个问题不加以控制的话,大家就会看到这个趋势,任何一个网络它的状态空间逐渐的增长,而且是无止境的增长。

从经济学角度去考虑区块链状态爆炸的问题,其实跟经济学当中公地的悲剧问题有关,即公共资源如果在不加以约束和管理的情况下,每一个参与方都会倾向于最大限度的去使用公共资源,最后就会导致这个资源非常快的消耗殆尽。

而在目前这一代区块链中,我们使用存储的资源的时候,只付一次性的费用,而不需要额外付费。

所以这个模型导致的问题随着时间的推移会越来越严重。而这个状态爆炸的问题,它会带来一个很明显的问题——去运行一个全节点的成本越来越高。

当运行全节点的成本越来越高,就会导致网络当中的全节点的数量越来越少。当网络中的全节点数量越来越少,这个网络的安全性和它的这个可持续的运行的特性是会下降的,所以在经济模型的设计的时候的话,你必须要去考虑状态存储的问题。

下面我想跟大家讨论一个关于价值对齐方面的问题,关于价值捕获。目前的智能合约平台都会有一个问题,就是智能合约上的Native Token,没有办法去捕获智能合约平台上所发出来的资产所带来的价值。

拿以太坊举例,其Native Token (以太币),它本身的核心作用是用来给这个交易和合约的调用去支付一定的交易手续费。

只有网络比较拥堵的情况下,才需要去支付更高的交易手续费。但网络所需要的交易手续费是非常少的,所以其实只需要很少的一点,以太币就可以去支撑这个网络上所有交易手续费的支出,以太坊上的矿工是通过收取出块奖励和交易手续费被激励的。

在以太坊上发行的ERC 20 Token 的价值跟以太坊的Native Token,其实并没有什么直接关系。

也就是说,在以太坊上,Token 价值无限的增长,也不会带来以太币价值的增长。因为以太币内生的价值属性,只是去支付矿工计算的成本,所以他们跟ERC 20 Token 价值的增长没有直接的关系。

如果这样去看的话,所有的以太坊上的ERC 20 Token,其实是变相的去共享了以太坊的安全模型,也就是以太坊上所有矿工提供的安全性。

如果以太坊上面所有的Token 享受了以太坊上矿工提供的安全性,而以太坊的矿工只能通过以太币来得到激励,这样是很难去保证这个网络长久安全性的。

因为当以太坊上Token 的价值越来越大的时候,如果这些Token 不会带来以太币价格的提升的话,这个网络会变得越来越非危险,或者越来越有被51% 攻击的可能。

当前主流的这些网络,都没有在用户Token 价值增加,进而提升Native Token 价值,从而进一步去激励矿工提供更好的安全性这个问题上给出比较好的答案。

从经济模型设计层面上来讲的话,我想谈的一个问题叫做饿死的Layer 1,是什么意思呢?

如果一个网络上的矿工除了出块奖励作为经济基激励之外,还要依赖于交易手续费的话,那么当这个网络产生的一些Layer 2 的方案,比方说闪电网络,它可以把主网络上大量的交易放到了Layer 2 的网络上去操作,而Layer 2 上大量交易所带来的价值,或者说交易手续费是跟Layer 1 上的矿工是没有太大关系的。

所以我们会预见到,在未来如果随着Layer 2 技术越来越成熟,Layer 1 的矿工将更难收到手续费。

基于上面这些关于状态爆炸问题、Native Token 如何捕获价值的问题,以及Layer 2 的发展会导致Layer 1上的矿工收不到手续费的这些问题,我们都有一些考量,并且提出了一套我们自己的经济模型设计。

我们对CKB 进行经济模型设计的时候,其实充分考虑了现有经济模型设计中的种种问题,包括但不限于上面提到的三个经济层面的问题。

当用户持有CKB,其实代表的是用户持有一定的存储空间,你可以用这些存储空间去开发你的应用,也可以交易。同时我们引入了非常新颖的一套机制,叫做Nervos DAO,,就是当用户要放弃掉自己CKB 的流动性,同时也不需要这些CKB 去换取存储空间的话,它可以把这个CKB 存到Nervos DAO 当中,而Nervos DAO 将会为存储CKB 的用户支付一定的利息。

通过一整套经济模型的设计,我们其实是把开发者、矿工以及用户每一种参与方,他们的价值和利益都进行了充分的考虑,并且对齐,所以如果大家有进一步了解我们经济模型的兴趣的话,欢迎大家去看一下我们前段时间发布的经济模型的提案,因为展开讲会有比较大的篇幅,我就不展开讲我们的经济模型设计了。(https://github.com/nervos-community/RFC-CN/blob/master/README.md)

NC-MAX

最后我想提的我们的底层技术——我们的共识算法。

前段时间我们的研究员张韧博士在IEEE S&P 发表了一篇关于共识算法定量分析的一篇论文,S&P 是一个国际的安全顶会,我们非常开心,也非常恭喜我们的张韧博士,Nervos CKB 的共识算法也是由张韧博士设计的。

我们的Layer 1 追求的是去中心化和和安全性,在考察了现有所有可选的共识算法之后,我们认为最符合Layer 1 的共识算法依然是PoW 共识算法。

所以 Nervos Layer 1的最底层所使用的共识算法依然是PoW 算法,我们给它起了一个名字叫做Nakamoto Consensus Maximum。简称NC-Max 算法。

NC-Max 共识算法的特点是在不牺牲安全性和去中心化的特点下,尽可能的去优化性能,去压榨底层硬件和带宽中的每一滴资源。

在这里面其实有几件事情可以做:

首先我们在设计共识算法的时候,我们非常强调的是带宽的利用率,从带宽利用率的角度去分析,达成共识算法过程消耗带宽会有三部分:

1、达成共识的计算所需要消耗的带宽;

2、节点之间互相传输数据所需要消耗的带宽;

3、未被使用浪费掉的带宽。

为了优化我们的共识算法,我们所采取的策略是使用更加高效的哈希函数去实现我们的共识算法,从而在不牺牲安全性的情况下,去降低计算部分的带宽消耗,同时我们可以让节点之间通过两段式提交和一些其他手段去降低节点之间传输的数据量,从而进一步的最大化去利用我们的带宽。

我们的共识算法是尽可能减少浪费掉的带宽消耗,而去把带宽充分的打满。为此我们的共识算法是基于孤块率来设计的模型,而不是基于固定的出块时间。

基于孤块率来设定我们的共识算法而不是基于固定的出块时间,是我觉得非常有趣的一点,值得跟大家简单说一说。

基于孤块率这种方式来动态调整我们出块时间的共识算法,最大的特点就是它可以尽可能的利用带宽。比如说如果我们认为当出块率低于5%,是一个比较安全的网络。当孤块率低于5% 的时候,我们可以减少出块时间,可以出更多的块。但如果我们的孤块率高于5% 的时候,我们认为这个网络可能变得不稳定,我们可以延长网络出块时间,这样就可以始终维持网络的孤块率在一个稳定的Level 上。

基于这一点会带来一个很大的好处,如果未来一年全球平均带宽比今天的带宽增加了1 倍,我们可以在不做任何的调整的情况下,自动让我们的共识算法的TPS 随着全球平均带宽的增长而增长。

今天针对Nervos 过去一年多所取得的技术进展的分享,大概要接近尾声了,最后总结一下。

在过去一年中,我们基于分层的架构设计了Nervos,实现了一个更加灵活和强大的基于Cell的账本模型,一个基于真实CPU 指令集,即RISC-V 指令集实现的一个非常灵活,非常适合Layer 1 的VM。同时我们为了让Layer 1可以长期的稳定的运行,我们设计了一个独特的经济模型,同时我们有了一个充分利用带宽的共识算法。

目前我们测试网已经上线,大家如果对挖矿感兴趣可以访问官方文档 (https://docs.nervos.org/getting-started/run-node)跑一下节点,挖矿过程中如果有疑问可以在我们论坛上随时提问。( https://talk.nervos.org/c/45-category/41-category)

问答环节

互动嘉宾

贺鹏飞

嘉宾介绍:Kaleido公有链技术合伙人,前迅雷技术总监,十余年互联网技术研发经验。任职迅雷期间打造会员离线下载业务,覆盖500万付费用户,后在网心科技基于百万级玩客云节点打造出分布式存储平台TCFS。

贺:刚才您提到一个思想,我觉得很有趣,就是关于以太坊上面的ERC 20的 Token 的价值并没有被以太坊的矿工所共享。那么Nervos 是怎么解决这个问题的?刚才吕国宁您发的资料里面,我看了有一点,是收取二级发行的状态租金来进行的一种利益共享,这一点可不可以请您再进一步的做一下说明?

吕:好的,这是一个好问题,也是一个关键问题。我觉得我可以稍微展开讲一下,在Nervos 所设计的Layer 1 底层网络当中,Layer 2 产生的价值如何捕获到Layer 1上去的。

你的这个问题当中提到了基础发行和二级发行,其实基础发行和二级发行,跟Token 价值的捕获应该分成两个问题来讨论和考虑。

Nervos 经济模型设计当中的基础发行,其实是一种激励模型,它会帮助网络在早期阶段让矿工可以获得比较大的出块奖励的收益,同时这个基础发行每四年会减半一次。

而二级发行是为了解决矿工的一个长期激励的问题,也就是说当有Layer 2 的网络参与的过程中,产生一个叫饿死的Layer 1的问题,当矿工不能够完全的依靠交易手续费来获得足够的经济激励的时候,我们必须让这个网络可以持续的给矿工激励,而二级发行就是去解决这个问题。

你前面的问题,最重要的部分是用户自定义Token 在Layer 2 上产生的价值该如何捕获?

为了解决这个问题,我们的核心设计的原则是:用户必须在Layer 1 上发行自定义的Token,当用户去发行它的Layer 1 Token 的时候,他必须要去使用我们的Native Token 去提供他的Layer 2 Token 的存储空间。也就是说用户发行的自定义Token 是对我们的原生Token 有一定的功能性需求的。

当用户把自己在Layer 1 发行的自定义Token 映射到Layer 2 上去交易的时候,这些Token 实际上还是锁定在Layer 1 上的,并且占有空间,而占用空间的这部分Token 实际上是享受了Layer 1 矿工的算力保护的,同时它也在不断的激励矿工。如果Layer 2 Token 数量持续的增加,交易持续增加,它对Layer 1上状态空间的需求也是持续增加的。而这部分持续增加的需求空间最后都会转化成对Layer 1 Native Token 的消耗,而Native Token的消耗最后都会转嫁到给矿工更多的收益上。

当Layer 2 上的Token 对Layer 1 的需求,最后能够转变成对矿工的激励,矿工是愿意去增加更多的投入,或者带来更多的算力去保护这个网络的。当网络的底层安全性持续的增加的时候,增加的网络安全性,实际上是Layer 2 对在Layer 1 安全边界进一步的扩张,也就是Layer 2 的经济规模在Layer 1 上所质押的这些空间的价值在增加。

基于这样的循环,在Layer 2 上的经济的增长,会拉动对Layer 1 空间存储的需求,空间的需求会让矿工的收益增加,而矿工的收益增加会带来安全性的增加,而安全性的增加会进一步的刺激Layer 2 上应用的安全的边界的增加,最后大家会发现利益是全部对齐的。

所以Layer 2 的价值增长的时候,最后会体现到Layer 1 上Token 的价值增长,矿工的算力的增加,最后Layer 2 上的价值会被捕捉到Layer 1 之上。

这个循环听起来像是:由Layer 2 创作的价值到矿工再到安全,最后再到Layer 1 的价值的增加。但它的核心是你一定要设计一种用户发行的Layer 2 的Token,对你的Native Token 既有一定的需求,而这个Native 的Token 的需求又跟矿工的价值正向联动的这样一种激励机制,这样就能保证Layer 2 的价值增长,会被捕捉到Layer1 上面去。

贺:非常感谢这么详细的讲解。这个逻辑确实是会较复杂。那么您刚才提到另一个想法,我觉得也非常棒,就是利用出块率去调整出块时间,从而充分的利用带宽,能使得我们的出块时间适配带宽的增长。对于区块链来说,带宽资源应该是比存储更奇缺,或者是更重要的一个资源。那么为什么会选择存储这个方向做 ,而不是针对带宽这个点去做呢?

吕:至于为什么选择基于存储空间作为资源的限定条件来完成Token 的定价,并且设计整套的Token Economic 其实我在前面在介绍经济模型的时候提到了一点点,那我就借这个问题展开讲。

其实现在我们知道比特币和以太坊两种主流链,其实就是利是在用带宽和CPU 资源在定价,而我们选择存储空间定价是跟这两种类型的资源完全不一样的。在我们看来,资源总共就分两种,一种叫做可再生资源,另外一种叫做不可再生资源。

CPU 和带宽其实都是可再生资源,而CPU 和带宽其实从某种意义上来说是有点等价的。拿比特币举例,比特币就是一个基于带宽资源定价的一个定价模型。大家知道比特币每十分钟会出一个块,这个块它的大小只有1 M,但是其实它的资源定价模型就是基于带宽的。

所有在比特币上交易的用户,其实本质上支付的手续费是一个叫做打包交易权的费用。就是如果有人愿意支付更高的费用,矿工会愿意去为更高的矿工费的交易去打包,而矿工费用比较低的交易,矿工就会倾向于不打包这种交易。

矿工每十分钟只能打包总量不超过1 M 的交易,其实最后就形成了费率的拍卖市场,大家拍卖的是打包交易权,就是说人为地限定了带宽只有1 M 这么小,然后围绕这个带宽,让资源变得足够稀缺,才能够有比较高的价格。

而以太坊限定的是每15 秒钟出一个块,但每个块里面只能包含800万 的Gas。而这800 万的Gas本质上是计算资源,而这个计算资源本质上也是对手续费形成了一个拍卖市场,愿意支付Gas 费用更高的交易会比较容易地打包。不管是CPU 还是带宽,这两种资源并不那么稀缺,也就是说每一个用户在这一秒钟所支付的带宽,或者说是CPU 资源到下一秒钟,都会再生出来可以继续使用。

现在,不管是比特币还是以太坊,比特币现在还好,他们存储资源的消耗量是非常巨大的。但如果你通过存储资源去限定的时候,你会发现你很难设计出既兼顾可再生资源,又同时兼顾存储这种不可再生资源的定价模型。意识到这种基于可再生资源和不可再生资源的定价模型,两种模型在一个经济系统中很难去兼顾的时候,我们就要问自己一个问题,到底应该对哪一种资源进行约束,并且基于这种约束去定价会更为合理?

这个没有优劣和对错之分,更关键的是取决于你的资源是被使用在什么地方,而我们所设计Layer 1 这层的核心是全局共识,并且把达成全局共识的状态存储下来,所以我们认为在达成全局共识并且存储在Layer 1 上,它的存储资源是要比可再生的计算和带宽资源更加稀缺的。而只有围绕真正更加稀缺的资源去设计的经济模型,才能够让经济模型更高效,并且对资源的使用更经济,或者说对资源的约束效用更明显。

所以我们最后认为真正适合Layer 1 经济模型的设计是:使用存储资源作为限定是最终的也是唯一的选择。

但围绕不可再生的存储资源的经济模型设计其实有很多的挑战,展开讲的话有很多点,其中有一个很核心的点是你需要用一个好的机制去让大家存储更高效的或者价值密度更高的数据。而且我们还让这个不可再生资源具有一定的自我协调能力。

这个自我协调能力简单地说,是假如Token 价格上升了,那么一些低价值的状态空间,即价值密度比较低的这些空间,是可以把这些数据删除掉,然后把Token 释放出来。当Token 释放出来以后,它重新的流入到了这个市场,增加了供给,那么这个时候价格的上升将会被抑制。当Token 的价格下降的时候,可能会有一些低价值密度的数据,会被低成本的存储下来,这样它减小了供给,会让价格有一定的上升。

所以基于存储空间的这种自适应机制会带来一些有趣的好处。

随着价格的上升,人们会倾向于去存一些高价值密度的数据,或者说释放出一些低价机密的数据,这样会平抑掉Token 价格的波动。当然Token 价格最终还是由供给和需求来决定的,但是在短期之内,让一个价格相对能够有机去平抑它的波动性,跟它相对稳定的话,对于开发是一件比较好的事情。

因为当价格巨大波动的时候,开发者是没有办法去做出一些中长期的规划的,而如果不能去做中长期的规划的情况下,其实是抑制了网络的经济体的发展。所以对于我们来说,设计一个好的经济模型去鼓励更高价值密度的数据存储,然后去维持这个资源的稀缺性和高效的使用是我们的目标。

社群提问

1、RISC-V VM 对比SGX 封装的WASM 有什么优点?Nervos 在Layer 2 友好兼容方面大概做了哪些设计?

吕:我认为不能脱离需求简单的评价SGX封装的WASM 跟RISC-V 的异同,对我们来说,我们需要的VM 设计必须满足我们自己的Nervos 作为Layer 1 的定位,包括:灵活性,运行期透明性,以及可以精确的计算运行期开销。除此之外我们希望VM 能尽可能的简单,基于RISC-V 指令集实现的VM 除了满足我们的需求的同时,还带来了一些额外的特性,包括精简性,模块化,支持广泛,成熟等特性,结合Nervos 的Cell 模型可以提供灵活强大的编程能力,并且能最大限度降低对通过硬分叉增加功能。

相比WASM,我们在选择VM 设计的时候充分考察并论证过,我们认为有几个点导致了我们最终选择了RISC-V 而不是WASM。首先WASM 无法满足我们需要一个合理的运行期计算开销的模型,这直接影响了我们的经济模型设计,因为经济模型设计中,我们必须对计算所消耗的开销精确计算并定价,而WASM 由于引入了JIT 的原因,无法实现运行时精确计算开销。

第二个关于WASM 的问题是成熟度,RISC-V 从2010 年开始设计,在2011 年发布第一版规范,2012 年出现基于RISC-V 构建的硬件;而WebAssembly 出现于2015 年,2017 年发布MVP,相对来说,RISC-V 会比WebAssembly 更加的成熟,所以至少在目前阶段,我们觉得使用WebAssembly 并不是CKB-VM 最好的选择。

关于Layer 2 方面友好兼容性的设计,我也简单回答一下。

在分享中我回答了Nervos 选择的技术方向时链外扩容,而非链上扩容,是因为我们看到未来区块链的主要技术发展方向是Layer 2,以及为Layer 2 设计的Layer 1。

而针对一个更好支持Layer 2 的Layer 1,我们做了以下设计:

一个安全的共识协议,而且范围尽可能的大, 因为Layer 2 放弃了共识范围换取性能,所以Layer 1 需要承担安全和去中心化的职能,基于PoW 的Nakamoto Consensus 正是这样一个协议,这是唯一一个在现实环境中经过验证的全球共识,于是我们针对Layer 1 设计了一套性能优化的给予PoW 的共识协议NC-Max,这套共识协议可以在不牺牲安全性的基础上,压榨出网络带宽的所有潜能。

Layer 1 需要验证各种Layer 2 的状态,需要拥有一个强大的可编程能力的虚拟机,以支持各种状态验证逻辑,这意味着我们需要一个强大的编程模型(状态模型+虚拟机),我们引入了基于RISC-V 指令集实现的虚拟机,来满足Layer 1 的各种需求。

在Layer 1 这一层,基于Cell 编程模型的灵活的状态存储能力,结合Nervos CKB-VM 虚拟机,可以方便的支持各种密码学证明,让Layer 1 充当Layer 2 的“法院”的角色,并且可以非常灵活的增加新的密码学算法而无需硬分叉。

一个合理设计的经济模型,对齐网络上参与的各方价值和利益,保证网络长久安全可靠运行。

2、如果Dapp 跑在与Nervos 合作的Layer 2 项目上(如Celer),那Dapp 中流通的代币是Layer 2的,还是Nervos 的呢?如果是Layer 2 的,在Nervos 上是如何结算的?

吕:首先这个问题的前半部分,我们之前提到过Nervos 上可以发行用户自定义资产,这一部分和以太坊是非常类似的。Token 是发行在Nervos 的Layer 1 上,由Layer 1 保证资产的安全性。在需要的时候,可以通过一定的方式映射到Layer 2 上获取更好的交易速度和用户体验,Layer 1 通过智能合约的机制设计保证Layer 2 出问题的时候能够做仲裁,保证资产安全性。所以我们会说Layer 1 for preservation,Layer 2 for transaction。

关于后半部分的问题,Layer 2 有很多种方案,如以Lightning Network、Celer Network 为代表的State Channel (状态通道)方案,Plasma 为代表的侧链方案,以及以Truebit 为代表的链下计算方案,当然现在有Plasma 和State Channel 混合的方案,如我们的合作伙伴Alacris。

我这里以State Channel 方案举例子。资产发行在Layer 1 上,然后存入到State Channel 在Layer 1 上的合约,映射到State Channel 上获得更好的用户体验。在State Channel 中交易是非常迅速的,每进行一步交易都会更新新的状态,如描述参与通道各方的资产余额。在交易结束,通道关闭的时候,最新的状态会被递交到Layer 1 上,根据这个状态进行结算。Layer 1 上的智能合约保证用户不会作恶,如提交错误的状态。

Plasma 也是类似的方案,但是由于Plasma 更加复杂,会设计更复杂的推出机制,但是本质是一样的:用户将Layer 1 上发行的资产映射到Layer 2 上获取更好的用户体验,结束的时候根据机制的设定将资产撤回Layer 1 进行结算,Layer 1 上的智能合约保证资产的安全性。

 

密码极客是一群来自前阿里、蚂蚁金服的技术人员与阿里创业帮一起发起的区块链技术创投社群,也是杭州最大的区块链技术创业社群,截止5月,社群技术人员超过2000位,社群成员超过8万,孵化合作阿里系区块链技术项目超过30个。扫描二维码加入我们。

本文系作者个人观点,转载请注明出处!
喜欢 0
支付宝扫码打赏
微信打赏

相关文章

更多

发布评论

共0条评论