以太坊

🌙
手机阅读
本文目录结构
axihe

以太坊

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

以太坊的概念首次在 2013 至 2014 年间由程序员维塔利克·布特林受比特币启发后提出,大意为“下一代加密货币与去中心化应用平台”,在 2014 年透过 ICO 众筹得以开始发展。

截至 2018 年 6 月,以太币是市值第二高的加密货币,以太坊亦被称为“第二代的区块链平台”,仅次于比特币

特点

相较于较大多数其他加密货币或区块链技术,以太坊的特点包括下列:

  • 智能合约(smart contract):存储在区块链上的程序,由各节点运行,需要运行程序的人支付手续费给节点的矿工或权益人。
  • 代币(tokens):智能合约可以创造代币供分布式应用程序使用。分布式应用程序的代币化让用户、投资者以及管理者的利益一致。代币也可以用来进行首次代币发行。
  • 叔块(uncle block):将因为速度较慢而未及时被收入母链的较短区块链并入,以提升交易量。使用的是有向无环图的相关技术。
  • 权益证明(proof-of-stake):相较于工作量证明更有效率,可节省大量在挖矿时浪费的电脑资源,并避免特殊应用集成电路造成网络中心化。(测试中)
  • 支链(Plasma):用较小的分支区块链运算,只将最后结果写入主链,可提升供单位时间的工作量。(尚未实现)
  • 状态通道(state channels):原理类似比特币的闪雷网络,可提升交易速度、降低区块链的负担,并提高可扩展性。尚未实现,开发团队包括雷电网络(Raiden Network)和移动性网络(Liquidity Network)。
  • 分片(sharding):减少每个节点所需纪录的数据量,并透过平行运算提升效率(尚未实现)。
  • 分布式应用程序:以太坊上的分布式应用程序不会停机,也不能被关掉。

历史

起源

以太坊最初由 Vitalik Buterin 在 2013 年提出。Vitalik 本是一名参与比特币社群的程序员,曾向比特币核心开发人员主张比特币平台应该要有个更完善的编程语言让人开发程序,但未得到他们的同意,因此决定开发一个新的平台作此用途:88。Buterin 认为很多程序都可以用类似比特币的原理来达成进一步的发展。

Buterin 在 2013 年写下了《以太坊白皮书》,说明了建造去中心化程序的目标。然后 2014 年透过网络公开募资得到开发的资金,投资人用比特币向基金会购买以太币。

最初以太坊程序是由一间位在瑞士的公司 Ethereum Switzerland GmbH 开发,之后转移至一个非营利机构“以太坊基金会”(Ethereum Foundation)。

在平台开始发展的最初,有人称赞以太坊的科技创新,但也有人质疑其安全和可扩展性。

激活:边境

以太坊的公共区块链在 2015 年 7 月 30 日引导。最初的以太坊版本称为边境(Frontier,也有“前锋”的意思),用的是工作量证明(proof-of-work)的算法,但未来预期会转换成权益证明(proof-of-stake):32。

硬分叉

自最初版本以来,以太坊网络成功进行了数次硬分叉。第一次分叉调整了未来挖矿的难度,确保未来的用户会有转换至权益证明的动机。当前第五个分叉正在开发中。

第二次分叉:家园

2016 年春季进行了第二次分叉,发布了第一个稳定版本,称作“家园”(Homestead)。

第三次分叉:DAO 和区块链分叉

2016 年六月,以太坊上的一个去中心化自治组织 The DAO 被骇,造成市值五千万美元的以太币被移动到只有该黑客可以控制的“分身 DAO”。因为程序不允许黑客立即提取这些以太币,以太坊用户有时间讨论如何处理此事,考虑的方案包括取回以太币和关闭 DAO,而 DAO 去中心化的本质也表示没有中央权力可以立即反应,而需要用户的共识。最后在 2016 年 7 月 20 日,以太坊进行硬分叉,作出一个向后不兼容的改变,让所有的以太币(包括被移动的)回归原处,而不接受此改变的区块链则成为古典以太坊(Ethereum Classic)。这是第一次有主流区块链为了补偿投资人,而透过分叉来更动交易记录。

在这次分叉之后,造成了在两个区块链之间进行重放攻击的可能,加上其他网络攻击,让以太坊和古典以太坊又各自进行了数次分叉来避免攻击。

第四次分叉:减重和防 DDoS

2016 年 11 月底进行了第四次的分叉。这次分叉为区块链减重(de-bloat),并加入一些避免网络攻击的设计。因为沟通疏失,这次分叉短暂造成以太坊的两个主要客户端程序 Parity 和 Geth 失去共识而产生意外的分叉,但问题在数小时内即被找出并修正。

发展与挑战

