电子发烧友网 > 区块链 > 正文

智能合约为什么要是用工厂模式

2019年10月14日 09:32 次阅读

智能合约可以部署其他智能合约。这使工厂模式成为可能,在工厂模式中,您可以创建多个智能合同,每个智能合同只跟踪一件事,而不是一个跟踪许多事情的智能合同。使用此模式可以简化代码并减少某些类型的安全漏洞的影响。

在这篇文章中,我将向您介绍一个基于我们在最近的审计中发现的一个关键漏洞的示例。如果使用了工厂模式,那么漏洞就就减少了很多。

智能合约为什么要是用工厂模式

越野车智能合约

下面是一个智能合约,通过一个相当简单的界面销售WETH。如果您有WETH,你只需要批准这个智能合约出售你的代币,它将确保你得到正确的金额支付。只要批准充足的代币,任何人都可以任意购买WETH。

合约使用提款模式将付款交付给卖方,但合约的作者犯了一个严重的错误:

1// Technically this could sell any token, but we‘re selling WETH in this

2// example because then I don’t have to think about prices. 1 WETH costs 1 ETH.

3contract WETHMarket {

4 IERC20 public weth;

5 mapping(address =》 uint256) public balanceOf;

6

7 constructor(IERC20 _weth) public {

8 weth = _weth;

9 }

10

11 // Buy WETH from a specified seller. Seller must first approve WETH.

12 function buyFrom(address seller) external payable {

13 balanceOf[seller] += msg.value;

14 require(weth.transferFrom(seller, msg.sender, msg.value),

15 “WETH transfer failed.”);

16 }

17

18 // Used by a seller to get their ETH.

19 funcTIon withdraw(uint256 amount) external {

20 require(amount 《= balanceOf[msg.sender], “Insufficient funds.”);

21

22 // Whoops! Forgot this:

23 // balanceOf[msg.sender] -= amount;

24

25 (bool success, ) = msg.sender.call.value(amount)(“”);

26 require(success, “ETH transfer failed.”);

27 }

28}

(如果您想知道为什么代码使用.call而不是.transfer,请阅读“立即停止使用Solidity的传输()”)。

因为卖方的余额从未减少,所以欠任何以太的卖方都可以反复调用withdraw()来消耗每个人的合约。这是一个严重的漏洞。

修复这个bug,就像大多数bug一样,一旦你发现了它,就变得微不足道了。但在这篇文章中,我想谈谈如何通过使用工厂模式来减轻这个bug,即使我们不知道这个特定的问题。

现在让我们看一下更简单的WETHMarket合约版本。在这个版本中,合约只负责销售一个卖家的WETH。此合约与先前版本具有相同的bug:

1contract WETHSale {

2 IERC20 public weth;

3 address seller; // only a single seller

4 uint256 public balance; // no need for a mapping anymore

5

6 constructor(IERC20 _weth, address _seller) public {

7 weth = _weth;

8 seller = _seller;

9 }

10

11 // No need to specify the seller.

12 funcTIon buy() external payable {

13 balance += msg.value;

14 require(weth.transferFrom(seller, msg.sender, msg.value));

15 }

16

17 funcTIon withdraw(uint256 amount) external {

18 require(msg.sender == seller, “Only the seller can withdraw.”);

19 require(amount 《= balance, “Insufficient funds.”);

20

21 uint256 amount = balance;

22

23 // Whoops! Forgot this:

24 // balance -= amount;

25

26 (bool success, ) = msg.sender.call.value(amount)(“”);

27 require(success, “ETH transfer failed.”);

28 }

29}

尽管存在完全相同的逻辑错误,但此漏洞并不是那么严重。只允许一个帐户调用withdraw(),并且合约中存储的所有以太网都属于该帐户。这个错误的影响只是余额并不能反映合约中的真实余额。

这个bug是手工挑选来显示其优点的,但是这个bug代表了托管协议中的一大类bug。根据我审计智能合约的经验,这是发现关键漏洞最常见的地方之一。

托管背后的想法是,不同的资金必须分开存放,以确保合同始终可以涵盖所有欠款。获得托管权最简单的方法之一是将资金完全分成不同的智能合约。

您可以将工厂模式看作是一种深入防御的托管方法。

简单代码

