网站互联网接入商,2015年做那些网站能致富,百度联盟怎么赚钱,茶叶门户网站建立1. 以太坊简介 Vitalik Buterin 在 2013 年 11 月提出了以太坊的概念#xff0c;其关键思想是#xff1a;开发一种图灵完备#xff08;Turing-Complete) 的语言#xff0c;以允许开发用于区块链和去中心化应用的任意程序#xff08;智能合约#xff09;。该概念与比特比相…1. 以太坊简介 Vitalik Buterin 在 2013 年 11 月提出了以太坊的概念其关键思想是开发一种图灵完备Turing-Complete) 的语言以允许开发用于区块链和去中心化应用的任意程序智能合约。该概念与比特比相反因为后者的脚本语言本质上是受限制的并且仅允许进行必要的操作。 下表显示了以太坊从第一个版本到计划的最终版本在内的所有版本。
版本发布日期Olympic(奥林匹克2015 年 5 月Frontier(前沿2015 年 7月Homestead家园2016 年 3月 Metropolis (大都会 Byzantine (拜占庭大都会的第一阶段 2017 年 10 月Constantinople君士坦丁堡大都会的第二阶段2019 年 3 月Serenty宁静以太坊最终版即将发布 以太坊的第一个版本为 Olympic (奥林匹克于 2015 年 5 月发布。 大约两个月后即 2015 年 7 月以太坊的一个名为 Frontier (前沿的版本发布。 2016 年 3 月发布了具有改进功能的名为 Homestead (家园 的版本。 2017 年 10 月Byzantium (拜占庭版本发布这是 Metropolis (大都会 版本的第一阶段。此版本于 2017 年 10 月在区块高度为 4370000 的区块上实施了 Constantinople (君士坦丁堡硬分叉这也是 Metropolis 版本的第二阶段。 2019 年 3 月以太坊网络在区块高度为 708000 的区块上实施了 Constantinople(君士坦丁堡硬分叉这也是 Metropolis 版本的第二阶段。 以太坊的最终计划发行版本称为 Serenity (宁静它将计划引入基于 PoS 的最终版本而不是 PoW。 在以太坊黄皮书中已经描述了以太坊的正式规范该规范可用于开发以太坊实现。现在我们就来认识一下这个黄皮书。
1.1 黄皮书 以太坊黄皮书由 Ethereum Parity 公司创始人 Gavin Wood 博士撰写并作为以太坊协议的正式定义。任何人都可以通过遵循该黄皮书定义的协议规范来实现以太坊客户端。其网址如下
https://ethereum.github.io/yellowpaper/paper.pdf 尽管普通人阅读该黄皮书可能有些挑战尤其是对于没有代数或数学背景并且不熟悉数学符号的读者来说想要全面理解可能需要多做功课但它包含了以太坊的完整、正式规范该规范可用于实现完全兼容的以太坊客户端。 下面将提供该黄皮书中所有符号及其含义的列表以帮助你更轻松地阅读以太坊黄皮书。在理解了这些符号的含义之后就能轻松理解该黄皮书所描述的概念和规范。 1.2 有用的数学符号
1.3 以太坊区块链 就像其他任何区块链一样以太坊区块链可以可视化为基于交易的状态机。Gavin Wood 博士在以太坊黄皮书中提到了这个定义。其核心思想是在以太坊区块链中通过逐步执行交易将初始状态转换为最终状态然后将最终转换后的状态作为绝对无可争议的版本。 在下图中显示了以太坊状态转换函数其中交易的执行已导致状态转换。 原文译文原文译文INITAL STATE初始状态FINAL STATE最终状态TRANSACTION交易 在上图中启动了两个以太坊从地址 4718bf7a 到地址 741f7a2 的转移。初始状态表示交易执行之前的状态而最终状态则表示交易执行之后的状态。 状态将作为世界状态World State) 存储在以太坊网络上这也称为以太坊区块链的全球状态Global State)。
2. 从用户角度观察以太坊 下面将从用户的角度了解以太坊的工作方式。为此我们将介绍最常见的转帐示例。 在本示例中将从一个用户刘玄德转帐到另一个用户张翼德。我们将使用两个以太坊客户端一个用于汇款另一个用于接收汇款。此过程涉及以下步骤 1转帐双方都可以发起操作。收款人可以通过将请求发送给付款人来要求转帐付款人也可以直接决定将钱款发送给收款人。 收款人发起请求时可以将收款人的以太坊地址发送给付款人。例如有两个用户刘玄德和张翼德如果张翼德粮草不足要求刘玄德付款则可以使用二维码将请求发送给刘玄德。刘玄德收到此请求后将扫描二维码或手动输入张翼德的以太坊地址然后将以太币发送到张翼德的以太坊地址。该请求被编码为如下图所示的二维码 原文译文Tap to copy this address.Share it with the sender via email or text.点击以复制此地址。可通过电子邮件或短信与发送者付款人共享 可以通过电子邮件、文本或任何其他通信方式共享。Jaxx 钱包的下载地址如下https://jaxx.io
2一旦刘玄德收到此请求他将扫描二维码或在以太坊钱包软件中复制以太坊地址并启动交易如下图所示 其中iOS 上的 Jaxx Ethereum 钱包软件用于向张翼德汇款。该图还显示刘玄德已输入了用于发送以太币的金额和目标地址。在发送以太币之前最后一步是确认Confirm)交易。
3一旦在钱包软件中构造了汇款请求交易它将被广播到以太坊网络。交易由发送方刘玄德进行数字签名以证明他是该以太币的所有者。
4该交易由以太坊网络上称为矿工的节点进行拾取以进行验证并将其包含在区块中。在此阶段交易仍未确认。
5一旦被验证并包含在区块中PoW 过程就会开始。
6一旦矿工找到了 PoW 问题的答案通过使用新的随机数重复对区块进行哈希处理则该区块将立即被广播到其余节点然后其他节点将验证该区块和 PoW。
7如果所有验证都通过则此区块将添加到区块链中并相应地向矿工支付奖励。
8张翼德得到以太币并在他的钱包软件中显示出来如下图所示 在区块链上此交易由以下交易哈希标识
0xc63dce674e1640abd63ee63027c3352aed8cdb92b6a02ae25225666e171009e
可以在 https://etherscan.io/ 的区块浏览器中查看有关该交易的详细信息如下图所示。 在上述示例中我们完成了最常见的以太坊网络操作即将以太币从一个用户转帐到另一个用户。本示例只是对交易过程的大致介绍目的是让你形成对以太币交易的粗略概念。
3. 以太坊网络 和比特币网络一样以太坊网络也是一个点对点网络节点参与其中以维护区块链并促进共识机制。根据需求和使用情况以太网络可以分为 3 种类型主网、测试网络和私有网络。
3.1 主网 主网Mainnet) 是以太坊当前的实时网络。主网的当前版本为 Byzantium(Metropolis),其链 ID 为1。链 ID 用于标识网络可以使用以太坊浏览器探索以太坊区块链。
3.2 测试网络 以太坊的测试网络Testnet) 也称为 Ropsten,是以太坊区块链广泛使用的测试网络。该测试区块链用于在部署到生产实时区块链之前测试智能合约和 DApp。此外作为测试网络它也可以进行实验和研究。 主测试网络称为 Ropsten,其中包含针对特定版本创建的其他较小和专用测试网络的所有功能。其他的测试网络包括测试拜占庭版本而开发的 Kovan 和 Rinkeby。在这些较小的测试网络上实现的更改也已在 Ropsten 上实现。现在,Ropsten 测试网络包含 Kovan 和 Rinkeby 的所有属性。
3.3 私有网络 私有网顾名思义就是可以通过生成新的创世区块而创建的私有网络Private Net)。在私有区块链分布式帐本网络中通常就是这种情况在该类网络中一组私有实体启动其区块链并将其用作许可的区块链。 下表显示了以太坊网络及其网络 ID 的列表这些网络 ID 被以太坊客户端用来标识网络。
网络名称网络ID/链以太坊主网ordenRopstenRinkebyKovan42经典以太坊主网61
4. 以太坊生态系统的组成部分 以太坊区块链堆栈包含多个组成部分。 首先其核心是在对等以太坊网络上运行的以太坊区块链。 其次有一个运行在节点上的以太坊客户端通常是 Geth)。客户端连接到点对点以太坊网络从该网络下载区块链并存储在本地。它提供了各种功能例如挖矿和帐户管理。区块链的本地副本定期与网络同步。 还有一个组件是 web3.js 库该库允许通过远程过程调用Remote Procedure Call,RPC)接口与 geth 客户端进行交互。 下图显示了以太坊显示的架构。 原文译文WEB3 OR CUSTOM INTERFACEweb3 或自定义接口RPC远程过程调用(RPC)ETHEREUM CLIENT以太坊客户端LOCAL BLOCK CHAIN本地区块链Synced with main network与主网同步
以下是以太坊区块链中所有高级元素的正式列表
密钥和地址帐户交易和消息以太坊加密货币代币以太坊虚拟机EVM智能合约 5. 交易和消息 以太坊中的交易是使用私钥进行数字签名的数据包,其中包含的指令在完成后会导致消息调用或合约创建. 交易可以根据它们产生的输出又分为以下两种类型:
消息调用交易。此交易仅产生一个消息调用,该消息调用用于将消息从一个合约帐户传递到另一个合约帐户.合约创建交易。合约创建交易,顾名思义就是交易导致创建新的合约帐户.这意味着,成功执行此交易后,它将创建一个具有关联代码的帐户。
下图对此结构进行了可视化处理 5.3 消息
在下图中显示了两种类型的交易合约创建和消息调用之间的区别。 6. 以太坊区块链中的状态存储 从根本上讲,以太坊区块链是一种由交易和共识驱动的状态机。状态需要永久存储在区块链中。为此,世界状态、交易和交易收据都将以区块的形式存储在区块链上。
下图显示了世界状态以及它与帐户字典树、帐户和区块标头之间的关系。 下图显示了交易收据的生成过程。 7. 以太币 作为对矿工的激励,以太坊会发放它自己的货币,也就是以太币. 在 DAO 遭到入侵后,提出了一个硬分叉来解决该问题。现在出现了两个以太坊区块链:一是经典以太坊(Ethereum Classic) ,其货币以 ETC 表示; 二是硬分叉版本的代币 ETH,它将继续增长并且正在积极地进行开发。
8. 以太坊虚拟机 以太坊虚拟机是一个简单的基于堆栈的执行机,它运行字节码指令以将系统状态从一种状态转换为另一种状态。虚拟机的字长设置为 256 位。堆栈大小限制为 1024 个元素,并且基于后进先出(Last In,First Out,LIFO)队列。
下图显示了 EVM 的设计。 执行环境可以可视化为包含 10 个元素的元组如下图所示。 8.3 迭代器函数
机器状态可以看作是一个元组如下图所示