以太坊源码阅读1——准备环境

以太坊源码阅读1——准备环境

基本环境

  • win10家庭版
  • IntelliJ IDEA 2021.3.2(GOLAND等也行)

环境准备

由于ethereum是用go写的,需要准备一下go的环境

  • 下载go插件

image-20220310145144059

  • 准备go的SDK

IDE有时候会请求帮忙下载,同意的话就不用去其他地方下载了

去官网或者国内镜像(Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com))下载SDK

image-20220310150219257

安装后将其添加到环境变量中

image-20220310150401748

添加系统变量,GOROOT是安装目录,GOPATH是我们的工作空间, 用来存放包的目录

image-20220310153057192

cmd下修改代理,默认的代理网站国内无法访问

go env -w GOPROXY=https://goproxy.cn
  • 准备gcc工具,从下面地址下载并安装

http://tdm-gcc.tdragon.net/download

image-20220310152000608

之后选一下安装位置全部下一步即可

在cmd下测试gcc是否安装成功

gcc --version

下载源码

image-20220310150654362

  • 在IDEA中配置go

设置之前下载的go SDK位置

image-20220310153809539

设置工作环境

image-20220310153746564

设置代理(如果网络非常好可以不用设置)

GOPROXY=https://goproxy.io

image-20220310154835236

测试

  • 运行rlp/decode_test.go进行测试

image-20220310155339911

  • 通过测试

image-20220310155357975

目录结构

accounts            实现了一个高等级的以太坊账户管理
bmt         二进制的默克尔树的实现
build           主要是编译和构建的一些脚本和配置
cmd         命令行工具,又分了很多的命令行工具,下面一个一个介绍
    /abigen     Source code generator to convert Ethereum contract definitions into easy to use, compile-time type-safe Go packages
    /bootnode   启动一个仅仅实现网络发现的节点
    /evm        以太坊虚拟机的开发工具, 用来提供一个可配置的,受隔离的代码调试环境
    /faucet     
    /geth       以太坊命令行客户端,最重要的一个工具
    /p2psim     提供了一个工具来模拟http的API
    /puppeth    创建一个新的以太坊网络的向导
    /rlpdump    提供了一个RLP数据的格式化输出
    /swarm      swarm网络的接入点
    /util       提供了一些公共的工具
    /wnode      这是一个简单的Whisper节点。 它可以用作独立的引导节点。此外,可以用于不同的测试和诊断目的。
common          提供了一些公共的工具类
compression     Package rle implements the run-length encoding used for Ethereum data.
consensus       提供了以太坊的一些共识算法,比如ethhash, clique(proof-of-authority)
console         console类
contracts   
core            以太坊的核心数据结构和算法(虚拟机,状态,区块链,布隆过滤器)
crypto          加密和hash算法,
eth         实现了以太坊的协议
ethclient       提供了以太坊的RPC客户端
ethdb           eth的数据库(包括实际使用的leveldb和供测试使用的内存数据库)
ethstats        提供网络状态的报告
event           处理实时的事件
les         实现了以太坊的轻量级协议子集
light           实现为以太坊轻量级客户端提供按需检索的功能
log         提供对人机都友好的日志信息
metrics         提供磁盘计数器
miner           提供以太坊的区块创建和挖矿
mobile          移动端使用的一些warpper
node            以太坊的多种类型的节点
p2p         以太坊p2p网络协议
rlp         以太坊序列化处理
rpc         远程方法调用
swarm           swarm网络处理
tests           测试
trie            以太坊重要的数据结构Package trie implements Merkle Patricia Tries.
whisper         提供了whisper节点的协议。

参考

go-ethereum-code-analysis/README.md at master · ZtesoftCS/go-ethereum-code-analysis · GitHub

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值