单卖方版本的合约不仅有更强大的代管,而且更简单。我们去掉了一个函数参数和一个映射。在生产代码中,我们可能会更进一步,完全删除balance,而代之以address(this).balance。

因为我写合约是为了方便阅读,原来的代码已经很简单了。在现实世界的例子中,这种差异可能更为显著。从安全的角度来看,任何降低复杂性的机会都是一种胜利。

工厂模式

每个卖家都可以部署自己的Wethsale合约并从简单的合约中获益,但是这种方法有一个主要的缺点,恶意卖家可能会部署稍微修改过的代码版本,但实际上并没有传输weth。

即使像ConsenSys Diligence这样有信誉的公司审核了WETHSale代码,每个买家也必须验证他们购买的具体合约是否使用了那些确切的代码。

使用工厂可以解决这个问题。工厂确保每个部署的合约都使用相同的代码,并且它提供了一个简单的查找机制来查找给定卖方的单一合约:

contract WETHSaleFactory {

IERC20 public weth;

mapping(address =》 WETHSale) public sales;

constructor(IERC20 _weth) public {

weth = _weth;

}

funcTIon deploy() external {

require(sales[msg.sender] == WETHSale(0), “Only one sale per seller.”);

sales[msg.sender] = new WETHSale(weth, msg.sender);

}

}

潜在缺陷

使用工厂模式的一个主要缺点是价格昂贵。CREATE操作码目前的燃气成本为32,000。我们的特殊合约还需要另外两个SSTORE来跟踪WETH和卖方地址,每个地址需要20,000燃气。这比代码的原始多卖家版本至少多72,000气体。

另一个潜在的缺点是复杂性。在大多数实际情况下,工厂模式简化了现有的合同,但请记住,它还添加了一个新的合同:工厂本身。根据代码的不同,这可能会导致复杂性的增加。

在决定工厂模式之前,请仔细考虑变更的总体影响。

总结

1. 托管方面的错误是导致关键漏洞的一个重要原因。

2. 使用单独的智能合约可以降低这些错误的严重性。

3. 工厂模式以一种不可信任的方式实现了这一点。

4. 在采用工厂模式之前还要考虑潜在的缺点。

来源: 区块链研究实验室

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

人人都懂区块链(更新中)

人人都懂区块链系列是一套精心录制的一系列针对于零基础朋友,致力于让更多人了解区块链技术,比特币,以太坊,莱特币等数字货币
发烧友学院发表于 2018-03-16 00:00 6954次阅读
人人都懂区块链(更新中)

智慧城市的发展有区块链的功劳吗

将城市转变为“智慧城市”需要一项长期计划并整合各种技术,区块链就是其中之一。
发表于 2019-10-14 10:33 0次阅读
智慧城市的发展有区块链的功劳吗

Tether供应量与比特币价格之间的关系分析

ETH继续挑战BTC的每日交易费用的宝座。ETH每日费用在9月28日和29日短暂超过了BTC每日费用....
发表于 2019-10-14 10:31 0次阅读
Tether供应量与比特币价格之间的关系分析

区块链交易可延展性的重要性体现在哪里

可延展性是指在不使事务失效的情况下更改事务(TXID)标识符的能力。
发表于 2019-10-14 09:26 4次阅读
区块链交易可延展性的重要性体现在哪里

区块链以后会是人造的博格人吗

尽管在加密市场有很高的投机属性,但对于区块链技术本身, 抵抗是徒劳的,技术进步不由个人意志改变。
发表于 2019-10-14 09:20 5次阅读
区块链以后会是人造的博格人吗

区块链创业有哪些坑需要避开

区块链行业非常的混乱和复杂,每一天都会有新的东西冒出来,而且由于去中心化的属性,每个人都可以自由的推....
发表于 2019-10-14 09:16 14次阅读
区块链创业有哪些坑需要避开

基于区块链的数据经济什么是首位

由于区块链作为一种技术,本质上是分布式的,因此它不依赖于一个中心控制者。
发表于 2019-10-14 09:11 6次阅读
基于区块链的数据经济什么是首位

比特币期权是怎么一回事

期权、期货都属于衍生品合约,期权合约赋予持有人在某一特定日期或该日之前的任何时间以固定价格购进或售出....
发表于 2019-10-14 09:06 6次阅读
比特币期权是怎么一回事

