快好知 kuaihz

tb电子商务推广实训标题优化,小白也能懂的Web3技术入门指南

写在前面

一直酝酿着要写这样一篇文章。这是一篇写给非技术同学看的技术文。但本文企图做得比大多数科普文更深入一些:我们探讨以太坊的技术本质,希望让具有大众计算机使用水平的同学对以太坊的技术框架有一个初步的明确概念。

如读者不是只想了解几个时髦的Web3词汇作为谈天的资本,而是准备投身拥抱Web3,那么无论本职工作是否做技术,能对以太坊的底层原理有本质性一些的理解,肯定不是坏事。

作者开始深入Web3和以太坊的时候,作为技术出身的人, 也深感这个世界众多基础概念的全新性。

当然,也见过一些才学过人的朋友,比如团队的产品经理帅哥,从零入门到成长为Web3区块链的专家完全无障碍,不仅做得一手好产品设计,还能冲在最前线替技术部门做技术难点攻关。

但这样的人实在太少了。对于大多数人,作者认为Web3的入门学习曲线可能是比较陡峭的。许多人或许还停留在知其然不知其所以然的阶段。

因此,萌生了这个想法,写一篇给所有非技术背景而需要真正理解Web3区块链的朋友们,把非技术背景的朋友们值得了解的技术知识点, 用一种能听得懂的方式讲出来。写这样的技术内容,还指望写得深入浅出不枯燥, 挑战真的很大。但如果它确实小小帮助了那些不做技术的朋友们更深入的理解了以太坊,本文目的就达到了。

以太坊是一个计算机

以太坊是什么?

当然,已经有很多的文章讲以太坊,读者多少了解过的话,应知道以太坊是第二代区块链网络(有别于第一代比特币网络),以太坊的通用货币叫做以太币。在以太坊之上能运行以智能合约为基础的分布式应用(dapp)。

先看看百度百科上以太坊的词条:以太坊(英文Ethereum)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供去中心化的以太虚拟机(Ethereum Virtual Machine)来处理点对点合约。

这个解释没问题。大家也都知道以太坊是一个公共区块链平台。

但如果从技术角度深入一点点去理解以太坊,以太坊的本质本质,可能会让读者有些意外:以太坊本质上是一个世界性的通用计算机。而基于它的全球分布式特性,它无疑是世界性的。

为什么说以太坊是计算机?

以太坊的缔造者们从一开始就希望把以太坊网络打造用于通用计算目的。这是一个非常美好的设想:使用分布式网络构建一个全世界人们都可以参与的通用计算系统。注意,和现在的主流互联网体系不同,以太坊分布式网络是统一的单一整体。在计算机科学上,我们说以太坊整体是一个图灵完备的状态机。

“图灵完备”这词太学究了,读者只需了解,这代表了可以进行通用计算的能力。这点以太坊和第一代比特币网络是完全不同的:比特币网络没有通用计算能力。

另外,所谓“状态机”又是什么呢?

这个更好理解,用个人计算机做类比:当计算机运转时,CPU从内存载入指令和数据进行运算,计算完毕后把中间运算结果保存在内存(更新“状态”),然后进行下一次的载入和计算。类似这种需要保存状态的逻辑机器就是状态机。

尽管上面的解释把计算机的运行方式做了特别简化的描述,但现在的计算机系统本质上就是一个“计算-保存状态-再计算”的所谓图灵完备状态机。

那么以太坊呢,说它是一个通用计算机,也就是说以太坊整体上也是一个“计算-保存状态-再计算”的逻辑机器。

只是和个人计算机把状态保存在机器的内存(进而记录在硬盘) 不同,以太坊的“状态”,记录在分布全球的数以万计的节点上。

以太坊的突破性创新在于,它把存储程序计算机这样的通用目的计算架构与去中心化区块链相结合,因此创建了一个分布式的单体状态世界计算机。

无论以太坊的程序运行在任何地方,都能够产生一致的状态,通过全体共识规则确保数据正确和安全。

以太坊的数据记录方式是在每个节点上都保存同一份信息。

也就是说,任意一个以太坊节点, 都记录着以太坊网络的全部信息。特别形象的,这样的节点叫做“全节点”。这意味着以太坊网络的全部状态信息都完整同步在每一个节点上。

只要不是所有的全节点同时被摧毁,以太坊就可以重生。这是多么强的生命力。

要装下以太坊整个网络的信息,全节点需要有多大呢,这个量级远比读者想象的要小得多:今天,以太坊全部区块信息的总大小是345GB。这个容量相对于今天个人计算机动则好几个TB的硬盘容量实在是小意思。

