以太坊源码分析报告

以太坊源码分析报告

ID:47549618

大小:3.04 MB

页数:52页

时间:2020-01-14

以太坊源码分析报告_第1页
以太坊源码分析报告_第2页
以太坊源码分析报告_第3页
以太坊源码分析报告_第4页
以太坊源码分析报告_第5页
资源描述:

《以太坊源码分析报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、以太坊源码分析报告一、前言以比特币为代表的虚拟货币时代,代表着区块链1.0,基于P2P网络构建,实现了去中心化的数字货币交易功能。但是1.0只满足了虚拟货币的需要,很难普及到其他行业。比如比特币只提供了有限的非图灵完备的脚本能力,不大可能在其上搭建第三方的应用。发展到区块链2.0,便出现了以以太坊为代表的智能合约平台,提供强大的合约编程环境,可以实现复杂的业务逻辑。与比特币系统相比以太坊并没有本质的区别,只是全面实现和支持智能合约,让区块链技术不只是发币。本文以以太坊的官方go语言版本实现go-ethereum为目标,分析其源码实现。二、以太坊架构简介以太坊实现Web3.js

2、核心去中心化应用层智能合约层EVMRPC区块链管理模块共识模块挖矿模块网络模块P2P加解密库levelDBSolidityMath&Number账户管理模块1.最顶层是去中心化应用层,即DApp。它使用truffle开发测试框架(最流行)编写部署和测试客户端,并通过web3.js和智能合约层交互;2.智能合约层通过以太坊虚拟机EVM交互处理BlockChain及共识相关的事务,同时通过RPC协议进行挖矿和网络层事务的交互;1.区块链管理模块围绕交易、块和状态进行管理,包括区块的同步验证及异常和分叉处理、交易的广播接收处理和验证及执行、底层数据的读写更新等;2.共识模块是制定的

3、认定区块合法的机制,包括PoW(ProofOfWork工作量证明,以太坊使用变种的Ethash算法)及PoS(ProofOfStake权益证明,只在测试网络中使用),符合共识算法的新区块才会被节点认可和接纳,链接到分布式账本中,同时才能让矿工得到收益;3.挖矿模块管理挖矿工作,将争夺记账权的过程分解成多个并行子任务进行;4.账户管理模块管理以太坊系统中的账户,包括普通账户及合约账户的生成和管理,还有钱包及密钥的生成、导入和导出;5.网络模块管理着系统中的Peer、Protocol、Downloader、Sync等角色,为整个分布式网络提供节点间的共识基础。包括节点对端连接的动

4、态管理、ETH/LES/LES2协议的支持、各类数据包的下载和同步;6.架构的最底层功能为上层模块提供了基础P2P网络的通讯、secp251和sha3等加解密算法、高效的LevelDB键值对存储数据库、合约语言基础及大数字的基本运算。一、源码目录结构一、基本概念在以太坊的YellowPaper中,把整个以太坊看成是一个基于交易的状态机。从创世状态开始,在一批交易执行后便进入到下一个新的状态,直到当前的终态。创世态状态1交易状态N……..交易交易Block0HeaderTXsBlock1HeaderTXs BlockNHeaderTXs ……BlockChain1.交易当一个账

5、户向另一个账户发送一笔被签名的消息数据包时,就产生了一笔交易。账户可以是普通账户,也可以是合约账户。交易执行时需要花费手续费。交易Transaction定义在core/types/transaction.go中:Transaction的主体定义在txdata中,其它成员都只是交易常用信息的缓存:hash:交易RLP编码后的哈希值;size:交易RLP编码后的大小;from:交易的发送地址,它并不存储在交易体里,而是由txdata中的V,R,S值推导出来;交易的主要信息包含在txdata中,包括如下字段:AccountNonce:代表发送账户发出的第几笔交易;Price:交易发

6、送者愿意支付的一单位gas费用的价格;GasLimit:交易执行所花费最大的gas值。如果超过该值则交易失败;Receipient:交易的接收地址;Amount:从发送地址向接收地址转移的以太币数量;Payload:可选,在创建合约时表示合约代码,或者调用合约时调用参数;V

7、R

8、S:secp256k1签名数据;Hash:同Transaction.hash,在转换为Json格式时用到;1.区块一个区块包含了一系列的交易,矿工节点收集本地发起的及网络中其它节点广播的新交易,验证交易的有效性,然后将它们打包到一个原始区块中,最后通过挖矿得到一个数学机制的“工作量证明”写到该区块,从

9、而得到一个新的合法区块,广播到网络中,在其它矿工验证区块有效后添加到主链上。区块的定义在core/types/block.go中:header:Block的核心,由后面给出其定义;uncles:叔块,以太坊对孤块(发现晚但是合法的新块)的处理和比特币的抛弃式处理不同,因为以太坊十几秒的出块间隔会导致大量的孤块,因此以太坊鼓励矿工引用孤块成为叔块并支付报酬,减少昂贵成本的浪费,使得主链更重提升安全性,也缓解矿池中心化问题;transactions:区块打包的一批交易;td:TotalDifficulty,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。