比特币矿工对于BTC价格有什么影响

如果价格低于成本,那么生产就会放缓。如果价格高于成本,则可以通过产生和出售更多的产品来获利。
发表于 2019-10-14 09:02 9次阅读
比特币矿工对于BTC价格有什么影响

在应用区块链技术的时候需要注意的问题有哪些

用户群体的中心化程度或可决定技术的作用程度。如在比特币的用户环境中,用户群体是无中心的。
发表于 2019-10-14 08:58 12次阅读
在应用区块链技术的时候需要注意的问题有哪些

从通信历史看区块链是怎样的

拿互联网和移动互联网行业为例:计算机与互联网行业红利的上半场,主要利好的是整机商、光纤铺设、操作系统....
发表于 2019-10-14 08:55 13次阅读
从通信历史看区块链是怎样的

银行领域还可以怎样挖掘区块链的潜力

相比大数据、人工智能、云计算等技术,银行系对区块链技术一直保持着较为谨慎的态度。
发表于 2019-10-14 08:51 33次阅读
银行领域还可以怎样挖掘区块链的潜力

区块链在数字经济领域有什么影响

在企业互联网阶段,如何建立企业之间的共识和协同,区块链将发挥巨大的作用。
发表于 2019-10-14 08:46 14次阅读
区块链在数字经济领域有什么影响

去中心化的Dai稳定币是如何运作的

以太坊上的去中心化自治组织 MakerDAO的稳定币Dai,是目前最受欢迎的DeFi之一。目前,大约....
发表于 2019-10-13 17:30 14次阅读
去中心化的Dai稳定币是如何运作的

解决跨境交易顽疾的技术会是区块链技术吗

如果在边境保护工作中得到实施,那么区块链技术有望保障海关文件的实时可用性与不变性,同时节约原本繁琐不....
发表于 2019-10-12 17:56 47次阅读
解决跨境交易顽疾的技术会是区块链技术吗

为何犯罪分子首选还是比特币

犯罪分子利用加密货币的具体情况包括勒索软件、DDoS勒索、加密劫持和暗网市场。
发表于 2019-10-12 17:42 80次阅读
为何犯罪分子首选还是比特币

区块链可以给城市带来什么

区块链是自互联网诞生以来极为重要的科技和金融创新,它是多项技术的创新集成应用,具有数据公开透明、不易....
发表于 2019-10-12 16:31 386次阅读
区块链可以给城市带来什么

区块链可使跨境支付可以节约多少

不少第三方支付还处于无照经营的野蛮状态,极容易形成跨境支付行业劣币驱逐良币的现象。
发表于 2019-10-12 16:24 305次阅读
区块链可使跨境支付可以节约多少

区块链可以彻底的排雷吗

区块链可以帮助金融机构全链路,有效帮助银行控制风控,因此对防范金融操作风险有非常大的帮助。
发表于 2019-10-12 16:20 42次阅读
区块链可以彻底的排雷吗

区块链数据时代由谁来做主

区块链技术是实现“第二代互联网”愿景的重要途径。去中心化的架构可以解决目前数字资产的“私有化确权”和....
发表于 2019-10-12 16:17 67次阅读
区块链数据时代由谁来做主

东南亚房地产存在的问题如何利用区块链技术解决

区块链具有不可篡改的特性。当房地产商通过房之宝DApp将房屋信息上链,可以保证链上数据真实有效,任何....
发表于 2019-10-12 16:13 45次阅读
东南亚房地产存在的问题如何利用区块链技术解决

区块链抵押贷款可以用来干什么

区块链和 DLT 带来的数字转型将对抵押贷款行业产生影响,但可能需要一段时间才会显现。
发表于 2019-10-12 16:08 223次阅读
区块链抵押贷款可以用来干什么

区块链落地之后要做什么

在大型网游市场落地,其实有很多尝试。
发表于 2019-10-12 16:05 47次阅读
区块链落地之后要做什么

对于比特币最大的误解是什么

当前主流人群对比特币存在很多误解,包括比特币的主要用例,其他加密货币比比特币更适合做交换媒介和账户单....
发表于 2019-10-12 16:01 48次阅读
对于比特币最大的误解是什么

以以太坊为基础的金融业是怎样的一行业

