以太坊源码分析
文章平均质量分 90
详细描述了以太坊源码的细节,从入门到精通,更好的了解区块链技术
mindcarver
匠心
展开
-
死磕以太坊源码分析之blockChain分析
死磕以太坊源码分析之blockChain分析配合以下代码进行阅读:https://github.com/blockchainGuide/写文不易,给个小关注,有什么问题可以指出,便于大家交流学习。blockchain关键元素db:持久化到底层数据储存,即leveldb;genesisBlock:创始区块currentBlock:当前区块,blockchain中并不是储存链所有的block,而是通过currentBlock向前回溯直到genesisBlock,这样就构成了区块链bodyCa.原创 2021-02-27 10:35:53 · 597 阅读 · 0 评论 -
死磕以太坊源码分析之区块上链入库
死磕以太坊源码分析之区块上链入库配合以下代码进行阅读:https://github.com/blockchainGuide/写文不易,给个小关注,有什么问题可以指出,便于大家交流学习。引言不管是矿工挖矿还是Fetcher同步,Downloader同步,或者是导入本地文件等等,最中都是将区块上链入库。接下来我们就详细分析这部分的动作。几处可能调用的地方①:在Downloader同步最后会将区块插入到区块链中func (d *Downloader) importBlockResults(res.原创 2021-02-24 08:50:31 · 473 阅读 · 0 评论 -
死磕以太坊源码分析之Ethash共识算法
死磕以太坊源码分析之Ethash共识算法代码分支:https://github.com/ethereum/go-ethereum/tree/v1.9.9文章合集:https://github.com/blockchainGuide引言目前以太坊中有两个共识算法的实现:clique和ethash。而ethash是目前以太坊主网(Homestead版本)的POW共识算法。目录结构ethash模块位于以太坊项目目录下的consensus/ethash目录下。algorithm.go实现了Da.原创 2021-02-21 08:46:01 · 851 阅读 · 1 评论 -
死磕以太坊源码分析之区块上链入库
死磕以太坊源码分析之区块上链入库配合以下代码进行阅读:https://github.com/blockchainGuide/写文不易,给个小关注,有什么问题可以指出,便于大家交流学习。引言不管是矿工挖矿还是Fetcher同步,Downloader同步,或者是导入本地文件等等,最中都是将区块上链入库。接下来我们就详细分析这部分的动作。几处可能调用的地方①:在Downloader同步最后会将区块插入到区块链中func (d *Downloader) importBlockResults(res.原创 2020-12-24 10:47:50 · 456 阅读 · 0 评论 -
死磕以太坊源码分析之Fetcher同步
死磕以太坊源码分析之Fetcher同步Fetcher 功能概述区块数据同步分为被动同步和主动同步:被动同步是指本地节点收到其他节点的一些广播的消息,然后请求区块信息。主动同步是指节点主动向其他节点请求区块数据,比如geth刚启动时的syning,以及运行时定时和相邻节点同步Fetcher负责被动同步,主要做以下事情:收到完整的block广播消息(NewBlockMsg)收到blockhash广播消息(NewBlockHashesMsg)这两个消息又是分别由 peer.As.原创 2020-12-03 08:51:05 · 346 阅读 · 0 评论 -
死磕以太坊源码分析之rlpx协议
死磕以太坊源码分析之rlpx协议本文主要参考自eth官方文档:rlpx协议符号X || Y:表示X和Y的串联X ^ Y: X和Y按位异或X[:N]:X的前N个字节[X, Y, Z, ...]:[X, Y, Z, …]的RLP递归编码keccak256(MESSAGE):以太坊使用的keccak256哈希算法ecies.encrypt(PUBKEY, MESSAGE, AUTHDATA):RLPx使用的非对称身份验证加密函数 AUTHDATA是身份认证的数据,并非密文的一部分 .原创 2020-11-24 16:50:32 · 660 阅读 · 0 评论 -
死磕以太坊源码分析之p2p节点发现
死磕以太坊源码分析之p2p节点发现在阅读节点发现源码之前必须要理解kadmilia算法,可以参考:KAD算法详解。节点发现概述节点发现,使本地节点得知其他节点的信息,进而加入到p2p网络中。以太坊的节点发现基于类似的kademlia算法,源码中有两个版本,v4和v5。v4适用于全节点,通过discover.ListenUDP使用,v5适用于轻节点通过discv5.ListenUDP使用,本文介绍的是v4版本。节点发现功能主要涉及 Server Table udp 这几个数据结构,它们有独自的事.原创 2020-11-23 21:21:16 · 679 阅读 · 0 评论 -
以太坊源码分析之P2P网络启动
文章目录p2p源码目录启动p2p网络Start()设置本地节点设置监听设置节点发现创建DialState运行p2p网络srv.run(dialer)发起TCP连接任务执行TCP连接任务管理TCP连接任务总结参考p2p源码目录discover/ 基于UDP的节点发现V4协议 discv5/ 节点发现V5协议 enode/ 节点信息 enr/ 以太坊节点记录(ethereum node records)原创 2020-11-21 15:10:53 · 690 阅读 · 0 评论 -
以太坊blockchain源码分析
blockchain关键元素db:持久化到底层数据储存,即leveldb;genesisBlock:创始区块currentBlock:当前区块,blockchain中并不是储存链所有的block,而是通过currentBlock向前回溯直到genesisBlock,这样就构成了区块链bodyCache、bodyRLPCache、blockCache、futureBlocks:区块链中的缓存结构,用于加快区块链的读取和构建;hc:headerchain区块头链,由blockchain额外维护的另一原创 2020-10-16 16:25:08 · 520 阅读 · 1 评论 -
以太坊启动过程源码解析
文章以及资料(开源):github地址文章目录启动参数源码分析加载配置和注册服务1.加载配置2.RegisterEthService3.RegisterShhService4.RegisterEthStatsService启动节点1.启动节点1.1 stack.Start()2.解锁账户3.注册钱包事件4.监听钱包事件5.启动挖矿启动守护线程总结启动参数以太坊是如何启动一个网络节点的呢?./geth --datadir "../data0" --nodekeyhex "27aa615f5fa54.原创 2020-10-13 14:11:10 · 746 阅读 · 1 评论