E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
以太坊源码分析
以太坊源码分析
之共识算法ethash
区块链是作为分布式系统来构建的,由于它们不依赖于一个中央权威,因此分散的节点需要就交易的有效与否达成一致,而达成一致的机制便是共识算法。以太坊目前的算法是类似POW的算法:ethash。它除了和比特币一样需要消耗电脑资源外进行计算外,还考虑了对专用矿机的抵制,增加了挖矿的公平性。一般的POW算法思路POW即工作量证明,也就是通过工作结果来证明你完成了相应的工作。它的初衷希望所有人可参与,门槛低(验
逆风_罗鹏
·
2019-06-09 22:23
【
以太坊源码分析
】从一个典型的交易流程和挖矿流程看以太坊源码
一、典型交易流程源码入口在StateProcessor的Process()函数,具体为什么在这里,可以从下一节中的挖矿源码分析中看到。根据硬分叉改变一些stateDB的状态(由于以太坊历史上有一些硬分叉的过程,所有现在的源码很多位置都有对于硬分叉的判断,本系列源码分析只关注主流程,以后不再赘述有关硬分叉的部分)循环执行区块中的交易,这一部分是整个交易流程的核心部分,所有对交易的验证、奖励、gas的
浮末
·
2019-03-14 21:22
以太坊源码分析
【
以太坊源码分析
】从geth的编译启动过程谈以太坊源码
一、geth编译以及启动1.安装Go的环境,注意需要1.9之后的版本首先下载源码包并解压:wgethttps://storage.googleapis.com/golang/go1.9.src.tar.gztar-xfgo1.9.src.tar.gzcdgo/srcmvgo/usr/local/go1.9然后打开/etc/profile文件,最后一行加入exportPATH=$PATH:/usr/
浮末
·
2019-03-13 16:47
以太坊源码分析
以太坊源码分析
(4)txpool交易池源码分析
交易池:txpool源码分析交易池的源码位于:core/tx_pool.go文件txpool交易池由两部分构成分别是pending和queued组成。主要适用于存放当前提交等待被区块确认提交的交易,本地交易和网络远程交易都有1、pending:等待执行的交易会被放在pending队列中2、queued:提交但是不能够执行的交易,放在queue中等待执行通过阅读tx_pool_test.go这个tx
Debug_lll
·
2019-01-03 19:34
ETH
以太坊源码分析
(4)txpool交易池源码分析
交易池:txpool源码分析交易池的源码位于:core/tx_pool.go文件txpool交易池由两部分构成分别是pending和queued组成。主要适用于存放当前提交等待被区块确认提交的交易,本地交易和网络远程交易都有1、pending:等待执行的交易会被放在pending队列中2、queued:提交但是不能够执行的交易,放在queue中等待执行通过阅读tx_pool_test.go这个tx
Debug_lll
·
2019-01-03 19:34
ETH
以太坊源码分析
(3)Accounts源码分析与逻辑结构之交易源码
Accounts源码分析之交易源码listAccounts源码分析位于internal/ethapi/api.go中的ListAccounts方法//ListAccountswillreturnalistofaddressesforaccountsthisnodemanages.func(s*PrivateAccountAPI)ListAccounts()[]common.Address{addr
Debug_lll
·
2019-01-02 15:08
ETH
以太坊源码分析
(3)Accounts源码分析与逻辑结构之交易源码
Accounts源码分析之交易源码listAccounts源码分析位于internal/ethapi/api.go中的ListAccounts方法//ListAccountswillreturnalistofaddressesforaccountsthisnodemanages.func(s*PrivateAccountAPI)ListAccounts()[]common.Address{addr
Debug_lll
·
2019-01-02 15:08
ETH
以太坊源码分析
(2)Accounts源码分析与逻辑结构之基本概述与新建账户源码
Accounts源码分析与逻辑结构1众所周知以太坊在比特币的基础上加以引用与改进,比特币使用UTXO来表示状态的转移,而以太坊使用账来表示状态的转移。accounts包实现了以太坊客户端的钱包和账户管理在以太坊网络中存在两种账户:外部账户EOA:一般是属于个人或者用户的账户,被私钥控制没有任何代码与之相关内部账户CA:给智能合约分配的账户,被合约代码控制,且与合约关联在源码core/state/s
Debug_lll
·
2019-01-02 11:47
ETH
以太坊源码分析
(2)Accounts源码分析与逻辑结构之基本概述与新建账户源码
Accounts源码分析与逻辑结构1众所周知以太坊在比特币的基础上加以引用与改进,比特币使用UTXO来表示状态的转移,而以太坊使用账来表示状态的转移。accounts包实现了以太坊客户端的钱包和账户管理在以太坊网络中存在两种账户:外部账户EOA:一般是属于个人或者用户的账户,被私钥控制没有任何代码与之相关内部账户CA:给智能合约分配的账户,被合约代码控制,且与合约关联在源码core/state/s
Debug_lll
·
2019-01-02 11:47
ETH
以太坊源码分析
:交易缓冲池txpool
区块链就是何交易打交道,我们今天就介绍下,交易处理过程中的一个重要组成部分:txpool。这篇文章主要从功能角度介绍,通过这篇文章会了解:txpool的在交易中的位置和作用。txpool的功能,核心组成部分queued和pending。txpool如何实现它的功能。txpool源码的重要关注点。以太坊内部有个重要的内部功能是txpool,从字面意思就能看出来,交易池就是存放交易的池子。它在以太坊中
大彬
·
2018-12-11 00:00
以太坊
26.
以太坊源码分析
(26)core-txpool交易池源码分析
txpool主要用来存放当前提交的等待写入区块的交易,有远端和本地的。txpool里面的交易分为两种,提交但是还不能执行的,放在queue里面等待能够执行(比如说nonce太高)。等待执行的,放在pending里面等待执行。从txpool的测试案例来看,txpool主要功能有下面几点。交易验证的功能,包括余额不足,Gas不足,Nonce太低,value值是合法的,不能为负数。能够缓存Nonce比当
boss2967
·
2018-11-23 08:49
Ethereum源码分析
18.
以太坊源码分析
(18)以太坊交易执行分析
以太坊交易执行分析在这里,将其整体串起来,从state_processor.Process函数开始,归纳一下其所作的处理。1ProcessProcess根据以太坊规则运行交易信息来对statedb进行状态改变,以及奖励挖矿者或者是其他的叔父节点。Process返回执行过程中累计的收据和日志,并返回过程中使用的Gas。如果由于Gas不足而导致任何交易执行失败,将返回错误。处理逻辑:1.定义及初始化收
boss2967
·
2018-11-22 15:47
10.
以太坊源码分析
(10)CMD深入分析
cmd包分析cmd下面总共有13个子包,除了util包之外,每个子包都有一个主函数,每个主函数的init方法中都定义了该主函数支持的命令,如geth包下面的:funcinit(){//InitializetheCLIappandstartGethapp.Action=gethapp.HideVersion=true//wehaveacommandtoprinttheversionapp.Copyr
boss2967
·
2018-11-20 08:18
Ethereum源码分析
以太坊源码分析
:共识(2)引擎
前言engine是以太坊封定义的一个接口,它的功能可以分为3类:验证区块类,主要用在将区块加入到区块链前,对区块进行共识验证。产生区块类,主要用在挖矿时。辅助类。接下来我们看一下engine具体定义了哪些功能,还有各功能的使用场景。engine定义的具体功能engine有3类功能,验证区块类、产生区块类、辅助类。因为产生区块在前,验证区块在后,接下来采用产生区块类、验证区块类、辅助类,分别介绍它们
大彬
·
2018-11-17 00:00
golang
以太坊
区块链
以太坊源码分析
:fetcher模块和区块传播
前言这篇文章从区块传播策略入手,介绍新区块是如何传播到远端节点,以及新区块加入到远端节点本地链的过程,同时会介绍fetcher模块,fetcher的功能是处理Peer通知的区块信息。在介绍过程中,还会涉及到p2p,eth等模块,不会专门介绍,而是专注区块的传播和加入区块链的过程。当前代码是以太坊Release1.8,如果版本不同,代码上可能存在差异。总体过程和传播策略本节从宏观角度介绍,节点产生区
大彬
·
2018-11-17 00:00
区块链
以太坊
golang
以太坊源码分析
:共识(3)Ethash
前言Ethash实现了PoW,PoW的精妙在于通过一个随机数确定,矿工确实做了大量的工作,并且是没有办法作弊的。接下来将介绍:Ethash的挖矿本质。Ethash是如何挖矿的。如何验证Ethash的随机数。Ethash的挖矿本质挖矿的本质是找到一个随机数,证明自己做了很多工作(计算)。在Ethash中,该随机数称为Nonce,它需要满足一个公式:Rand(hash,nonce)≤MaxValue/
大彬
·
2018-11-17 00:00
golang
以太坊
区块链
以太坊源码分析
:共识(1)矿工
前言矿工在PoW中负责了产生区块的工作,把一大堆交易交给它,它生成一个证明自己做了很多工作的区块,然后将这个区块加入到本地区块链并且广播给其他节点。接下来我们将从以下角度介绍矿工:角色。矿工不是一个人,而是一类人,可以把这一类人分成若干角色。通过了解一个区块产生的主要流程,掌握矿工的工作流。通过了解矿工的主要函数介绍,掌握矿工的主要挖矿机制。介绍矿工由哪些部分组成,会和哪些其他模块进行交互,这些部
大彬
·
2018-11-17 00:00
golang
区块链
以太坊
以太坊源码分析
—p2p节点发现与协议运行
前言p2p(peertopeer)负责以太坊底层节点间的通信,主要包括底层节点发现(discover)和上层协议运行两大部分。节点发现节点发现功能主要涉及ServerTableudp这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个Server,并将网络拓扑中相邻的节点视为Node,而Table是Node的容器,udp则是负
187J3X1
·
2018-11-13 00:00
区块链
以太坊
golang
以太坊源码分析
—Whisper
[TOC]前言Whisper是以太坊中一项非常有趣的技术,它是一个基于身份的通信系统,被设计用于Dapp之间少量数据通信。Whisper协议运行在以太坊p2p协议框架之上,所有运行Whisper协议的节点(以下简称节点)组成一个Whisper网络。通过节点之间的消息转发,理论上,每个节点都可以收到所有Whisper消息。特性Whisper具有以下基本特性和概念通信加密每一条Whisper消息在网络
187J3X1
·
2018-11-13 00:00
以太坊
区块链
golang
以太坊源码分析
—交易的执行
前言以太坊是一个运行智能合约的平台,被称作可编程的区块链,允许用户将编写的智能合约部署在区块链上运行。而运行合约的主体便是以太坊虚拟机(EVM)区块交易合约区块链由区块(Block)组成,而区块中打包一定数量的交易(Transaction),交易可能是一个单纯的转账操作,也可能是调用一个智能合约,无论是哪一种,EVM在运行(excute)交易时都会创建合约(Contract)外部账户合约账户以太坊
187J3X1
·
2018-11-13 00:00
区块链
以太坊
golang
以太坊源码分析
—账户的管理
前言以太坊是一个巨大的状态机,在网络中,每一个全节点都保存着以太坊状态机的全部历史,只要愿意,我们可以查询到任何时刻的状态(黄皮书中WorldState),而账户状态便是其中的状态,这部分功能由主要由代码中的state包提供基本概念账户地址在以太坊中,无论是外部账户还是合约账户,都以一个160bit的数组表示地址,它是由特定椭圆曲线上的一个点表示的公钥经过KeccakHash算法截取而来关于椭圆曲
187J3X1
·
2018-11-13 00:00
区块链
以太坊
golang
以太坊源码分析
—Ethash共识算法
Ethereum当前和Bitcoin一样,采用基于工作量证明(ProofofWork,PoW)的共识算法来产生新的区块。与Bitcoin不同的是,Ethereum采用的共识算法可以抵御ASIC矿机对挖矿工作的垄断地位,这个算法叫做Ethash。为什么要反ASICPoW的的核心是Hash运算,谁的Hash运算更快,谁就更有可能挖掘出新的区块,获得更多的经济利益。在Bitcoin的发展过程中,挖矿设备
187J3X1
·
2018-11-13 00:00
区块链
以太坊
golang
以太坊源码分析
—挖矿与共识
前言挖矿(mine)是指矿工节点互相竞争生成新区块以写入整个区块链获得奖励的过程.共识(consensus)是指区块链各个节点对下一个区块的内容形成一致的过程在以太坊中,miner包向外提供挖矿功能,consensus包对外提供共识引擎接口挖矿miner包主要由miner.goworker.goagent.go三个文件组成Miner负责与外部交互和高层次的挖矿控制worker负责低层次的挖矿控制管
187J3X1
·
2018-11-13 00:00
区块链
以太坊
golang
区块链教程
以太坊源码分析
以太坊随机数生成方式一
最近考虑一个基于以太坊的去中心化du-场的实现,du-场如果需要实现,那么随机数是必须的。然后研究了一下以太坊里面的随机数生成,发现并不容易。eth里面生成随机数的几种方式。oraclizeOraclize定位为去中心化应用的数据搬运工,他作为WebAPIs和DApp的可靠链接。有了Oraclize,就不需要建立额外的信任链,因为我们的行为已经被强制加密验证。Oraclize是一个可证明的诚实的预
xdl区块链
·
2018-10-26 16:15
区块链
区块链教程
区块链教程
区块链入门教程
以太坊源码分析
fast sync算法一
区块链入门教程
以太坊源码分析
fastsync算法一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。
xdl区块链
·
2018-10-25 16:29
区块链
区块链教程
区块链教程
区块链教程
以太坊源码分析
core-vm-stack-memory源码分析
vm使用了stack.go里面的对象Stack来作为虚拟机的堆栈。memory代表了虚拟机里面使用的内存对象。stack比较简单,就是用1024个big.Int的定长数组来作为堆栈的存储。构造//stackisanobjectforbasicstackoperations.Itemspoppedtothestackare//expectedtobechangedandmodified.stackd
区块链入门
·
2018-10-22 16:05
区块链
区块链教程
区块链
区块链教程
以太坊源码分析
core-state-process源码分析(二)
兄弟连区块链教程
以太坊源码分析
core-state-process源码分析(二):关于g0的计算,在黄皮书上由详细的介绍和黄皮书有一定出入的部分在于ifcontractCreation&&homestead
区块链入门
·
2018-10-22 15:08
区块链
区块链培训
区块链
区块链教程
以太坊源码分析
core-state-process源码分析
StateTransition状态转换模型/*TheStateTransitioningModel状态转换模型Astatetransitionisachangemadewhenatransactionisappliedtothecurrentworldstate状态转换是指用当前的worldstate来执行交易,并改变当前的worldstateThestatetransitioningmodeld
区块链入门
·
2018-10-22 15:49
区块链
区块链教程
区块链
以太坊源码分析
之九区块
以太坊源码分析
之九区块终于到了区块链中最和区块链搭界的部分,毕竟它们只差一个字。区块是区块链的基础,区块通过HASH链接在一起就成为了区块链。
fpcc
·
2018-08-11 09:42
blockchain
以太坊源码分析
之八虚拟机
以太坊源码分析
之八虚拟机一、智能合约的编译分析接上文,先搞一个小的智能合约,编译好,放到环境里执行看流程和结果,先看智能合约:pragmasolidity^0.4.4;contractHelloWorld
fpcc
·
2018-08-05 08:32
blockchain
以太坊源码分析
之六交易
以太坊的交易才是真正为“币圈”重视的,代码啥的,人家根本不感兴趣,交易也算是“币圈”和“链圈”的结合点吧。一、交易的流程以太坊的交易大致分以下几步:1、发起交易:指定目标地址和交易金额以及相关的gas/gaslimit发起相关交易,如果目标地址为空,则表示其为一个智能合约的交易。2、交易签名:使用私钥对交易进行签名。这涉及到上一篇中帐户的私钥和公钥的产生机制。3、提交交易:把交易添加到交易池中,类
fpcc
·
2018-07-15 10:19
blockchain
以太坊源码分析
之五帐户和钱包
以太坊和比特币在管理用户帐户上有很大不同,比特币使用的是UTXO模型,没有传统意义上的帐户一说,而以太坊使用了帐户。如果有以太坊交易或者私链搭建的经验,就很清楚知道在交易的时候只要向一个地址发送以太币就可以了,类似:eth.sendTransaction({from:"0xf8a4909ce93a9d876b8f787e4771d87d6899d879",to:"0x72b92aebbd254f8
fpcc
·
2018-07-07 19:13
blockchain
以太坊源码分析
—p2p节点发现与协议运行
##前言p2p(peertopeer)负责以太坊底层节点间的通信,主要包括底层节点发现(discover)和上层协议运行两大部分。##节点发现节点发现功能主要涉及Server\Table\udp这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个Server,并将网络拓扑中相邻的节点视为Node,而Table是Node的容器,
187J3X1
·
2018-06-27 00:00
区块链
以太坊源码学习
以太坊源码分析
—交易的执行
#前言以太坊是一个运行智能合约的平台,被称作可编程的区块链,允许用户将编写的智能合约部署在区块链上运行。而运行合约的主体便是以太坊虚拟机(EVM)#####区块交易合约区块链由区块(Block)组成,而区块中打包一定数量的交易(Transaction),交易可能是一个单纯的转账操作,也可能是调用一个智能合约,无论是哪一种,EVM在运行(excute)交易时都会创建合约(Contract)#####
187J3X1
·
2018-06-23 11:35
区块链
以太坊源码学习
以太坊源码分析
—挖矿与共识
前言**挖矿(mine)**是指矿工节点互相竞争生成新区块以写入整个区块链获得奖励的过程.**共识(consensus)**是指区块链各个节点对下一个区块的内容形成一致的过程在以太坊中,miner包向外提供挖矿功能,consensus包对外提供共识引擎接口挖矿miner包主要由miner.goworker.goagent.go三个文件组成Miner负责与外部交互和高层次的挖矿控制worker负责低
187J3X1
·
2018-06-23 11:37
区块链
以太坊源码学习
以太坊源码分析
--账户的管理
ethereum.jpeg以太坊是一个巨大的状态机,在网络中,每一个全节点都保存着以太坊状态机的全部历史,只要愿意,我们可以查询到任何时刻的状态(黄皮书中WorldState),其中账户状态便是其中的一部分,这部分功能由主要由state包提供基本概念账户地址address.png在以太坊中,无论是外部账户还是合约账户,都以一个160bit的数组表示地址,它是由特定椭圆曲线上的一个点表示的公钥经过K
187J3X1
·
2018-06-22 22:40
以太坊源码分析
之一整体流程
以太坊的源码启动和ONT本体的启动有些基本相似,都是依赖第三方包gopkg.in/urfave/cli.v1的实例启动做命令行的交互方式。只不过,从实际情况来看后者应用的更简单暴力一些,以太坊应用的更复杂一些,或者些更高明一些。geth主程序的精简的让人吃惊:funcmain(){iferr:=app.Run(os.Args);err!=nil{fmt.Fprintln(os.Stderr,err
fpcc
·
2018-05-20 09:35
blockchain
以太坊源码分析
(48)p2p-server.go源码分析
server是p2p的最主要的部分。集合了所有之前的组件。首先看看Server的结构//Servermanagesallpeerconnections.typeServerstruct{//Configfieldsmaynotbemodifiedwhiletheserverisrunning.Config//Hooksfortesting.Theseareusefulbecausewecaninh
尹成
·
2018-05-14 09:47
区块链
以太坊源码分析
(26)core-txpool交易池源码分析
txpool主要用来存放当前提交的等待写入区块的交易,有远端和本地的。txpool里面的交易分为两种,1.提交但是还不能执行的,放在queue里面等待能够执行(比如说nonce太高)。2.等待执行的,放在pending里面等待执行。从txpool的测试案例来看,txpool主要功能有下面几点。1.交易验证的功能,包括余额不足,Gas不足,Nonce太低,value值是合法的,不能为负数。2.能够缓
尹成
·
2018-05-14 09:58
区块链
以太坊源码分析
(18)以太坊交易执行分析
#以太坊交易执行分析在这里,将其整体串起来,从state_processor.Process函数开始,归纳一下其所作的处理。##1ProcessProcess根据以太坊规则运行交易信息来对statedb进行状态改变,以及奖励挖矿者或者是其他的叔父节点。Process返回执行过程中累计的收据和日志,并返回过程中使用的Gas。如果由于Gas不足而导致任何交易执行失败,将返回错误。**处理逻辑:**~~
尹成
·
2018-05-13 23:13
区块链
以太坊源码分析
- 交易到打包流程概述
原文链接:http://www.cnblogs.com/qingpingseo/p/8875463.html区块链,能推开信任的大门吗?有个朋友问我一个以太坊的问题:以太坊如何保证交易的执行结果的一致性的?为了回答这个问题,把以太坊的源代码翻了一下:http://www.300gu.com/supermarket.html简单的画一张图,描述以太坊的从一个交易到打包的流程:1)TxPool从网络上
weixin_30287169
·
2018-04-18 15:00
p2p的资料
https://blog.csdn.net/screscent/article/details/79416251
以太坊源码分析
---go-ethereum之p2p通信分析1https://blog.csdn.net
古则
·
2018-04-16 19:11
以太坊源码深入分析(1)--下载、编译、启动go-ethereum
笔者打算从
以太坊源码分析
专栏写起,后面会分析HyperledgerFabric源码,以及比特币的源码。
老鱼游啊游
·
2018-04-11 21:04
以太坊源码深入分析(1)--下载、编译、启动go-ethereum
笔者打算从
以太坊源码分析
专栏写起,后面会分析HyperledgerFabric源码,以及比特币的源码。
老鱼游啊游
·
2018-04-10 15:11
以太坊源码分析
-以太坊启动
以太坊源码分析
-开篇13年时第一次知道比特币的存在,那时仅仅是跟风炒币而已,没有具体去了解相关的技术细节。
不折腾就闹心
·
2018-01-25 11:40
以太坊源码分析
上一页
1
2
3
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他