尽管自区块链创建以来,以太坊的用户已经发现了许多区块链的用例,但似乎有一个用例让其他大多数用例黯然失....
发表于 2019-10-12 15:57 81次阅读
以以太坊为基础的金融业是怎样的一行业

持有比特币有什么优势

比特币作为抵押物的方式将为DeFi的整个潜在市场增加数十亿美元。前方的道路是漫长而艰难的。但是,我们....
发表于 2019-10-12 15:53 42次阅读
持有比特币有什么优势

可信执行环境TEE在区块链上有什么应用

可信应用可以和触摸屏,摄像头还有指纹传感器等外设进行直接交互,不需要通过REE提供的接口,所以更加保....
发表于 2019-10-12 15:45 40次阅读
可信执行环境TEE在区块链上有什么应用

出现了比特币网络拥塞怎么办

实现安全袋也需要升级比特币协议,不过可以通过向后兼容的软分叉进行。
发表于 2019-10-12 15:41 171次阅读
出现了比特币网络拥塞怎么办

区块链对于网络业务有什么影响

区块链应用于工业生产等领域的物联网,减少中心化设备网络的运营和信用成本,提高运营效率和工业资产利用率....
发表于 2019-10-12 15:37 133次阅读
区块链对于网络业务有什么影响

以太坊2.0阶段0将于2020年第一季度启动阶段...

Lubin认为Web 3.0可以通过以太坊区块链的无需许可(permissionless)和公开特性....
发表于 2019-10-12 11:08 94次阅读
以太坊2.0阶段0将于2020年第一季度启动阶段...

加密货币将推动所有去中心化金融产品建立在基于La...

Garzik表示,尽管稳定币具有相对的“成功性和可生存性”,但总体而言,区块链行业仍处于早期阶段,即....
发表于 2019-10-12 11:02 237次阅读
加密货币将推动所有去中心化金融产品建立在基于La...

以太坊智能合约中Merkle树的算法原型解析

Shrubs就提出了一种Merkle树的变种,每次添加一个叶子节点,只需要O(1)次存储更新。这种变....
发表于 2019-10-12 11:00 27次阅读
以太坊智能合约中Merkle树的算法原型解析

如何才能解决加密货币面临的三难困境

分散性(去中心化)是区块链具有的核心特点。传统金融系统是完全集中化的。客户将他们的资产控制权交给银行....
发表于 2019-10-12 10:58 27次阅读
如何才能解决加密货币面临的三难困境

区块链何时才能在大型网络游戏市场中落地

区块链大的市场架构划分就两块。2B和2C。2B是做企业服务,非常重。如果想给大的企业卖一套解决方案,....
发表于 2019-10-12 10:53 36次阅读
区块链何时才能在大型网络游戏市场中落地

哈希函数的特性以及比特币挖矿的技术原理解析

哈希函数不用知道输入信息代表的是什么意思,也无所谓信息的长度有多长,只要输入hash函数出来的都是固....
发表于 2019-10-12 10:49 73次阅读
哈希函数的特性以及比特币挖矿的技术原理解析

基于AI和DPoS共识算法的Velas区块链交易...

Velas区块链平台采用 AI 优化的神经网络来增强其共识算法。Velas 的目的是解决和修正大多数....
发表于 2019-10-12 10:46 45次阅读
基于AI和DPoS共识算法的Velas区块链交易...

比特币安全模型全面探讨

根据比特币用代码写死的货币政策,每个区块新铸造的币量会随着时间的推移而减少,最终在2140年达到0%....
发表于 2019-10-12 10:36 26次阅读
比特币安全模型全面探讨

DeFi浪潮推动了以太坊去中心化应用用户的大幅增...

本季度约有13.2万是基于以太坊的金融应用程序用户,使得DeFi成为迄今为止最受欢迎的dApp类别。....
发表于 2019-10-12 10:29 29次阅读
DeFi浪潮推动了以太坊去中心化应用用户的大幅增...

区块链可以避免成为割韭菜的工具吗

区块链的高冷最终让它面前的所有的技术都是渣,并且不屑于和互联网技术以及传统行业产生任何联系。
发表于 2019-10-11 15:47 47次阅读
区块链可以避免成为割韭菜的工具吗

区块链安全数据存储平台Factom PRO介绍

