以太坊
浪里个浪の
要得到有价值的东西,你就得做出牺牲。你知不知道,难做的事和应该做的事,往往是同一件事。凡是有意义的事都不会容易,成年人的生活里没有容易二字
展开
-
基于windows平台以太坊源码编译环境的搭建
本人秉着对区块链技术的热爱,在平时空余时间学习以太坊源码。为了方便后来者,我把我学习的心得记录下来。 对于区块链的学习最好最直接的办法就是阅读源码并进行相关修改编译,查看相关变化,下面就对windows环境下搭建以太坊GO语言源码编译环境进行介绍。 一、GO语言编译环境的安装 首先是GO语言编辑器的安装,本人选择 ...原创 2019-03-14 22:15:20 · 942 阅读 · 0 评论 -
以太坊源码之交易池启动过程分析
从以太坊的main函数入手,该源码在项目工程中的 cmd/geth/main.go 中,代码如下: func main() { if err := app.Run(os.Args); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } ...原创 2019-03-15 10:11:55 · 650 阅读 · 0 评论 -
以太坊源码之RPC服务
搭建过以太坊私链的同学或许都通过console或者Postman第三方工具去查询以太坊主链的相关信息,如通过区块高度查询区块信息。在以太坊的底层,这些都是通过RPC的调用去实现的,今天就来看看以太坊底层RPC启动方面的源码,了解一下RPC的启动过程。 RPC在以太坊源码中的启动步骤如下: ----- geth -------- startNode ----------- utils.StartNo...原创 2019-03-29 21:56:36 · 833 阅读 · 0 评论 -
以太坊源码之Miner启动过程分析
之前已经撸过了以太坊的交易池启动和交易池数据维护部分的源码。交易池中的交易数据全部由矿工进行验证,打包,进行工作量证明后加入主链。接下来就撸一撸以太坊Miner模块的源码,先从Miner的启动开始解读代码。 老规矩,先来介绍一下miner模块几个关键的结构体,如下: type Miner struct { mux *event.TypeMux // 事件锁,已被feed.mu.lock替...原创 2019-03-21 17:32:53 · 1236 阅读 · 0 评论 -
基于windows10搭建以太坊私有链环境
在windows电脑上创建一个文件夹,目录下包含一个data目录,一个genesis文件(创建创世区块的配置文件),genesis的内容如下: { “config”: { “chainId”: 0, “homesteadBlock”: 0, “eip155Block”: 0, “eip158Block”: 0 }, “alloc” : {}, “coinbase” ...原创 2019-03-21 22:15:13 · 1203 阅读 · 0 评论 -
以太坊源码之挖矿与区块确认
大家都知道,以太坊前期的共识算法是工作量证明(POW),可以简单的理解为下述的公式: RAND(h, nonce) <= M / d 其中h表示区块头的哈希;nonce表示一个自增的变量;RAND表示经过一系列算法生成数值;M表示一个极大的数;d则是当前区块的难度值header.diffculty。 当组装好区块数据后,程序通过不断尝试不同的nonce数值进行RAND运行,使其满足M / d...原创 2019-03-25 20:34:12 · 2464 阅读 · 0 评论 -
以太坊的事件与日志
1.什么是事件 事件是以太坊提供的一种链内链外沟通的一种机制。通过触发事件,智能合约可以通知链外组件某个交易完成了什么事儿。 下面是一个 ERC20 合约里常见的 Transfer 事件定义,通过 event 关键字表明这是一个事件定义声明。 event Transfer(address indexed from, address indexed to, uint256 value); 在 tra...转载 2019-04-02 16:53:00 · 1707 阅读 · 0 评论