2018 年 9 月,比特币核心开发者 Jeremy Rubin 在美国科技媒体 TechCrunch 上发表文章《ETH 的崩溃无法避免》,称就算以太坊网络继续存续,ETH 的价值也会必然归零。以太坊创始人 Vitalik 在回应中承认了问题的存在:“如果以太坊不改变,Jeremy Rubin 的言论可能是对的”。此番言论造成 ETH 的价钱一度下挫。同时,许多以太坊的项目开始转移到 EOS﹑波场等的其他公链上,有人担心以太坊将被取代。在 ETH 的价格影响下,以太坊的全网算力开始收缩,按 etherscan.io 的算力统计显示,9 月到 11 月以太坊全网算力下跌了 20%,从近 300TH/s 收缩至 240TH/s。

2018 年 12 月 10 日,Vitalik 在推特上宣称,未来采用基于权益证明 (PoS) 的分片技术的区块链“效率将提高数千倍”。

2019 年,以太坊项目进行君士坦丁堡硬分叉,这是一个刺激以太坊网络改变其核心共识机制算法的代码,这一段代码引导之后以太坊便会面临所谓的“冰河时代”,在该网络上的创建新区块的难度将会不断提升,最终减慢到完全停止。在该硬分叉升级之后,以太坊区块链的状态将“永久性”的改变。

以太币

以太坊区块链上的代币称为以太币(Ether),代码为 ETH,可在许多加密货币的外汇市场上交易,它也是以太坊上用来支付交易手续费和运算服务的介质 。

以太币对其他实体货币的汇率可能在短时间内大幅变化,例如 The DAO 被骇时,对美元的汇率从 $21.50 跌至 $15。

Buterin 在 2016 年 4 月售出手上持有的四分之一以太币,造成一些人质疑,而他本人则说这是理财上很合理的分散风险,并引用前比特币开发员 Gavin Andresen 说这一切都还只是一场实验,仍有失败的可能。

智能合约

主要

以太坊最重要的技术贡献就是智能合约。智能合约是存储在区块链上的程序,可以协助和验证合约的谈判和运行。以太坊的智能合约可以数种用图灵完全的编程语言写成。纽约时报称以太坊平台是一台由众多用户构成的网络来运转的公用电脑,并用以太币来分配和支付这台电脑的使用权。经济学人则说明智能合约可以让众多组织的数据库得以用低廉的成本交互,并且让用户写下精密的合约,功能之一是产生去中心化自治组织,也就是一间只是由以太坊合约构成的虚拟公司。

因为合约内容公开,合约可以证明其宣称的功能是真实的,例如虚拟赌场可以证明它是公平的。另一方面,合约的公开性也表示如果合约中有漏洞,任何人都可以立刻看到,而修正程序可能会需要一些时间。The DAO 就是一个例子,无法即时阻止。

智能合约的许多细节仍在研究中,包括如何验证合约的功能。微软研究院的报告指出要写出完善的合约可能非常困难,讨论了微软开发的一些可以用来验证合约的工具,并提到如果大规模分析各个已发布的合约,可能发现找出大量的漏洞。报告也说可以证明 Solidity 程序和以太虚拟机编码的等同性。

编程语言

主条目:Solidity Gavin Wood 写的《以太坊黄皮书》中定义了以太虚拟机的运作流程。智能合约可以专门为此开发的 Solidity 编程语言写成,或是 Python 的一个变体 Serpent,或是 LLL。以太虚拟机也可以在 Mutan 上运行。智能合约之后会编译成字节码,然后发布在以太坊区块链上。

运行效率

将所有合约存在区块链上每个结点的作法有好有坏。主要的缺点是所有的结点都同时要运算所有的合约,因此速度较慢。开发人员正研究将数据切分(Sharding)的技术套用至以太坊。2016 年 9 月 Buterin 发表了改善可扩展性的企画。截至 2016 年 1 月,以太坊每秒可以处理 25 个交易。

实现

智能合约的潜在应用很多。彭博社商业周刊称它是“所有人共享但无法篡改的软件”。更高端的软件有可能用以太坊创建网络商店。

区块链程序