Factom PRO创始人Anton Ilzheev表示:“Factom PRO是一个独特的创新门户....
发表于 2019-10-11 10:57 32次阅读
区块链安全数据存储平台Factom PRO介绍

区块链将如何重塑广告行业

最终,这种炒作已经基本平息。是的,全球区块链技术市场预计将在2023年升至233亿美元以上,但我认为....
发表于 2019-10-11 10:52 65次阅读
区块链将如何重塑广告行业

什么是智能合约它的应用有哪些

“智能合约”这一术语是 1994 年由著名密码学家尼克萨博首次提出的,它是通过编程来准确高效地执行预....
发表于 2019-10-11 10:49 46次阅读
什么是智能合约它的应用有哪些

中本聪开发的第一个比特币钱包Bitcoin-Qt...

第一个比特币钱包是一个完整的客户端,这意味着你必须下载整个区块链的历史链接来同步优化这个钱包。但这本....
发表于 2019-10-11 10:45 44次阅读
中本聪开发的第一个比特币钱包Bitcoin-Qt...

ETH2.0的分片会影响以太坊可组合性的属性吗

分片内的交易跟之前一样。分片之间的交易仍然可以发生,且会很快,但它们会是异步的,使用收据的方法。通常....
发表于 2019-10-11 10:44 20次阅读
ETH2.0的分片会影响以太坊可组合性的属性吗

如何利用Argent钱包来保护你的密码学货币

Argent 会将你的资产存储在区块链上的智能合约里。你可以通过存储在手机里的私钥访问这些资产。如果....
发表于 2019-10-11 10:33 29次阅读
如何利用Argent钱包来保护你的密码学货币

可信计算框架TCF的基本工作原理解析

智能合约交易对手方之间无须相互信任,也无须依赖可信第三方手动验证合约事件,而是将合约条款编写成计算机....
发表于 2019-10-11 10:33 48次阅读
可信计算框架TCF的基本工作原理解析

如何采用有效抵押的区块奖励来缓解马太效应

Harmony 的整体架构与以太坊 2.0 类似,由信标链和分片链组成。分片作为一种区块链的拓展方案....
发表于 2019-10-11 10:26 34次阅读
如何采用有效抵押的区块奖励来缓解马太效应

数字石油ETH能被作为货币广泛使用吗

比特币( BTC )通常被称为“数字黄金”,而那些投资 ETH 的人士通常称其为“数字石油“。但是,....
发表于 2019-10-11 10:20 138次阅读
数字石油ETH能被作为货币广泛使用吗

如何才能让DPoS共识机制实现真正的去中心化

EOS公链所采用的DPoS共识机制,可以支撑公链进行高性能低延时的计算,而DPoS机制本身却不够去中....
发表于 2019-10-11 10:15 34次阅读
如何才能让DPoS共识机制实现真正的去中心化

去中心化金融协议InstaDApp是如何运行的

DeFi(去中心化金融)是当今技术发展最快的垂直行业之一。区块链架构,共识协议和经济范式的新发展产生....
发表于 2019-10-11 10:14 35次阅读
去中心化金融协议InstaDApp是如何运行的

比特币没有融资的原因是什么

一个真正的去中心化项目,一定是由内在价值驱动使项目有价格,最初的内在价值来源于各个生态方的贡献,而不....
发表于 2019-10-11 09:48 27次阅读
比特币没有融资的原因是什么

比特币和法币谁更稳定

比特币是为系统稳定性而设计的,而不是价格稳定性。
发表于 2019-10-11 09:44 53次阅读
比特币和法币谁更稳定

谁才需要匿名的加密货币

比特币从来就不是一种真正保密的加密货币。使用分析服务密文跟踪、链分析和晶体,BTC地址可以与IP地址....
发表于 2019-10-11 09:37 61次阅读
谁才需要匿名的加密货币

什么需要为区块链中断做准备

区块链还促进了社区的效率和自动化,因为它为所有参与者创建了一种通用的智能合约语言。
发表于 2019-10-11 09:32 30次阅读
什么需要为区块链中断做准备

许可区块链可以给银行带来什么益处

区块链本质上是在分发交易的身份验证方面,使其具有防篡改性,并省去了中间人。
发表于 2019-10-11 09:28 21次阅读
许可区块链可以给银行带来什么益处

