持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情
前言
最近看了b站的一部国产科幻动漫《黑门》,大概是讲述未来人脑科学高度发展,人类能够自由进入别人大脑。但却因为一次意外交通事故,同车的人全都患上了“蜂群症”,即群体之间意识高度集中,为了实现一个共同的目标而行动。我看到这个地方,就感觉像是实现了一个分布式边缘计算,每个人的大脑都是集群中的一个节点。同样的,我还想到了区块链:
从“蜂群症”这个名字,我们能初观端倪。蜜蜂是一种展现出高度复杂行为的物种,最终使蜂巢受益。每个蜜蜂按照一套简单的规则自由运作,并通过“跳舞”来传达重要的结果。舞蹈带有重要的信息,比如太阳的位置和从蜂巢到目标的相对地理坐标。通过解读这种舞蹈,蜜蜂可以传播这些信息或采取行动,从而实现“蜂巢思维”的意志。虽然蜜蜂形成了一个基于种群的社会,拥有繁殖后代的蜂后,但在蜂巢中没有中央权威或领导者。所有单个成员只进行简单的动作,但从群体角度来看确实相当复杂的操作。而这种特征和动漫中宣传的那种人类进化理论十分相似。
正好最近打算做一个智能合约的相关论文,所以今天我开始介绍一下区块链以及ETH的相关内容。
什么是以太坊?
以太网是“世界的计算机” 。从计算机科学的角度来说,以太坊是一种确定但实际上无界的状态机,它有两个基本功能,第一个是全局可访问的单例状态,第二个是对状态进行更改的虚拟机。从更实际的角度来说,以太坊是一个开源的,全球的去中心化计算架构,执行 智能合约 的程序。它使用区块链来同步和存储系统状态,使用 ether 的加密货币来计量和约束执行资源成本。
组成内容
以太坊与其他开放区块链有许多相同的内容:P2P网络,用于状态同步的共识算法(之前是工作证明),数字货币(以太)和全局账本(区块链)。
开源、公开的区块链通常包括以下组成部分:
- 一个连接参与者,并传播交易和包含已验证交易区块的、基于标准的“gossip“协议的P2P网络。
- 状态机中实现的一系列共识规则。
- 消息以交易的形式表示,代表状态转移。
- 根据共识规则处理交易的状态机。
- 分布式数据库记录所有状态转移的日志(区块链的表现形式)。
- 共识算法(例如,Proof-of-Work工作证明),通过强制参与者竞争并使用共识规则约束他们,来分散区块链的控制权。
-
包含上述内容的至少一个开源软件实现。
所有或大部分这些组成部分通常都会被集合在一个软件客户端中。例如在比特币中,由 Bitcoin Core 开源项目开发了一个 bitcoind 客户端。但在以太坊中, 只有参考规范,没有参考实现。在以太坊黄皮书中有对系统的数学描述。
设计目的
以太坊在构建之初的目的就与之前的开源区块链不同。与比特币的简单脚本编程语言不同的是,以太坊被设计成一个通用可编程的区块链,相当于一个一直运行的虚拟机,能够执行任意的代码。而且,以太坊的编程语言是图灵完备的,这意味着它相当于一台通用计算机,可以运行理论图灵机可以运行的任何计算。
以太坊的历史
诞生
说起以太坊,就不得不提到一个人——Vitalik。由于比特币的流行,人们开始思考区块链这个去中心化的分布式账本究竟能做什么,同时也在想怎么改进它。2013年底,Vitalik 开始考虑进一步扩展比特币和Mastercoin(一种扩展比特币,提供基本智能合约的叠加协议)的功能。 2013年10月,Vitalik向Mastercoin团队提出了一个更通用的方法,该方案允许用灵活且可编写脚本(但不是图灵完备的)的合约取代Mastercoin的专业合约语言。但是这个想法因为太过激进而被砍了。于是Vitalik考虑要干就干票大的,在2013年底,Vitalik分享一份白皮书,其中描述了以太坊的核心思想:一个图灵完备的可编程和通用区块链。在白皮书发布之后,Vitalik收到了很多反馈,在这之中,Gavin Wood博士是第一批提供帮助和提供C ++编程技术支持的人员,正是因此,Gavin成为了以太坊的联合创始人,联合设计师和CTO。
而关于V神对于以太坊架构的构建以及当时的思想,大家有兴趣可以去看一看他本人写的这篇博客:A Prehistory of the Ethereum Protocol。
四个阶段
以太坊的发展计划分四个阶段进行,每个新阶段都会发生重大变化。每个阶段都可能包含子版本,称为“硬分叉”,代表不向后兼容的方式改变功能。
四个主要的发展阶段代号为:
- 前沿(Frontier)
- 家园(Homestead)
- 大都会(Metropolis)
-
宁静(Serenity)
中间的硬分叉代号为“冰河时代(Ice Age)”,“DAO”,“Tangerine Whistle”,“Spurious Dragon”,“拜占庭(Byzantium)”和“君士坦丁堡(Constantinople)”:
Block #0"Frontier" - 以太坊的初始阶段, 从2015年7月30日持续到2016年3月。
Block #200,000"Ice Age" - 引入指数级难度增长的一个难题,激励了到权益证明的过渡。
Block #1,150,000"Homestead" - 以太坊的第二阶段,2016年3月启动。
Block #1,192,000"DAO" - 恢复被破坏的DAO合约的硬分叉,导致以太坊和以太坊经典分成两个竞争系统。
Block #2,463,000"Tangerine Whistle" - 改变某些IO密集操作的燃气计算方法和清除拒绝服务攻击(利用这些操作的低燃气成本)累积状态的硬分叉。
Block #2,675,000"Spurious Dragon" - 解决更多拒绝服务攻击向量和另一种状态清除的硬分叉,还包括转播攻击保护机制。
Block #4,370,000"Metropolis" - 次级版本的硬分叉
-
……
在今年的9月15日开始,以太坊完成了最后一阶段 Serenity 的任务,通过硬分叉实现了由POW工作量证明转向POS权益证明,减少能源消耗。
以太坊应用
说起区块链,大家能想到什么?挖矿?数字藏品?元宇宙?抑或是Web3?近年来,因为矿潮+大厂吹嘘元宇宙概念+数字藏品盛行,在外行眼中区块链的风评并不好。但我想说的是,区块链,或者更进一步说以太坊,他的应用领域可能更多的在数据上链、智能合约和DApps。
去中心化应用 (DApps)
以太坊从一种可用于各种用途的通用区块链,逐步发展成为开发 **去中心化应用(DApps) 的平台。DApps 拥有比“智能合约”更广阔的前景和视角。DApp至少包含一个智能合约和一个web用户界面简单来说,DApp就是一个基于去中心化的、开放的、P2P基础架构服务的Web应用程序。
DApp至少由以下部分组成:
- 区块链上的智能合约
- 一个Web前端用户界面
另外,许多DApp还包括其他去中心化组件,例如:
- 去中心化(P2P)存储协议和平台。
- 去中心化(P2P)消息传递协议和平台。
可以说,以太坊的发展赋予了Web全新的概念,是Web3的重要推动者。因此,学习区块链和以太坊也显得越发重要。
Web3
2004年,“Web 2.0”的概念横空出世。它向我们描述了网络向用户生成内容、响应接口和网络交互性的巨大进步。而DApps的概念给我们带来了 Web3,它由Gavin Wood博士首先提出。Web3代表了Web应用程序的新愿景和焦点:从集中拥有和管理的应用程序到基于去中心化协议的应用程序。后面我们可能涉及一些 Web3 的开发学习,包括使用Ethereum + web3.js + 一些npmjs的库来将你的浏览器中运行的JavaScript应用程序与以太坊区块链连接起来。
web3.js 库还包含一个名为 Swarm 的P2P存储网络接口和一个称为 Whisper 的P2P消息传递服务。通过使用这三个组件,开发人员可以使用完整的应用程序开发套件来构建Web3 DApps:
总结
区块链并非是一个凭空创造出的技术,而是将一大堆已有领域的知识整合在一起而形成的。包括程序设计、数据结构、软件工程学、信息安全、密码学、分布式系统、计算机网络,同时还包括经济学等。想要一一讲述并不可能。
幸运的是,以太坊为我们提供了一个学习区块链绝佳的突破口。我们可以通过学习以太坊,分析它的工作原理,然后建立一个简单的智能合约,并且基于Web的技术来展现他们,借此来了解区块链的工作原理和方法。