以太坊源码分析
文章平均质量分 94
以源码的方式分析以太坊机制
区块链斜杠青年
这个作者很懒,什么都没留下…
展开
-
以太坊(go-ethereum)编译调试环境搭建
以下步骤都是在MacOs上操作的,但同样适合Ubuntu,只是有几个小点有所不同,我会标注出来编译1. Go环境搭建 Mac: (brew是一个类似ubuntu apt-get的工具,用来在终端安装软件的)brew update && brew upgradebrew install gitbrew install mercurialbrew install go Ub...原创 2018-04-24 11:10:00 · 8334 阅读 · 2 评论 -
搭建以太坊私有网络
Geth安装MacOs: brew install ethereumUbuntu: sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum 创建临时私有链以创建初始账号genesis.json{ "config": { ...原创 2018-04-25 13:59:12 · 2582 阅读 · 0 评论 -
以太坊源码情景分析之RPC服务
以太坊RPC服务和比特币差不太多,所以一两个月前看的时候就没记录下来。最近因为项目需要在以太坊上做点东西,发现有些竟然有点忘了,于是赶紧记录下来。 RPC服务数据结构及时序数据流向图如下: 结构图总体摘要 APIS对象保存了系统所有定义和配置的service对象,startRPC启动时会将这些service对象的所有函数反射出来,保...原创 2018-06-07 09:55:59 · 2169 阅读 · 0 评论 -
以太坊MPT原理,你最值得看的一篇
MPT的全称是Merkle Patricia Tree, 从这里可以看出MPT是Merkle Tree + Patricia Tree。接下来就就来讲讲这两种树: Merkle Tree 区块链P2P网络中,如果需要传输的数据很大,就需要同时从多个机器上下载数据,而且很可能有些机器是不稳定(可能下载速度很慢)或者不可信的(需要重新下载)。为了快速下载大块数据并验证,...原创 2018-04-18 16:13:47 · 11106 阅读 · 9 评论 -
以太坊源码情景分析之数据结构
数据结构关系图 以太坊采用账号系统,因而相比比特币,它除了区块数据外还有账号数据。同时它有图灵完备的智能合约虚拟机,因而又多了一个状态数据,同时为了保留执行记录,又多了一个receipt数据Block: 由header和body构成,header里有三个trie的rootHash<hash, receipt>数据构造的receipt trie, header.recei...原创 2018-04-26 15:09:58 · 3374 阅读 · 0 评论 -
以太坊智能合约之语言汇编分析
开发环境Browser-solidity是一个solidity在线网页开发idehttps://ethereum.github.io/browser-solidity记得用chrome浏览器打开相关操作如下合约汇编分析 evm的变量存储是采用<key(variable), variable_value>的方式存储的,核心是key的计算,对于不同类型的变量,这个key的计算方法也...原创 2018-05-04 15:25:26 · 3222 阅读 · 0 评论 -
以太坊智能合约balanceof的正确用法
balancof通常可以有两种用法: 查询余额 查询余额并空投币查询余额 一般会有如下代码 contract Test { address owner = msg.sender; mapping (address => uint256) balances; function balanceOf(address _owner) public ret...原创 2018-05-16 10:51:44 · 7383 阅读 · 0 评论 -
以太坊header.extra字段
一开始看到header.extra这个可变长度字段很是惊喜和诧异,因为它是变长的,那矿工不是可以随意写数据到这个字段,万一矿工作恶加入一个很大的数据,那其他节点不得累死?解决这一疑惑的唯一方式------看代码type Header struct { ... Extra []byte `json:"extraData" gencodec:"required"` ...}Head...原创 2018-05-16 11:11:24 · 3269 阅读 · 0 评论