以太坊可以用来创建去中心化的程序、自治组织和智能合约,据纽约时报的报导,在 2016 年 5 月已经有数十个可用的程序。预期的应用目标涵盖金融、物联网、农田到餐桌(farm-to-table)、智能电网、体育赌博等。去中心化自治组织有潜力让许多原本无法运行或成本过高的营运模型成为可能。当前较知名的应用有:

  • 游戏:CryptoKitties 让玩家繁殖及交易虚拟猫。
  • 类庞氏骗局的赌局游戏:Fomo 3D,不同于传统的庞氏骗局,最后一位加入赌局中的人可获得总资金盘中的 48%
  • 虚拟宝物交易平台:FreeMyVunk。
  • 去中心化创业投资:The DAO 用以太币资金创立,目标是为商企业和非营利机构创建新的去中心化营业模式、The Rudimental 让独立艺术家在区块链上进行群众募资。
  • 社会经济平台:Backfeed。
  • 去中心化预测市场:Augur。
  • 物联网:Ethcore(一间以太坊公司)研发的客户端、Chronicled(一间区块链公司)发表了以太坊区块链的实物资产验证平台;芯片公司、物理 IP 创建者和生产者可以用植入的蓝牙或近场通信进行验证。Slock.It 开发的智能锁可以在付费后自动打开,让用户在付费后可以帮电动车充电、或是打开租屋的房门。
  • 著作权授权:Ujo Music 平台让创作人用智能合约发布音乐,消费者可以直接付费给创作人。伊莫珍·希普用此平台发布了一首单曲。
  • 智能电网:TransActive Grid 让用户可以和邻居买卖能源。
  • 去中心化期权市场:Etheropt。
  • 钉住汇率的代币:DigixDAO 提供与黄金挂钩的代币,在 2016 年四月正式营运。Decentralized Capital 提供和各种货币挂钩的代币。
  • 移动支付:Everex 让外劳汇款回家乡。

客户端软件

以太坊的 2 个主要的客户端软件是 Geth 和 Parity,以及 PC 端交易所 Bitrue。

企业软件

企业软件公司也正测试用以太坊作为各种用途。已知有兴趣的公司包括微软、IBM、摩根大通。

  • 德勤和 ConsenSys 在 2016 年宣布成立数字银行 Project ConsenSys。
  • R3 公司在 Microsoft Azure 上运行私人以太坊区块链,将 11 间银行连接至一本分布式帐薄(distributed ledger)。
  • Microsoft Visual Studio 提供程序开发者使用 Solidity 编程语言。
  • 英国政府中负责推动创新的机构 Innovate UK 提供了近 25 万英镑给 Tramonex 用以太坊发展跨国支付系统。

认许制记账

当前有许多方案正在研究使用以太坊创建认许制的区块链。

  • 摩根大通打算用以太坊上创建一个私人区块链“Quorum”。其功能是洗乱派生性金融产品及其交易纪录来保护交易者的隐私,但同时符合金融管制单位在信息公开上的要求,以期在保障隐私和信息公开之间找到平衡。
  • 苏格兰皇家银行用以太坊的分布式记账和智能合约平台创建了一个结算交割机制(Clearing and Settlement Mechanism, CSM),可以达成每秒 100 笔交易、模拟六间银行,平均每个 trip 在 3 到 8 秒间完成,这些数值用在于全国的支付系统是可接受的。

采用

2016 年五月,纽约时报指出以太坊的采用仍在初期阶段,并可能遇到让成长率减缓的技术或法律问题。许多比特币支持者认为以太坊比比特币复杂,所以可能需要面对更多的安全问题。报导也指出这个系统复杂到熟知这个系统的人也很难用普通人的语言来描述它。

微软和 ConsenSys(一间以太坊公司)合作,在 Microsoft Azure(一个云端服务平台)上提供第三方开发的区块链工具,包括交易股票和跨境支付等用途。

卢森堡交易所在 2016 年 10 月开始提供用以太坊产生的数字签名来证明文件的真实性。

新加坡金融管理局使用以太坊将新加坡元数字化。

古典以太坊

2016 年 6 月,在第三次硬分叉时,拒绝修改交易纪录的区块链分支成了“古典以太坊”(Ethereum Classic)。在分叉以前就持有以太币的人会同时持有以太币和古典以太币(Classic Ether, ETC),存在交易所或在线钱包中的以太币也不例外。这些在线服务大多选择只支持其中一种以太币,并让用户领回另一种以太币。截至 2016 年 8 月,两种以太币都可以在汇市上交易。

之后古典以太坊在 2016 年 10 月进行了硬分叉,调整以太虚拟机的一些操作码(op code),以提高滥发垃圾消息或进行拒绝服务攻击的成本。当时以太坊和古典以太坊都已遭受了一个月的拒绝服务攻击。

交易用外的用途

因区块链技术难以删改数据的特质,部分人会运用加密货币上传数据以免被他人删改。

  • 2018 年 4 月,在北大岳昕事件中,有用户把岳昕的公开信上传到以太坊的交易记录,用免被校方删除。
  • 2019 年 6 月,部分香港警察的个人数据被上传到以太坊的交易记录。

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili 和抖音。

关注我: Github / 知乎

如果你加我的私人微信,麻烦写上您的 称呼,所在地区,职业,方便我备注,谢谢


本站的微信公众号

阿西河前端教程

Anbang

安邦的私人微信

微信号: yaolushan

Anbang

Bilibili(B站)

朱安邦

Anbang