以太坊源代码分析

准备工作

以太坊的源代码是开源的,基于Go语言的版本的源代码获取参考下面的命令。还有用c++开发的源代码,不在本文的探讨范围之内。

git clone https://github.com/ethereum/go-ethereum.git

安装详细还可以参考手把手教你从源代码开始搭建自己的以太坊公链(二)搭建第一个节点
Go语言的开发环境可以参考手把手教你从源代码开始搭建自己的以太坊公链(一)Golang在Ubuntu 和 Windows下的安装

以太坊的源代码结构
子包主要功能
accounts实现了一个高等级的以太坊账户管理
bmt二进制的默克尔树的实现
build主要是编译和构建的一些脚本和配置
cmd命令行工具,下面又分了很多的命令行工具
cmd\abigen将智能合约源代码转换成容易使用的,编译时类型安全的Go语言包
cmd\bootnode启动一个仅仅实现网络发现的节点
cmdevm以太坊虚拟机的开发工具, 用来提供一个可配置的,受隔离的代码调试环境
cmdfaucet
cmdgeth以太坊命令行客户端,最重要的一个工具
cmdp2psim提供了一个工具来模拟http的API
cmdpuppeth创建一个新的以太坊网络的向导
cmdrlpdump提供了一个RLP数据的格式化输出
cmdswarmswarm网络的接入点
cmdutil提供了一些公共的工具
cmdwnode这是一个简单的Whisper节点。 它可以用作独立的引导节点。此外,可以用于不同的测试和诊断目的。
common提供了一些公共的工具类
compressionPackage rle implements the run-length encoding used for Ethereum data.
consensus提供了以太坊的一些共识算法,比如ethhash, clique(proof-of-authority)
consoleconsole类
contracts智能合约
core以太坊的核心数据结构和算法(虚拟机,状态,区块链,布隆过滤器)
crypto加密和hash算法,
eth实现了以太坊的协议
ethclient提供了以太坊的RPC客户端
ethdbeth的数据库(包括实际使用的leveldb和供测试使用的内存数据库)
ethstats提供网络状态的报告
event处理实时的事件
les实现了以太坊的轻量级协议子集
light实现为以太坊轻量级客户端提供按需检索的功能
log提供对人机都友好的日志信息
metrics提供磁盘计数器
miner提供以太坊的区块创建和挖矿
mobile移动端使用的一些warpper
node以太坊的多种类型的节点
p2p以太坊p2p网络协议
rlp以太坊序列化处理
rpc远程方法调用
swarmswarm网络处理
tests测试
trie以太坊重要的数据结构 Merkle Patricia Tries(MPT,也称为Merkle Patricia树)的实现
whisper提供了whisper节点的协议。
详细分析

请参见go-ethereum源码解析

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值