1. 整体概览

makefile

CANDY:

.PHONY: geth android ios geth-cross swarm evm all test clean

已知phony 目标并非是由其它文件生成的实际文件,make 会跳过隐含规则搜索。这就是声明phony 目标会改善性能的原因,即使你并不担心实际文件存在与否。

/CANDY

入口主要与两个文件有关 build/env.sh build/ci.go

依赖的其他库有:

env GOBIN= go get -u golang.org/x/tools/cmd/stringer
env GOBIN= go get -u github.com/kevinburke/go-bindata/go-bindata
env GOBIN= go get -u github.com/fjl/gencodec
env GOBIN= go get -u github.com/golang/protobuf/protoc-gen-go
env GOBIN= go install ./cmd/abigen

env GOBIN= go install ./cmd/swarm/mimegen

在ci.go里可以了解到,

主要有两部分

1. ethereum

包含

a. abigen: 把以太坊合约定义编译为go package

b. bootnode 实现了网络发现的节点

c. evm 虚拟机,虚拟机开发工具,用于提供一个可配置,受隔离的代码调试环境

d. geth 命令行客户端

e. puppeth 管理以太网专用网络?

f. rlpdump 打印RLP结构的开发工具

g. wnode Ethereum Whisper诊断工具

h. clef 以太坊账户管理工具

2. swarm

目前推测可能与跨平台有关?

看到build里还有nsis,感觉很亲切

外部的文件夹,docs里面有代码质量的审计报告, vendor里有第三方代码,装着源码的共有以下34?个

a. accounts 以太坊账户管理

b. cmd 命令行工具的包装

c. common

d. consensus 一些共识算法

e. console

f. contracts

g. core 核心算法(虚拟机,状态,区块链,布隆过滤器)

h. crpto 加密和hash算法

i. dashboard 控制台

j. eth 实现以太坊协议

k. ethclient 以太坊RPC客户端

l. ethdb eth数据库,包含实际使用的和测试用的

m. ethstats 提供网络状态的报告

n. event 处理实时事件

o. graphql

p. internal

q. les 轻量级协议子集

r. light 为轻量级客户端按需检索

s. log

t. metrics 磁盘计数器

u. miner 区块创建和挖矿

v. mobile 移动端使用的一些wrapper

w. node 多种类型的节点

x. p2p p2p网络协议

y. params

z. rlp 序列化处理

aa. rpc 远程方法调用

ab.signer

ac. swarm

ad. tests

ae. trie

af. whisper whisper节点协议

目前看来最可能成为突破口的是tests,其次是cmd或者ethclient这类,最应该关注的是p2p,consensus和contracts, evm。需要格外注意whisper,必须要把clef相关的源码了解透彻

最后最好把docs中提到的漏洞理解

接下来看他人的解析

1. cmd文件夹下

a. abigen contract2go

b. bootnode 仅仅实现网络发现的节点

c. evm 虚拟机开发工具,用于提供一个可配置的,受隔离的代码调试环境

d. faucet 防止攻击者耗尽所有funds?或者积累足够的Ether来邮件轰炸

CANDY

What is ether?

用来支付操作以太坊平台的费用

/CANDY

e. geth 命令行客户端

f. p2psim 模拟p2p网络

g. puppeth 创建新以太坊网络的向导

h. rlpdump RLP数据的格式化输出

i. swam swam网络接入点

j. util

k. wnode 简单的whisper节点

转载于:https://www.cnblogs.com/xuesu/p/10544250.html

