以太坊
zhichunqi
幸福或许就是命中注定要发生的事......
展开
-
以太坊源码分析(1)go-ethereum的设计思路及模块组织形式
go-ethereum的设计思路及模块组织形式=================================== 以太坊的目标是基于区块链技术打造一个运行智能合约的去中心化平台。 ## 一. 区块链技术区块链属于一种去中心化的数字记账技术,区块链数据由彼此互不信任的节点共同维护,每个节点复制一份完整的记录。 ## 二. 以太坊核心概念* EVM: 以太坊虚拟...转载 2018-08-18 17:15:23 · 356 阅读 · 0 评论 -
以太坊源码情景分析之区块(block)数据之被动同步
区块数据同步分为被动同步和主动同步被动同步是指本地节点收到其他节点的一些消息,然后请求区块信息。比如NewBlockHashesMsg主动同步是指节点主动向其他节点请求区块数据,比如geth刚启动时的syning,以及运行时定时和相邻节点同步被动同步 被动同步由fetcher完成,被动模式又分为两种收到完整的block广播消息(NewBlockMsg) 收到blockh...转载 2018-08-17 11:37:02 · 935 阅读 · 0 评论 -
以太坊源码分析(31)eth-downloader-peer源码分析
peer模块包含了downloader使用的peer节点,封装了吞吐量,是否空闲,并记录了之前失败的信息。 ## peer // peerConnection represents an active peer from which hashes and blocks are retrieved. type peerConnection struct {...转载 2018-08-19 11:05:15 · 244 阅读 · 0 评论 -
以太坊源码分析(22)core-genesis创世区块源码分析
genesis 是创世区块的意思. 一个区块链就是从同一个创世区块开始,通过规则形成的.不同的网络有不同的创世区块, 主网络和测试网路的创世区块是不同的. 这个模块根据传入的genesis的初始值和database,来设置genesis的状态,如果不存在创世区块,那么在database里面创建它。 数据结构 // Genesis specifies the h...转载 2018-08-19 10:32:58 · 419 阅读 · 0 评论 -
以太坊源码分析(14)P2P分析
#概述Kademlia(简称Kad)是一种分布式哈希表技术,用于建立p2p网络拓扑结构。 基本原理就是以两个节点ID的异或值作为两节点间的距离d,每个节点都将其他节点的信息存储到称之为K桶的表结构中,该表结构按照d的为1的最高bit位分层(可理解为桶索引),每层中存储最多K个节点信息。如下:| I | 距离范围 | 邻居 ||:---:|:---------:|:-------...转载 2018-08-18 20:48:45 · 266 阅读 · 0 评论 -
以太坊源码分析(10)CMD深入分析
### cmd包分析#### cmd下面总共有13个子包,除了util包之外,每个子包都有一个主函数,每个主函数的init方法中都定义了该主函数支持的命令,如 ##### geth包下面的: ```func init() { // Initialize the CLI app and start Geth app.Action = geth a...转载 2018-08-18 20:27:26 · 672 阅读 · 0 评论 -
以太坊源码分析(8)区块分析
## 区块存储区块的存储是由leveldb完成的,leveldb的数据是以键值对存储的。在这里保存区块信息时,key一般是与hash相关的,value所保存的数据结构是经过RLP编码的。在代码中,core/database_util.go中封装了区块存储和读取相关的代码。在存储区块信息时,会将区块头和区块体分开进行存储。因此在区块的结构体中,能够看到Header和Body两个结构体。...转载 2018-08-18 17:55:35 · 378 阅读 · 0 评论 -
以太坊源码分析(7)Ethereum 资源分享
# Awesome Ethereum [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) > collection of be...转载 2018-08-18 17:35:34 · 1084 阅读 · 0 评论 -
以太坊源码情景分析之区块(block)数据同步之主动同步
主动同步 同步入口 主动同步有好几个主要场景geth刚启动 新peer加入 定时sync 后面两个场景入口都在ProtocolManager.syncerfunc (pm *ProtocolManager) syncer() { // Start and ensure cleanup of sync mechanisms pm.fetche...转载 2018-08-28 15:34:24 · 1384 阅读 · 0 评论