区块链可以实现公平吗

DLT可以使金融世界更高效、更快、成本更低,并将系统中任何单个参与者所需的信任降到最低。
发表于 2019-10-11 09:25 174次阅读
区块链可以实现公平吗

区块链可以帮助我们退休以后有更多的存储吗

区块链是一个在线分类账,其中包含发生在那里的所有交易。
发表于 2019-10-11 09:21 16次阅读
区块链可以帮助我们退休以后有更多的存储吗

区块链对于营销有什么影响

区块链创建了一个分布式数据库,可以作为供求双方广告印象的单一来源。
发表于 2019-10-11 09:17 32次阅读
区块链对于营销有什么影响

比特硬币可不可以实现真正的去中心

BHD 全名为 BitcoinHD,比特硬币。顾名思义,该币是和计算机硬件硬盘紧密相关的一种数字加密....
发表于 2019-10-11 09:13 28次阅读
比特硬币可不可以实现真正的去中心

区块链应该怎样对待监管问题

比特币或者说区块链终于正式进入了“顶级权力机构们”的视线,伴随而来的一定免不了“合规”与“监管”二字....
发表于 2019-10-11 09:08 21次阅读
区块链应该怎样对待监管问题

智能合约对于区块链的发展有什么影响

“智能合约”这一术语是 1994 年由著名密码学家尼克萨博首次提出的,它是通过编程来准确高效地执行预....
发表于 2019-10-11 09:02 24次阅读
智能合约对于区块链的发展有什么影响

未来手机该怎么使用?

每一次,我们都会发现实施技术的新方法,同时充满灵感,但环顾四周,看不到任何实际的变化。谈到使用区块链,我们应该...
发表于 2019-09-11 11:51 226次阅读
未来手机该怎么使用?

区块链从不忘事儿

俗话说,大象从不忘事儿。 区块链亦是如此。 内存是区块链的核心,它是一种以关键方式构建的突破性计算机编程语言,...
发表于 2019-07-29 06:08 197次阅读
区块链从不忘事儿

2018年世界杯人工智能、区块链预测冠军大揭秘

四年等一回,2018年俄罗斯世界杯赛开幕在即,从6月14日至7月15日,64场比赛轮番来袭。哪个球队会夺冠?谁将成为最佳射手...
发表于 2019-07-24 00:41 271次阅读
2018年世界杯人工智能、区块链预测冠军大揭秘

拉勾农场APP模式源码软件平台开发定制

农场游戏app模式开发定制系统设计,农场游戏软件开发,农场复合游戏系统开发设计,农场种植游戏系统开发设计,农场种植...
发表于 2019-07-22 11:56 398次阅读
拉勾农场APP模式源码软件平台开发定制

数字资产交易平台搭建交易所市场

区块链技术作为一种分布式共享数据库技术正在方兴未艾,其分散性、透明性、公平性和开放性与互联网的理念是一致的,它...
发表于 2019-07-20 11:20 318次阅读
数字资产交易平台搭建交易所市场

如何在Nextcloud中集成基于区块链的存储Sia

我使用LAMP做为NextCloud的运行环境-MariaDB, PHP-FPM 和 Apache(Ubuntu 16.04)。 (一)配置 LA...
发表于 2019-07-10 06:18 210次阅读
如何在Nextcloud中集成基于区块链的存储Sia

区块链对我们的生活有什么影响

未来是光明的,它是由区块链驱动的。 区块链技术已经通过颠覆性的应用程序改变了金融行业,但金融业只是冰山一角。...
发表于 2019-07-10 04:20 255次阅读
区块链对我们的生活有什么影响

全球十大最值得期待的区块链钱包

钱包一个怎么够用,2018十大区块链钱包
发表于 2019-04-09 15:24 733次阅读
全球十大最值得期待的区块链钱包

区块链应用涉及到哪些算法?

区块链技术的应用涉及到哪些算法模型?
发表于 2019-03-27 11:21 611次阅读
区块链应用涉及到哪些算法?

第四次工业革命——区块链技术

第一次工业革命始于18世纪的水蒸汽动力,第二次工业革命始于电力,第三次工业革命始于互联网,后面两次工业革命都发生...
发表于 2019-03-08 11:27 995次阅读
第四次工业革命——区块链技术