Go-ethereum源码解析-Part I相关推荐

  1. 以太坊Geth 共识算法源码解析

    共识算法 目前以太坊中有两个公式算法的实现,分别为clique和ethash.其中clique是PoA共识的实现,ethash是PoW共识的实现,其相应的代码位于go-ethereum/consens ...

  2. go-ethereum源码解析

    ## go-ethereum源码解析 因为go ethereum是最被广泛使用的以太坊客户端, 所以后续的源码分析都从github上面的这份代码进行分析. ### 搭建go ethereum调试环境 ...

  3. 谷歌BERT预训练源码解析(二):模型构建

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_39470744/arti ...

  4. 谷歌BERT预训练源码解析(三):训练过程

    目录 前言 源码解析 主函数 自定义模型 遮蔽词预测 下一句预测 规范化数据集 前言 本部分介绍BERT训练过程,BERT模型训练过程是在自己的TPU上进行的,这部分我没做过研究所以不做深入探讨.BE ...

  5. 谷歌BERT预训练源码解析(一):训练数据生成

    目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT,简单来说,它是一个基于Transfo ...

  6. Gin源码解析和例子——中间件(middleware)

    在<Gin源码解析和例子--路由>一文中,我们已经初识中间件.本文将继续探讨这个技术.(转载请指明出于breaksoftware的csdn博客) Gin的中间件,本质是一个匿名回调函数.这 ...

  7. Colly源码解析——结合例子分析底层实现

    通过<Colly源码解析--框架>分析,我们可以知道Colly执行的主要流程.本文将结合http://go-colly.org上的例子分析一些高级设置的底层实现.(转载请指明出于break ...

  8. libev源码解析——定时器监视器和组织形式

    我们先看下定时器监视器的数据结构.(转载请指明出于breaksoftware的csdn博客) /* invoked after a specific time, repeatable (based o ...

  9. libev源码解析——定时器原理

    本文将回答<libev源码解析--I/O模型>中抛出的两个问题.(转载请指明出于breaksoftware的csdn博客) 对于问题1:为什么backend_poll函数需要指定超时?我们 ...

  10. libev源码解析——I/O模型

    在<libev源码解析--总览>一文中,我们介绍过,libev是一个基于事件的循环库.本文将介绍其和事件及循环之间的关系.(转载请指明出于breaksoftware的csdn博客) 目前i ...

最新文章

  1. vue中的时间过滤器
  2. 9月份个人:windows系统的DNS服务器配置
  3. 2014\Province_C_C++_A\1 猜年龄
  4. mybatis更新Blob类型字段要用updateByPrimaryKeyWithBLOBs
  5. python二维数组操作_Python二维数组应用与操作
  6. stick和stuck的区别_怎样区别“stick to”、“stick with”和“stick by”这三个表达?...
  7. 响应数据传出(springMVC)
  8. sublime配置go环境_sublime Text3配置go编译环境
  9. Struts2标签-checkbox只读属性设置
  10. 1、maven笔记(一):构建项目
  11. 盾神与砝码称重java_[蓝桥杯][算法提高VIP]盾神与砝码称重-题解(Java代码)
  12. MyBatis框架使用trim标签修改字段,查询字段
  13. ppt使用记录之添加带圈的20以内的数字编号
  14. 「干货分享」50人+团队常用的一套PRD模板
  15. iOS 手势识别(点按、长按、轻扫)
  16. 云计算就业方向及前景怎么样
  17. 关于破解excel表格密码
  18. 【Linux】计算机的软硬件体系结构
  19. 嵌入式系统原理与实践期末个人总结
  20. 大学生面试最喜欢问的十个问题

热门文章

  1. 全卷积神经网路【U-net项目实战】论文中U-Net网络实现
  2. php oracle 问题,Oracle PHP 故障诊断常见问题以及解答
  3. 实现根据条件删除_Vue源码解析,keep-alive是如何实现缓存的?
  4. python数据结构包括什么_Python中的数据结构详解
  5. 如何布局文章标题才更吸引搜索引擎注意?
  6. 蜘蛛通过哪些内容评判网站质量高低?
  7. oracle启动的服务有哪些,启动/关闭oracle服务有三种方式
  8. dell台式机进入安全模式_华为发布首款商用台式机,商用PC市场再掀变革?
  9. ajax请求的步骤,ajax请求的五个步骤
  10. 计算机硬件拆解,计算机硬件系统及主机拆解.ppt