主页 > imtoken手机下载 > (转)以太坊基本介绍
(转)以太坊基本介绍
全文来自:
注意:有些图片可能没有完全复制。
感谢以太坊翻译团队的翻译人员:Shan, Nov, PatrickJ, SoloWolf
授权翻译:
发表于 2016 年 10 月 2 日,作者:antonylewis2015
前言
以太坊建立在区块链和加密货币的概念之上。 如果您对此不熟悉,值得花时间先阅读“比特币基础知识简介”和“区块链技术基础简介”。 下面的文章将假设读者对比特币的工作原理有基本的了解。
什么是以太坊?
以太坊是在计算机网络上运行的软件,可确保数据以及称为智能合约的小程序可以在没有中央协调器的情况下由网络中的所有计算机复制和处理。 以太坊的愿景是创建一个不可阻挡、屏蔽(审查)抵抗和自我维持的去中心化世界计算机。 官方网站是以太坊项目。
它扩展了比特币的区块链概念:在全球多台计算机上验证、存储和复制交易数据(因此称为“分布式账本”)。 以太坊将这一概念更进一步,使得在世界各地的多台计算机上运行代码成为可能。
比特币用于数据的分布式存储,以太坊用于数据的分布式存储和计算。 这些小型计算机运行称为智能合约的程序,合约由参与者通过称为“以太坊虚拟机”的操作系统在自己的机器上运行。
如何运行以太坊?
要运行 Ethereum,您需要下载(如果您有耐心,也可以自己编写)一些称为 Ethereum 客户端的软件。 与 BitTorrent 或比特币一样,以太坊客户端将通过网络连接到其他运行类似客户端软件的计算机,并让它们开始下载以太坊区块链以跟上进度。 它还将独立验证每个区块是否符合以太坊的规则。
以太坊客户端软件可以做什么?
您可以使用:
连接到以太坊网络
探索以太坊的区块链
创建新的交易和智能合约
运行智能合约
挖掘新区块
通过运行以太坊虚拟机,您的计算机成为网络中的一个“节点”,与其他节点平等地处理交易。 请记住,在对等网络中,没有“核心”服务器,每台计算机都有平等的权利和地位。
以太坊和比特币有何相似之处?
我认为理解以太坊最简单的方法是探索它与相对简单的系统比特币的异同。 那么他们有什么相似之处呢?
以太坊有区块链
与比特币一样,以太坊有一个区块链,其中包含数据块(交易和智能合约)。 这些区块由一些参与者创建或挖掘,其他参与者验证它们。
您可以在此处查看以太坊区块链:Ethereum Block Chain Explorer
块通过前一个块的哈希或指纹形成一条链。 详情请参考区块链技术的温柔介绍
以太坊是公开且无需许可的
与比特币一样,以太坊的主网是一个公共的、无需许可的网络,这意味着任何人都可以下载或编写软件连接到网络,开始创建交易和智能合约并对其进行验证,并进行挖矿。 挖矿等,这些操作不需要在任何其他机构注册或登录。
一般来说,当人们谈论以太坊时,他们指的是公共无许可版本,公链。 但是,与比特币一样,您可以通过稍微修改以太坊文件来创建一个不连接到公共网络的私有网络。 目前私有网络中的代币和智能合约与公共网络不兼容。 更多关于公链非许可公链和私有许可链异同的问题,请参考被区块链迷惑? 革命与进化
以太坊是工作量证明 (POW) 挖矿
与比特币一样,矿工通过消耗电力来解决数学难题来创建有效区块。 以太坊的工作量证明算法称为Ethash,它与比特币的工作量证明算法略有不同,这使得用普通硬件进行挖矿成为可能。 以太坊中的这种工作量证明算法降低了通常用于比特币挖矿的特定硬件 ASIC 的效率。
有关挖矿的更多信息,请参阅比特币挖矿的简要介绍。
在以太坊的发展计划中,计划在未来版本的名为Serenity的以太坊软件中使用一种更节能的权益证明(POS)协议Casper来取代目前消耗大量资源的工作量证明(POW)挖矿。的权力。 矿。
以太坊有一个内置的数字货币
以太坊中的代币称为以太币,简称ETH。 与 BTC 类似以太坊原理介绍,这种加密货币可用于与其他加密货币或其他法定货币进行交易。 一枚 ETH 的当前价格约为 13 美元(2016 年 10 月)。 与 BTC 所有者被记录在比特币区块链上的方式相同,ETH 所有者也被记录在以太坊区块链上,尽管它们在技术上的实现方式略有不同。
如果您想了解更多有关加密货币和代币的信息,请参阅“数字代币基本介绍”
以太坊与比特币有何不同?
讨论的这一部分将更具技术性,并且在许多方面更加复杂。
以太坊的出块时间更短
与比特币的 10 分钟相比,以太坊的区块间时间约为 14 秒。 这意味着当你在比特币和以太坊中发起交易时,以太坊中的交易被记录在区块链中的速度比比特币中的交易被记录在区块链中的速度更快。 你可以认为比特币平均需要 10 分钟才能写入数据库,而以太坊平均需要 14 秒才能写入数据库。
以太坊有更小的区块
在比特币中,目前最大的区块大小限制为1M,而以太坊的区块大小是根据其上运行的智能合约的复杂程度来决定的——这叫做Gas limit,每个区块的最大值会略有不同根据情况。 不同的。 以太坊当前的最大区块大小约为 1,500,000 Gas。 从一个账户到另一个账户的 ETH 基础交易或支付(不是智能合约)消耗大约 21,000 Gas。 因此,每个区块大约可以放置 70(1500000/21000)笔交易。 在 Bit 中,目前每个区块可以包含大约 1500 到 2000 笔交易。
目前大多数以太坊区块大小都在 2KB 以下。
智能合约可以在以太坊虚拟机上运行
与比特币最初的脚本语言相比,以太坊中用于部署代码和运行智能合约的语言更高级,因此也更为开发者所熟悉。 智能合约代码在称为以太坊虚拟机的东西上运行,该虚拟机在网络中所有参与者的计算机上运行。 如果您熟悉 Microsoft Excel 宏(在 Excel 上运行的代码块),类似的智能合约可以被认为是在以太坊虚拟机上运行的代码块。
在很多描述中,以太坊智能合约被称为“图灵完备”。 这意味着它们具有完整的功能,并且可以在它们上完成可以用任何其他编程语言完成的计算。
发行以太坊代币
以太币是如何发行或创建的? 以太坊和比特币最大的区别是比特币每4年产量减半,而以太坊每年产量固定。 (可能会持续到宁静阶段)
以太坊比比特币更复杂。 示意性地,以太币的数量以这种形式存在:
预挖(pre-mine)+区块奖励(block rewards)+叔叔奖励(uncle block rewards)+叔叔引用奖励(uncle block reference rewards)
矿前
2014 年 7 月/8 月期间,共发行了约 7200 万个以太币用于众筹。 这些硬币有时被称为“预挖”。 众筹阶段后,ETH年产量限制为7200万枚ETH的25%(ETH年挖矿产量不高于1800万枚,一次性发行7200万枚ETH众筹除外)
区块奖励
目前,每产生一个新区块,就会产生 5 个新的以太币。 算一算,如果每 14 秒挖出一个区块,一年有 3150 万秒(365x24x60x60),这意味着每年挖出 225 万个区块。 225万个区块,每个区块5个ETH,即每年会产出1130万个ETH。 这个数字与少于 1800 万个 ETH 的生产数字一致。
叔块奖励
事实上,这个数字可能略高于上述数字。 一些块是稍后开采的,因此不能称为主区块链的一部分。 比特币称这样的块为“孤立块”并完全丢弃它们。 但是,以太坊称他们为“叔叔”,在后面的区块中,可以引用他们。 如果叔叔后来在区块链中被称为叔块,每个叔块将为矿工产生大约 4.375 ETH(5 ETH 奖励的 7/8)。 这被称为叔块奖励。 目前每天大约创建 500 个叔块,为以太币的日产量增加 2,000 个以太币到链中(按此速度,年产量为 700,000 个以太币)
叔块参考奖励
还有更多:矿工每引用一个叔叔(最多引用两个叔叔)就可以获得大约 0.15 个以太币
这种定义有效区块并奖励矿工的模式被称为“Greedy Heaviest-Observed Sub-Tree”(GHOST 是 Greedy Heaviest-Observed Sub-Tree 的前缀)。
以太生产的未来变化
在以太坊从工作量证明(PoW)(包括 Spectre 发行规则)切换到权益证明(PoS)之后,以太币的发行会发生什么,目前还没有定论。 权益证明机制将使用一个名为 Casper 的协议(是的,作为一个友好的幽灵。谁说 cryptonerds 没有幽默感?)在 Casper 协议下,以太币的发行率将大大低于 Ghost 协议下.
挖矿奖励
那么,矿工在挖矿时得到了什么?
在比特币中,矿工将获得:
• 12.5个新比特币(目前实际情况请参考《比特币挖矿浅显介绍》)
加
• 包含在区块中的交易产生的交易费用
在以太坊中,矿工将获得:
• 5 ETH 用于新区块奖励(或 4.375 ETH 用于新叔块奖励),
加
• 指最近2个叔块的Diudiu奖励(区块奖励的1/32,即1/32x5=0.15625个叔块新ETH)
加
• 在区块中运行合约的gas
目前每个区块平均gas limit为1,500,000,区块网络中每种gas的平均价格为0.000000022 ETH,也就是说,矿工从一个“满”的区块中可能获得的gas奖励为0.033 ETH。 请注意,合约中的气体是用现有的以太币支付的,而不是新创建的以太币。
以太坊的其他部分:Swarm 和 Whisper
计算机需要能够计算、存储数据和通信。 如果以太坊要实现其不可阻挡的、抗审查的、自我维持的、去中心化的“世界”计算机的愿景,它需要以稳健、高效的方式完成上述三件事。 以太坊虚拟机只是整体的一部分。
以太坊虚拟机是运行合约逻辑的计算元素
这是一种不依赖中央服务器的计算。
群是点对点文件共享,类似于 BitTorrent,但以以太币作为激励措施进行小额支付。 文件被分解成块,由参与的志愿者分发和存储。 那些存储和服务块的节点从那些需要存储和检索数据服务的节点那里得到以太币补偿。
这是不依赖中央服务器的文件存储。
Whisper 是一种信息检索协议,它允许节点以安全的形式直接向彼此发送信息以太坊原理介绍,并且对第三方组织的窥探者隐藏发送者和接收者的信息。
这是不依赖中央服务器的通信管理。
以太坊中的一些概念
智能合约
智能合约是存储在以太坊区块链上的简短计算机程序。 这些代码可以用以太激活或运行。 要了解更多关于智能合约的信息,请参阅智能合约的温和介绍。
以下是来自维基百科的智能合约示例:
资料来源:Solidity - 维基百科
在以太坊中,您使用一些代码创建一个帐户,在一次交易中将其上传到以太坊区块链,然后您创建一个智能合约。 上传合约后,它就像点唱机一样工作——当你想运行它时,你应该创建一个向合约支付 ETH 的交易,并可能在合约需要时提供一些其他信息。
每台挖矿计算机通过以太坊虚拟机在他们的计算机上运行一个智能合约作为他们参与挖矿过程的一部分,然后得出一个输出结论。 理论上,如果没有人恶意行事,以太坊网络上的每台计算机都会得出相同的结论,因为它们运行的是提供相同信息的相同合约代码。
当一个区块产生时,矿工将该区块发布到网络的其余部分,其他计算机验证他们得到了相同的结果并将该区块添加到他们自己的区块链中。 这就是以太坊区块链状态更新的方式。
帐户
在比特币中,有一个叫做地址的概念,地址是存储比特币的地方——就像比特币的一串银行帐号。 这在以太坊中通常被称为账户。 有两种类型的帐户:
仅存储 ETH 的账户——这些账户类似于比特币地址,有时称为外部拥有账户 (EOA)。 您可以通过使用您的私钥签署交易来向这些账户支付 ETH。
这是一个存储 ETH 的帐户示例:
以太坊账户 0x2d7c76202834a11a99576acf2ca95a7e66928ba0 信息
不仅存储了 ETH,还有可执行代码(智能合约)——这些智能合约可以通过交易将 ETH 发送到账户。 上传智能合约后,它就在那里等待激活。
这是一个具有智能合约的帐户示例:
以太坊账户 0xcbe1060ee68bc0fed3c00f13d6f110b7eb6434f6 信息
叔叔和孤儿:不太需要的块
以太坊的区块率远高于比特币(以太坊每小时 250 个区块,而比特币每小时 6 个区块)。 产生的块越快,“块冲突”的机会就越大——即可以几乎同时创建多个有效块,但只能将其中一个添加到主链。 另一个“损失”是这些区块内的数据不会被视为分类账的一部分,即使交易在理论上是有效的。 在比特币中,这些非主链区块被称为孤儿块或孤立块,它们无论如何都不会成为主链的一部分,也不会被后面的区块引用。
在以太坊中,它们被称为叔块。 叔块会被后续的一些块引用(参考ETH发布的部分)。 虽然里面的数据不会用到,但是挖出来稍微少一点的奖励还是有效的。
这有两个重要目的:
即使挖到非主链区块的概率很高(高速出块会导致更多的孤儿块或叔块),矿工仍然有动力去挖矿。
通过确认花费在叔块上的能量来提高区块链的安全性。
天然气和天然气价格
当您激活智能合约时,您是在要求整个网络中的每个矿工在内部执行计算。 这会花费他们时间和精力,Gas 是您为这项服务向矿工付款的机制。
奖励是想要运行智能合约的人需要支付的少量以太币才能使合约正常运行。 类似于将硬币投入自动点唱机。
支付金额(单位 Ether)= Gas 数量(单位 Gas)x Gas 价格(单位 Ether/Gas)
气量
智能合约越复杂(计算步骤的数量和类型、占用的内存等),完成操作所需的 Gas 就越多。 就像自动点唱机一样,歌曲越长,音量越大,您需要付出的代价就越大。
天然气价格
任何特定合约运行合约所需的 Gas 量是固定的,由合约的复杂性决定,Gas 价格由那些想要运行合约的人在提交运行合约的请求时设定(有点类似到比特币交易费)。 每个矿工将根据 Gas 的价格决定是否要将此合约作为区块的一部分运行。 如果你想让矿工运行你的合约,你最好提供更高的 gas 价格。 在某种程度上,这是由合同执行意愿驱动的出价。
为什么需要汽油?
让智能合约花费 Gas/Ether/money 可以防止人们随意激活合约,解决垃圾交易和如果免费运行智能合约会发生的相关问题。
以太单位
就像1美元可以分为100美分,1BTC可以分为100,000,000聪(Satoshi Nakamoto)一样,以太坊也有自己的换算单位。
最小单位是wei,每个ETH有1,000,000,000,000,000,000 wei。 还有一些中间单元:Finney、Szabo、Shannon、Babbage、Ada——都是以在加密货币或网络相关领域做出杰出贡献的人的名字命名的。
Wei 和 Ether 是两个最常用的单位。
智能合约语言:Solidity/Serpent, LLL
共有三种常见的智能合约语言,可以编译成智能合约运行在以太坊虚拟矿机上。 他们是:
Solidity——类似于 Javascript 语言。 这是目前最流行、功能最丰富的智能合约脚本语言。
Serpent - 类似于 Python 语言,它在以太坊历史的早期就很流行。
LLL (Lisp Like Language) - 类似于 Lisp,只在早期使用。 它可能是最难使用的。
以太坊软件:geth、eth、pyethapp
官方以太坊客户端都是开源的——你可以查看它们背后的代码并重构它们以开发你自己的版本。 最受欢迎的客户是:
geth (Go语言客户端) ethereum/go-ethereum
eth (C++ 客户端) ethereum/cpp-ethereum
pyethapp(Python 客户端)ethereum/pyethapp
这些都是基于命令行的程序(黑底绿字的),界面好看易懂的软件还可以再多一些。 目前最流行的官方图形软件是Mist(ethereum/mist),Mist运行在geth或eth的顶层。
所以,geth/eth是底层,Mist是顶层的雅屏。
历史:以太坊时间轴
Vitalik Buterin 于 2013 年底在一份白皮书中提出了以太坊的概念。该概念最终由 Gavin Wood 博士完善,并于 2014 年 4 月发布了技术黄皮书。此后,以太坊的开发一直由一个社区管理。开发商。
2014年7月和2014年8月,社区发起众筹活动,为项目开发筹集资金,2015年7月30日,以太坊区块链正式上线。
以太坊众筹
开发团队于 2014 年 7 月至 8 月通过在线销售 ETH 代币筹集资金。人们可以用比特币兑换以太币。 初始固定汇率为 1 BTC 等于 2000 ETH。 (现在是 2016 年 10 月,1 BTC 可以购买 50 ETH。)
众筹参与者将比特币发送到一个比特币地址,并收到一个包含相应数量购买的 ETH 的以太坊钱包。技术细节可以在以太坊博客上找到
这样一来,共购买了超过6000万个以太币,相当于约31500个BTC,当时价值约1800万美元。 同时增发20%的以太坊(120万个ETH)用于促进发展,建立以太坊基金会。
软件发布代号:Frontier/Homestead/Metropolis/Serenity
这些是核心以太坊软件版本的友好名称,有点像 Apple 的 OS X 版本名称,例如 Mavericks、El Capitan、Sierra。
这是对不同版本的以太坊软件的昵称,就像苹果的 OS X 系列名称 Mavericks、El Capitan、Sierra。
Olympic(测试网):2015 年 5 月发布的测试版,使用与真实以太币不兼容的代币。 测试网与核心在线网络并行运行,开发人员可以在其中测试他们的代码。
Frontier:2015 年 7 月 30 日发布,最初的在线版本允许人们挖掘以太币来构建和运行合约。
Homestead:2016 年 3 月 14 日发布,更改了一些协议以使其更加稳定。
Metropolis:以后会发布,从命令行到GUI。
Serenity:未来会发布,从PoW变为PoS(Casper)。
总结
以太坊开发团队的愿景是创建一个不可阻挡的、屏蔽(审查)抵抗和自我维持的去中心化世界计算机,可以执行计算、存储数据和通信。
它有一个公共的未经许可的开源版本、源代码的分支和适合在专用网络上使用的克隆。 公共和私人版本试图解决不同的问题。
该技术在现阶段还不成熟,但随着更多人使用、测试、开发和构建,它会不断完善并变得更强大。
以太坊是区块链领域最令人兴奋的技术之一,值得关注它的进展。