什么是以太坊? 以太坊 基础知识梳理
历史
-
2009年1月3日 比特币 [1] [2] 之后的十年间,基于区块链技术的项目纷纷诞生。 市场上的公链项目早已以数千计,更不用说分布于世界各地的数以万计的加密货币交易所。 根据英国剑桥大学 2018 年的一份调查显示, 区块链领域的全职开发人员在 2017 年的 1876 人基础上上升了 164% [3], 该领域技术人才的紧缺和巨大的想象空间让市场上充斥着雷同的、虚假宣传的项目。 同时,加密货币、虚拟货币、代币、区块链等概念也层出不穷,扰乱了普通人对这项技术的理解。 区块链行业在公链领域最具思想性与里程碑意义的,除了首创的比特币外,就是以太坊项目,它被誉为区块链 2.0 时代的里程碑(比特币为区块链1.0时代)。
-
以太坊,英文全称 Ethereum,是一个全球协作的开源区块链项目。 该项目流通的加密货币称为以太币 (Ether),是全球仅次于比特币的第二大流通加密货币。 它最大的特色是具有一个运行时环境:以太坊虚拟机 (Ethereum Virtual Machine,简称 EVM), 为大规模分布式开放应用提供了运行的平台。
-
以太坊的创始人 Vitalik Buterin 于 1994 年出生于俄罗斯, 他参与了比特币项目的开发,于 2013 年下半年初步形成以太坊的设想, 并开始构思以太坊具体的架构。
-
2014 年比特币大会上,Vitalik 第一次展示了他有关于通用编程的比特币网络的扩展想法, 他试图通过让公链原生支持脚本语言编程的方式来拓展区块链的应用场景。 遗憾的是,该提议未被比特币核心开发团队接纳。 从 2014 年起,他发起并筹备一条从零开始的公链。 有别于比特币的有限拓展编程的尝试,以太坊原生支持拓展编程。
-
它的目标是成为一个 全球化的计算基础设施,也就是具有分布式、 公开透明、永不下线特性的全球计算机 。
-
在这台分布式计算机上运行的小程序, 被称为 智能合约 (Smart Contract)。 在以太坊 2014 年发起众筹后,更多人加入了开发者的行列。 其中 Gavin Wood 博士担任了该项目早期的技术合伙人角色。 他发表了 以太坊的黄皮书 [4] 并且负责制作以太坊虚拟机。 以太坊最出色的特点之一就是拥有一台虚拟机。 通过虚拟机字节码规范约束,成功分离了智能合约写作源语言与编译后的目标语言。
-
在社区运营方面,以太坊的开发、应用环境生态也相对比较完善。 该项目生态目前包括了(截止笔者交稿):黄皮书中定义的符合通信协议的4种客户端(分别由 C++、Go、 Python 和 Java 实现)、 一个可用的 JavaScript 环境 (web3)、众多以太坊区块链浏览器、轻量级的移动端钱包以及数个测试网络。
以太坊一共将经历4个发展阶段,我们正处在第3阶段的中期。
-
每个发展阶段的交接过程是以 “硬分叉” 的形式完成。 所谓硬分叉即一种特殊的软件升级——该升级不向前兼容。 新软件承认过往旧软件所产生的区块链记录, 但如果你还想用旧软件生成区块,新软件不会承认该区块。 旧软件将在新软件诞生运行后逐渐从网络中下架。
-
之所以叫“分叉”,不叫“替换”, 是因为这代表网络社群中总有一部分人不想更新软件。 硬分叉代表社区分裂,软分叉则保持向前兼容。 分叉的自由性让区块链网络有“自我进化”的能力。 拥有更多开发者、更多使用者的分叉链具有更高的存活概率。
- 区块高度 #0
- “前哨”(Frontier)阶段,2015年7月至2016年3月
- 在此期间发布了以太坊的最初版本。 它并非是一个稳定、安全的版本,主要面向开发者推广,让他们使用该软件进行试验。 以太坊最初版本的生态环境中提供了命令行界面, 可供开发者上传调智能合约,也提供挖矿模块,让整个网络中能不断生产出新的区块。 挖矿算法是采用基于工作量证明(Proof of Work, PoW)的方式进行。 在这阶段中,各项软件指标不断提升,区块链网络状况开始趋于稳定。
- 区块高度 #1,150,000
- “家园”(Homestead)阶段, 2016年3月至2017年10月 。
- 以太坊软件开发的生态圈,以太坊网络的底层协议在此期间保持稳定。 社区开发者贡献的开发工具、图形界面钱包等不断完善, 普通用户也可以参与到以太坊的使用。 通过对底层协议的优化改进,加快了交易出块速度,虚拟机的各项指标基本稳定。
- 区块高度 #4,370,000
- “大都会”(Metropolis)阶段,2017年10月至今 。
- 总共分为两个步骤实施,分别是拜占庭 (Byzantium) 与君士坦丁堡 (Constantinpole) 。 拜占庭步骤将延缓区块链出块的速度。 君士坦丁堡步骤将显著增加区块链的计算难度,减少挖掘区块时候的以太币奖励。 两者将促成基于工作量证明的挖矿难度上升,最终迫使该区块链的共识方式转向权益证明 (Proof of Stake, PoS)的共识算法。 原计划于2018年实施的君士坦丁堡的时间路线图已经向后延期, 于2019年3月实施,挖矿奖励减低为每个区块2个以太币。
- 区块高度 #尚未确定
- “宁静”(Serenity) 阶段,尚未有明确时间表
- 在该阶段,共识算法完全转向以权益证明(PoS)的方式来进行区块挖掘, 摒弃工作量证明(PoW)的方式。 在进入该阶段后,社区的共识算法将完全改变,这对整个经济模型和社区形态会造成巨大冲击。 这部分计划尚处于讨论制订阶段,而创始人 Vitalik 也尚未就该阶段的详细安排作出说明。
生成账户
-
和一般的网站申请账户不同, 加密货币的账户仅需要可靠的软件在离线状态下生成 , 而不需要去特殊网站进行注册。 很多虚拟货币交易所的管理大额虚拟货币的账户都是通过上述方法在一台离线的计算机上生成的。 那么,如何保证每次生成的私钥不是已经被他人生成过的?在现实中,两个私钥碰撞的概率有多大呢?
-
我们已知:私钥地址空间有 2 256,而宇宙中的已知原子总数有 10 80, 两者比较谁大谁小?我们做一个除法。
-
2256÷1080=1.1579209e+69=1069
-
从上述算式可以看出,私钥空间比我们宇宙空间的原子总数的倍数还要多。 可以说在全人类都参与使用加密货币的情况下,即使每次交易都使用新的地址, 碰巧遇上他人私钥的概率比生活中选中一个原子去砸中另外一个原子的概率还要小。
-
你生成的账户,是安全的。
交易是驱使力
-
我们分析了以太坊的静态部分:用户账户模型和账户状态所组成的世界状态。
-
分析以太坊上驱动账户余额发生转变的动因,就是交易transaction。
-
交易总是由外部账户所发起的,它所包含的内容既可以是一次简单的以太币转移,也可是一次合约代码的调用执行。
-
当以太坊网络收到交易时,它会按照交易执行指令,改变相关联的一个或者数个账户的状态,并将这些状态的变更合并到世界状态。
-
数笔交易按顺序执行后,执行结果将被打包成为一个区块,广播到其他节点并让网络按照共识算法选出合适的区块进入最终的区块链。
以太坊的Pow/Pos机制
-
以太坊在前三个阶段采用 PoW 的共识机制 ,核心是自以太坊1.0起推出的 Ethash 算法
-
为了克服比特币的算力中心化问题,Ethash算法做了诸多调整。
该算法依赖一个预先生成的大型数据集(1GB),在计算的过程中需要反复、分片地读取该数据集,这部分数据集体积远超过ASIC/GPU/FPGA矿机的内部寄存器体积, 较慢的内存读写 I/O 操作时间抵消了 ASIC 矿机厂商的专用芯片集成化带来的计算时间优势,具体的算法规则如下。
- 每一个区块通过区块头计算一个种子,该种子仅与本区块有关。
- 基于种子生成一份16MB 的伪随机缓存。
- 基于缓存生成一份大型数据集,称为DAG(有向无环图),体积 1 GB。DAG的数据可由伪随机缓存快速地推导出来,而且 DAG 的数据分块,每块都和对应的缓存块有关。
- 矿工挖矿的过程是不断地从 DAG 中取出数据作为输入值,再配合反复更改 nonce 试探,达到满足一定难度的输出值的运算。
- 校验者仅需在得到输出值后,经由缓存推断出对应的DAG数据,代入计算验证输出值,轻客户端也能快速执行该任务。
- 和比特币一样,Ethash 是一个”挖矿难,检测易”的算法。
- 该算法的理想是:虽然普通家庭计算机的 CPU 无法和和专用的 ASIC 矿机媲美,但是专用矿机在 1GB 内存数据的读取上也没有巨大的优势。
Ethash 算法实现了部分普通计算机参与挖矿、算力去中心化的理想。但是近来有通过GPU显卡来进行高内存高算力运算的显卡矿机,也有矿机厂商研制出的 ASIC 矿机在慢慢侵蚀 Ethash算法的屏障作用。所以以太坊的共识算法将在不久将来的第四阶段切换到 PoS 模式。
- 在 第四阶段的以太坊经济模型采用PoS机制 ,PoS全称 Proof of Stake,任何持有以太币的参与者都可以发起特殊交易,将自己的币锁定在一个存储中,让自己获得打包交易的资格,然后通过一个当前验证者都能参与的共识算法,完成新区块的打包和广播。PoS 算法的特点如下。
- 不需要耗费大量电力资源来“挖矿”。理论上发行总量可以被控制。
- 不需要购买昂贵设备,持有以太币即可参与挖矿。
- 出块速度更快,不受制于PoW挖矿带来的时间延迟。
- 减少挖矿工具中心化带来的风险。
预计当第四阶段启动时,众多以太坊爱好者已经进入以太坊世界并持有了以太币,他们可以根据自己持币数量和挖矿规则,竞争上岗,打包区块数据进行挖矿。目前已经有了代号 Casper 的测试网络可以运行、试用该共识机制。Casper 网上的共识算法有惩戒措施,出块人取得资格需要质押一定数量的以太币,大家根据共识对新产出的块进行投票来判定该块是否有效,经过大部分人认可后,该块就能合法有效,但若在该过程中有少数人“作恶”被揪出,这些人就会被罚没所抵押的以太币以示惩戒。
评论 (0)