以太坊的总信息容量每天都在不断的增加,但速度不算特别快,因为在以太坊网络记录信息需要支付非常不菲的费用,这也是以太坊的重要特点:所有的运算操作和数据记录都是要花真金白银的。

前面提到,“图灵完备”这个词描述了以太坊系统的通用计算特性。以太坊可以跑用户定义的通用代码,这些代码就是所谓的智能合约,这是以太坊区别于第一代比特币网络的根本创新。

正由于智能合约的支持,以太坊可以完成个人计算机所能完成的通用计算任务,从计算机科学理论看,以太坊就是通用计算机,也就是那种“计算-记录状态-再计算”的状态机。

既然说以太坊是“状态机”,不妨继续问两个问题:什么时候以太坊的状态会更新呢? 以太坊是不是像《终结者》里的天网那样自动运行呢?

答案或许又让读者意外了。以太坊虽然是世界计算机,全节点遍天下,但它的运行机制是彻底不并行的。以太坊是一个不折不扣的单线程系统。也就是说,以太坊计算机先把一个任务计算完毕,然后计算结果“状态”更新到全世界各个节点,它才会再继续下一个任务。

以太坊用户可以并发(Concurrency)的提交交易申请, 但以太坊不是并行(Parallelism)处理的。所有交易都试图改变整个全局状态,以太坊选择逐个处理交易。

读者也许听说过以太坊网络上越来越严重的拥堵排队问题,现在可以理解了:这是以太坊的单线程任务处理机制的锅。在以太坊上执行的任务,只能乖乖排队按顺序来,用的人多了不堵才怪。

如何解决以太坊的拥堵问题,是当今区块链技术研究的一个热点。比如大家可能听过的Layer2/侧链等新词,主要目的都是为了规避以太坊的主链拥堵问题(以及高昂的运行费用)。

回头来看,从任务的执行机制角度,以太坊可比读者手头正在用的个人计算机甚至手机系统都简单多了。

现在的个人计算机系统都是各种实时多任务,各种后台前台程序并发运行;以太坊除了信息状态同时存于分布世界的各节点,在系统运行方式上,反而是特别简单的单线程模式。

另外,以太坊底层有一个持续运作的所谓操作系统吗,这个世界计算机是不是有点类似《终结者》里的天网那样自动和智能化呢? 或者,至少有个类似计算机的操作系统来控制整体运行?

答案是:非也。

以太坊上完全没有“背后自动运行”这种说法。以太坊的所有计算任务都以“交易”来驱动,交易由用户持有的以太坊地址账户发起,只有成功和不成功两种结果。交易成功, 则在以太坊记录全局状态更新; 交易不成功, 则全局状态保持不变。

值得再重复一下, 以太坊是一个全局的单体状态机,交易是唯一能够让这台状态机向前推进并改变状态的东西。以太坊上的智能合约代码不会自动运行。以太坊也不会在“后台”运行。所有这一切,都是由用户交易触发的。

所以, 尽管同为通用计算机,但以太坊的运行模式和个人计算机系统是很不同的。

至于以太坊计算机是否有神秘的人工智能, 甚至有没有“天网”的雏形, 读者也可以直接回答了:以太坊没有任何自动运行机制,更不说人工智能;它不是天网,只是一个很好的分布式平台。从任务执行的底层机制来看,它恐怕比你桌面上的笔记本电脑还要简单很多。

去中心化的本质和基础

我们总说,以太坊为代表的Web3网络是去中心化的网络。那么什么是去中心化?为什么能去中心化?谁来保证去中心化交易的可信和安全呢?

所谓中心化,在当前的互联网模式意义上,是指在互联网上进行的用户之间的互动,都基于一个可信的公司维护的互联网服务。从技术上,就是典型的服务器-客户端模式。

比如一个看似简单的点对点转账:用户A通过手机微信或支付宝给另外一个用户B当面扫码转账100块。实际上,需要A和B都信任的腾讯或蚂蚁金服的后台服务器来操作双方账户,服务器把用户A的账户金额减少100块,把用户B的账户金额增加100块,并确保这两个操作一起发生。因为微信支付或者支付宝已经有足够广泛的使用,用户“信任”它们的后台服务器不会出差错。

我们能看到,当前互联网模式下,互联网服务的特点是:

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:入门指南  入门指南词条  小白  小白词条  优化  优化词条  推广  推广词条  电子商务  电子商务词条