Ethereum 源码分析(一)

一、源码框架

    accounts        实现了一个高等级的以太坊账户管理
    bmt             二进制的默克尔树的实现
    build           主要是编译和构建的一些脚本和配置
    cmd             命令行工具,又分了很多的命令行工具,下面一个一个介绍
        /abigen     合约abi生成测试
        /bootnode   启动一个仅仅实现网络发现的节点
        /clef        用来签名交易和数据,同时作为geth账户管理工具的替代
        /ethkey        操作以太坊keyfiles的命令行工具
        /evm        以太坊虚拟机的开发工具,用来提供一个可配置的,受隔离的代码调试环境
        /faucet     faucet is a Ether faucet backed by a light client
        /geth       以太坊命令行客户端,最重要的一个工具
        /internal    内部工具,提供了与用户浏览器交互的实用程序
        /p2psim     提供了一个工具来模拟http的API
        /puppeth    创建一个新的以太坊网络的向导
        /rlpdump    提供了一个RLP数据的格式化输出
        /swarm      swarm网络的接入点
        /util       提供了一些公共的工具
        /wnode      这是一个简单的Whisper节点,它可以用作独立的引导节点。此外,可以用于不同的测试和诊断目的
    common          提供了一些公共的工具类
    consensus       提供了以太坊的一些共识算法,比如ethhash, clique(proof-of-authority)
    console         提供JavaScript交互运行环境
    containers        容器,提供一些linux系统开发环境和正式环境的dockerfile
    contracts       合约
    core            以太坊的核心数据结构和算法(虚拟机,状态,区块链,布隆过滤器)
    crypto          加密和hash算法
    dashboard        提供嵌入在geth里面的一个数据观察仪,用来收集和观察以太坊节点有用的信息
    eth             实现了以太坊的协议
    ethclient       提供了以太坊的RPC客户端
    ethdb           eth的数据库(包括实际使用的leveldb和供测试使用的内存数据库)
    ethstats        提供网络状态的报告
    event           处理实时的事件
    internal         内部工具,提供编译、debug、ethapi等
    les             实现了以太坊的轻量级协议子集
    light           实现为以太坊轻量级客户端提供按需检索的功能
    log             提供对人机都友好的日志信息
    metrics         提供磁盘计数器
    miner           提供以太坊的区块创建和挖矿
    mobile          移动端使用的一些warpper
    node            以太坊的多种类型的节点
    p2p             以太坊p2p网络协议
    params            以太坊多种参数
    rlp             以太坊序列化处理
    rpc             远程方法调用
    signer            签名机构,包含规则、存储等
    swarm           swarm网络处理
    tests           测试
    trie            以太坊重要的数据结构Package trie implements Merkle Patricia Tries
    whisper         提供了whisper节点的协议。

原文地址:https://www.cnblogs.com/linguoguo/p/10215887.html

时间: 2024-10-13 23:37:06

Ethereum 源码分析(一)的相关文章

[ethereum源码分析](4) ethereum运行开启console

前言 在上一章我们介绍了  ethereum初始化指令 ,包括了系统是如何调用指令和指令的执行.在本章节我们将会介绍 geth --datadir dev/data/02 --networkid 666 console 指令. 指令分析 指令: geth --datadir dev/data/02 --networkid 666 console 介绍:上面的指令主要的工作为: 运行eth程序 开启控制台 分析: --datadir :指定eth的数据存储地址为 dev/data/02 --net

区块链教程以太坊源码分析core-state-process源码分析(二)

兄弟连区块链教程以太坊源码分析core-state-process源码分析(二):关于g0的计算,在黄皮书上由详细的介绍和黄皮书有一定出入的部分在于if contractCreation && homestead {igas.SetUint64(params.TxGasContractCreation) 这是因为 Gtxcreate+Gtransaction = TxGasContractCreation func IntrinsicGas(data []byte, contractCre

区块链入门教程以太坊源码分析fast sync算法一

区块链入门教程以太坊源码分析fast sync算法一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁.回归理性,表面上看相关人才需求与身价似乎正在回落.但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上.this PR aggregates a lot of small modifications to core, trie, eth and other packages to collectively implement the eth/63 fast synch

{区块链教程}以太坊源码分析fast sync算法二

{区块链教程}以太坊源码分析fast sync算法二:上面的表格应该这样解释:如果我们每隔K个区块头验证一次区块头,在N个区块头之后,伪造的概率小于***者产生SHA3冲突的概率.这也意味着,如果确实发现了伪造,那么最后的N个头部应该被丢弃,因为不够安全.可以从上表中选择任何{N,K}对,为了选择一个看起来好看点的数字,我们选择N = 2048,K = 100.后续可能会根据网络带宽/延迟影响以及可能在一些CPU性能比较受限的设备上运行的情况来进行调整. Using this caveat ho

TeamTalk源码分析之login_server

login_server是TeamTalk的登录服务器,负责分配一个负载较小的MsgServer给客户端使用,按照新版TeamTalk完整部署教程来配置的话,login_server的服务端口就是8080,客户端登录服务器地址配置如下(这里是win版本客户端): 1.login_server启动流程 login_server的启动是从login_server.cpp中的main函数开始的,login_server.cpp所在工程路径为server\src\login_server.下表是logi

Android触摸屏事件派发机制详解与源码分析二(ViewGroup篇)

1 背景 还记得前一篇<Android触摸屏事件派发机制详解与源码分析一(View篇)>中关于透过源码继续进阶实例验证模块中存在的点击Button却触发了LinearLayout的事件疑惑吗?当时说了,在那一篇咱们只讨论View的触摸事件派发机制,这个疑惑留在了这一篇解释,也就是ViewGroup的事件派发机制. PS:阅读本篇前建议先查看前一篇<Android触摸屏事件派发机制详解与源码分析一(View篇)>,这一篇承接上一篇. 关于View与ViewGroup的区别在前一篇的A

HashMap与TreeMap源码分析

1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理).因此本着"不要重复造轮子"的思想,就用这篇博客来记录分析TreeMap源码的过程,也顺便瞅一瞅HashMap. 2. 继承结构 (1) 继承结构 下面是HashMap与TreeMap的继承结构: pu

Linux内核源码分析--内核启动之(5)Image内核启动(rest_init函数)(Linux-3.0 ARMv7)【转】

原文地址:Linux内核源码分析--内核启动之(5)Image内核启动(rest_init函数)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.chinaunix.net/uid-25909619-id-4938395.html 前面粗略分析start_kernel函数,此函数中基本上是对内存管理和各子系统的数据结构初始化.在内核初始化函数start_kernel执行到最后,就是调用rest_init函数,这个函数的主要使命就是创建并启动内核线

Spark的Master和Worker集群启动的源码分析

基于spark1.3.1的源码进行分析 spark master启动源码分析 1.在start-master.sh调用master的main方法,main方法调用 def main(argStrings: Array[String]) { SignalLogger.register(log) val conf = new SparkConf val args = new MasterArguments(argStrings, conf) val (actorSystem, _, _, _) =