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
以太坊源码分析
死磕
以太坊源码分析
之p2p节点发现
死磕
以太坊源码分析
之p2p节点发现在阅读节点发现源码之前必须要理解kadmilia算法,可以参考:KAD算法详解。节点发现概述节点发现,使本地节点得知其他节点的信息,进而加入到p2p网络中。
mindcarver
·
2024-01-24 18:18
以太坊源码分析
:共识(3)Ethash
前言Ethash实现了PoW,PoW的精妙在于通过一个随机数确定,矿工确实做了大量的工作,并且是没有办法作弊的。接下来将介绍:Ethash的挖矿本质。Ethash是如何挖矿的。如何验证Ethash的随机数。Ethash的挖矿本质挖矿的本质是找到一个随机数,证明自己做了很多工作(计算)。在Ethash中,该随机数称为Nonce,它需要满足一个公式:Rand(hash,nonce)≤MaxValue/
大彬_一起学Golang
·
2024-01-24 05:00
死磕
以太坊源码分析
之Kademlia算法
死磕
以太坊源码分析
之Kademlia算法KAD算法概述Kademlia是一种点对点分布式哈希表(DHT),它在容易出错的环境中也具有可证明的一致性和性能。
mindcarver
·
2024-01-17 03:48
死磕
以太坊源码分析
之MPT树-上
死磕
以太坊源码分析
之MPT树-上前缀树Trie前缀树(又称字典树),通常来说,一个前缀树是用来存储字符串的。前缀树的每一个节点代表一个字符串(前缀)。
mindcarver
·
2024-01-10 22:20
以太坊源码分析
之 P2P网络(二、节点发现流程)
区块链特辑:https://blog.csdn.net/fusan2004/article/details/80879343,欢迎查阅,原创作品,转载请标明!上一篇文章简单介绍了下一些基础的类型定义,从这一篇开始我们将描述p2p网络的更多细节。从关于节点的定义来看,其实不同定义是有不同含义的,Node代表的是一个孤立的节点,这个节点不代表我们和他会建立连接,而Peer是肯定会去连接的,但是不代表一
还是要学会仰望
·
2023-11-24 15:23
区块链
区块链
p2p
节点发现
死磕
以太坊源码分析
之Ethash共识算法
死磕
以太坊源码分析
之Ethash共识算法代码分支:https://github.com/ethereum/go-ethereum/tree/v1.9.9引言目前以太坊中有两个共识算法的实现:clique
mindcarver
·
2023-11-20 22:09
以太坊源码分析
(五 协议栈)
简介在以太坊上P2P网络上使用了多种数据要交互,这就会涉及的很多种协议,所以以太坊使用了RPLx协议,它是一个加密的点对点的协议套件,它为在P2P网络上交互的应用提供了一套统一的传输接口,它设计的初衷便是满足去中心化应用。结构图image.png概述RLPx协议建立在tcp以及udp之上,它包含四个组件,分别为NodeDisvovery、Handshake、Framing、FlowControl,
edolovee
·
2023-08-23 06:55
以太坊源码分析
:共识(1)矿工
前言矿工在PoW中负责了产生区块的工作,把一大堆交易交给它,它生成一个证明自己做了很多工作的区块,然后将这个区块加入到本地区块链并且广播给其他节点。接下来我们将从以下角度介绍矿工:角色。矿工不是一个人,而是一类人,可以把这一类人分成若干角色。通过了解一个区块产生的主要流程,掌握矿工的工作流。通过了解矿工的主要函数介绍,掌握矿工的主要挖矿机制。介绍矿工由哪些部分组成,会和哪些其他模块进行交互,这些部
大彬_一起学Golang
·
2023-08-17 04:32
[后羿聊以太坊]从
以太坊源码分析
geth中 full和fast之间的关系
软件环境go:1.9.2ethereum&GETH:v1.8.11-unstable名词解释:以太坊有三种同步的模式,full,fast,lightfull模式从开始到结束,获取区块的header,获取区块的body,从创始块开始校验每一个元素,需要下载所有区块数据信息。速度最慢,但是能获取到所有的历史数据。//命令:geth–syncmodefullfast模式获取区块的header,获取区块的
后羿区块链笔记
·
2023-07-22 13:07
以太坊源码分析
(3)txpool交易池源码分析
交易池:txpool源码分析交易池的源码位于:core/tx_pool.go文件txpool交易池由两部分构成分别是pending和queued组成。主要适用于存放当前提交等待被区块确认提交的交易,本地交易和网络远程交易都有1、pending:等待执行的交易会被放在pending队列中2、queued:提交但是不能够执行的交易,放在queue中等待执行通过阅读tx_pool_test.go这个tx
琴生1996
·
2023-04-16 22:16
以太坊源码分析
(3)Accounts源码分析与逻辑结构之交易源码
Accounts源码分析与逻辑结构2listAccounts源码分析位于internal/ethapi/api.go中的ListAccounts方法//ListAccountswillreturnalistofaddressesforaccountsthisnodemanages.func(s*PrivateAccountAPI)ListAccounts()[]common.Address{add
琴生1996
·
2023-03-26 03:49
以太坊源码分析
(一 简介)
ethereum-buildunstoppableapplications简介以太坊作为目前区块链技术2.0的代表作品,无论是它独创的智能合约以及它本身交易的速度都优于bitcoin,通过看它的白皮书以及一些文章也略微了解了它的一些原理,但是总体还是对它的实现半知半解。因此就想分析下它的实现源码,再结合白皮书也许可以深入的理解它的实现。准备工作源码下载gitclonehttps://github.
edolovee
·
2023-03-25 14:10
以太坊源码分析
(三 智能合约执行)
ethereum-buildunstoppableapplications智能合约以太坊的智能合约具有动态脚本一样,它可以动态的执行,当我们在以太坊上发布了智能合约时,我们会知道发布的智能合约的地址,根据这个地址以及它定义的调用规范我们就可以调用这个合约,非常方便。同样的我们也是通过几个问题来分析下智能合约的实现,智能合约在什么时候执行的?智能合约如何执行的?智能合约在什么时候执行的智能合约的执行
edolovee
·
2023-01-30 06:47
以太坊源码分析
之七智能合约
以太坊源码分析
之七智能合约这个以太坊之所以较之于比特币看上去更高大上一些,主要原因是提供了智能合约,以太坊的智能合约确实提供了一个更方便、更开放区块链的接口。
fpcc
·
2022-11-17 10:46
blockchain
blockchain
[
以太坊源码分析
][p2p网络04]:基于UDP的节点发现
为什么要进行节点发现呢?因为要加入一个p2p网络,并且与网络中的节点交互,需要知道这个p2p网络中的一些节点信息。节点发现,使本地节点得知其他节点的信息,进而加入到p2p网络中。节点发现就是一个寻找邻居节点的过程。这里有一点跟去中心化违背的地方,就是节点第一次启动的时候,节点会与硬编码在以太坊源码中的bootnode进行连接,这个bootnode有一种中心化服务器的感觉,因为所有的节点加入几乎都先
jea的笔记本
·
2022-02-20 17:19
[
以太坊源码分析
][p2p网络06]:交易广播和区块广播
eth/handle.go中的ProtocolManager管理节点之间通信。节点与节点之间的通信,也就是区块和交易的广播或同步。这里先介绍广播。提及广播,要先说一个有趣的协议:gossip,对,就是流言蜚语。如果有关于明星的八卦或是负面新闻,不用多长时间,可能满大街的人们就都知道了。广播就类似于流言蜚语的传播,一传十,十传百的扩散出去,最后整个网络都知晓了。以下是ProtocolManager实
jea的笔记本
·
2022-02-07 15:07
[
以太坊源码分析
][p2p网络03]:发起TCP连接请求
上一节介绍的是底层p2p网络开启后,监听别的远程节点发送来的TCP连接请求。这一节是个续集,要介绍的是本地节点如何向远程节点发起TCP连接请求。这一次,是我们打电话call别人。但是这一次有点不同,我们是以做任务的形式向别人发起拨号,而且每次做很多个任务。每一个任务里都包含了连接类型和远程节点信息。究竟是怎么回事,请往下看。0.索引01.从Server服务开始02.初始化拨号状态,以及创建任务03
jea的笔记本
·
2022-02-06 18:52
[
以太坊源码分析
][p2p网络01]:什么是以太坊p2p网络
近期在学习以太坊的源码,先是看p2p网络,因此开个大坑,来介绍一下学习所得。若是有什么问题,欢迎提出交流与指导。0.索引01.什么是p2p网络02.以太坊的p2p网络结构03.以太坊p2p网络的函数入口1.什么是p2p网络p2p,peertopeer,对等网络。即网络中的每个节点都是相同的。C/S模式vsP2PC/S模式先来看一下非p2p的网络,即传统的C/S模式,也就是客户端发送请求与使用服务,
jea的笔记本
·
2021-06-27 21:45
以太坊源码分析
(2)Accounts源码分析与逻辑结构之基本概述与新建账户源码
Accounts源码分析与逻辑结构1总所周知以太坊在比特币的基础上加以引用与改进,比特币使用UTXO来表示状态的转移,而以太坊使用账来表示状态的转移。accounts包实现了以太坊客户端的钱包和账户管理在以太坊网络中存在两种账户:外部账户EOA:一般是属于个人或者用户的账户,被私钥控制没有任何代码与之相关内部账户CA:给智能合约分配的账户,被合约代码控制,且与合约关联在源码core/state/s
琴生1996
·
2021-06-23 17:41
以太坊源码分析
(四 节点发现)
ethereum-buildunstoppableapplications节点发现以太坊的节点发现协议使用的是KAD算法(kademlia)数据存储结构它在一个数组里维护了256个bucket,每个bucket的数据下标即为其深度,每个bucket最多存储16个节点,所以一个节点可存储的节点数为256*16个节点这是在NodeTable中定义的image.png距离算法每个节点都有一个nodeId
edolovee
·
2021-06-22 00:45
[
以太坊源码分析
][p2p网络05]:底层节点如何与上层节点联系
对于以太坊的p2p网络,我觉得,分为底层p2p网络的构建,以及上层eth服务的实现。在介绍以太坊上层服务之前,需要先来看一下底层网络是怎么跟上层网络联系在一起的。0.索引01.ProtocolManager协议管理02.新建一个ProtocolManager03.建立联系04.使用Run方法05.底层的peer结构06.总结1.ProtocolManager协议管理ProtocolManager是
jea的笔记本
·
2021-06-11 11:55
以太坊源码分析
--RLP编码
RLP(RecursiveLengthPrefix),递归长度前缀编码,它是以太坊序列化所采用的序列化和反序列化的主要方式。区块、交易等数据结构在网络传输和持久化时会先经过RLP编码后再存储到数据库中。rlp适用于任意的二进制数据数组的编码,在以太坊中,rpl接受的数据分为两类:1.字节数组2.类list数据结构。以太坊中rlp的具体定义和规则我们可以在黄皮书中找到(AppendixB.Recur
·
2021-02-22 22:05
区块链以太坊
以太坊源码分析
--MPT树
MPT(MerklePatriciaTries)是以太坊中存储区块数据的核心数据结构,它MerkleTree和PatriciaTree融合一个树形结构,理解MPT结构对之后学习以太坊区块header以及智能合约状态存储结构的模块源码很有帮助。首先来看下Merkle树:它的叶子是数据块的hash,从图中可以看出非叶子节点是其子节点串联字符串的hash,底层数据的任何变动都会影响父节点,这棵树的Mer
·
2021-02-22 22:05
区块链以太坊
死磕
以太坊源码分析
之downloader同步
死磕
以太坊源码分析
之downloader同步需要配合注释代码看:https://github.com/blockchain...这篇文章篇幅较长,能看下去的是条汉子,建议收藏希望读者在阅读过程中,指出问题
mindcarver
·
2020-12-23 16:53
区块链
以太坊
同步块
比特币
死磕
以太坊源码分析
之挖矿流程分析
死磕
以太坊源码分析
之挖矿流程分析代码分支:https://github.com/ethereum/g...基本架构以太坊挖矿的主要流程是由miner包负责的,下面是基本的一个架构:首先外部是通过miner
mindcarver
·
2020-12-13 01:31
区块链
以太坊
死磕
以太坊源码分析
之Kademlia算法
死磕
以太坊源码分析
之Kademlia算法KAD算法概述Kademlia是一种点对点分布式哈希表(DHT),它在容易出错的环境中也具有可证明的一致性和性能。
mindcarver
·
2020-12-13 01:59
区块链
以太坊
dht
死磕
以太坊源码分析
之p2p网络启动
死磕
以太坊源码分析
之p2p网络启动p2p源码目录discover/基于UDP的节点发现V4协议discv5/节点发现V5协议enode/节点信息enr/以太坊节点记录(ethereumnoderecords
mindcarver
·
2020-12-13 01:28
区块链
以太坊
p2p
网络
死磕
以太坊源码分析
之挖矿流程分析
死磕
以太坊源码分析
之挖矿流程分析代码分支:https://github.com/ethereum/g...基本架构以太坊挖矿的主要流程是由miner包负责的,下面是基本的一个架构:首先外部是通过miner
mindcarver
·
2020-12-13 01:23
区块链
以太坊
死磕
以太坊源码分析
之Kademlia算法
死磕
以太坊源码分析
之Kademlia算法KAD算法概述Kademlia是一种点对点分布式哈希表(DHT),它在容易出错的环境中也具有可证明的一致性和性能。
mindcarver
·
2020-12-08 21:49
区块链
以太坊
dht
死磕
以太坊源码分析
之p2p网络启动
死磕
以太坊源码分析
之p2p网络启动p2p源码目录discover/基于UDP的节点发现V4协议discv5/节点发现V5协议enode/节点信息enr/以太坊节点记录(ethereumnoderecords
mindcarver
·
2020-12-08 21:43
区块链
以太坊
p2p
网络
死磕
以太坊源码分析
之区块和交易广播
死磕
以太坊源码分析
之区块和交易广播ProtocolManager详解ProtocolManager,从字面上看是协议管理器,负责着p2p通信协议的管理。
mindcarver
·
2020-12-02 14:28
以太坊源码分析
以太坊
区块广播
交易广播
handleMsg
ProtocolManager
以太坊源码分析
(30)eth-bloombits和filter源码分析
##以太坊的布隆过滤器以太坊的区块头中包含了一个叫做logsBloom的区域。这个区域存储了当前区块中所有的收据的日志的布隆过滤器,一共是2048个bit。也就是256个字节。而我们的一个交易的收据包含了很多的日志记录。每个日志记录包含了合约的地址,多个Topic。而在我们的收据中也存在一个布隆过滤器,这个布隆过滤器记录了所有的日志记录的信息。如果我们看黄皮书里面对日志记录的形式化定义。O代表我们
尹成
·
2020-09-16 04:43
区块链
区块链入门教程
以太坊源码分析
fast sync算法一
区块链入门教程
以太坊源码分析
fastsync算法一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。
weixin_34013044
·
2020-09-16 04:59
区块链
数据库
11.
以太坊源码分析
(11)eth目前的共识算法pow的整理
eth目前的共识算法pow的整理涉及的代码子包主要有consensus,miner,core,geth/consensus共识算法consensus.go1.Prepare方法2.CalcDifficulty方法:计算工作量3.AccumulateRewards方法:计算每个块的出块奖励4.VerifySeal方法:校验pow的工作量难度是否符合要求,返回nil则通过5.verifyHeader方
boss2967
·
2020-09-16 02:43
Ethereum源码分析
{区块链教程}
以太坊源码分析
fast sync算法二
{区块链教程}
以太坊源码分析
fastsync算法二:上面的表格应该这样解释:如果我们每隔K个区块头验证一次区块头,在N个区块头之后,伪造的概率小于***者产生SHA3冲突的概率。
weixin_33725515
·
2020-09-16 02:09
数据库
区块链
以太坊源码分析
--p2p节点发现
p2p(peertopeer)负责以太坊节点间的通信,主要包括底层节点发现(discover)和上层协议运行两大块,本文主要描述其中节点发现部分的实现数据结构节点发现功能主要涉及Server\Table\udp这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个Server,并将网络拓扑中相邻的节点视为Node,而Table是
187J3X1
·
2020-08-20 11:25
以太坊源码分析
(4)——初始化创世区块
一、前言通过前面章节学习了以太坊的基本架构之后,我们通过自己搭建一个单节点,并覆盖以太坊主要流程来讲解代码。在这一节,你将学会:如何初始化创世区块二、代码研究2.1准备工作以太坊源码V1.8.0golang1.9+windows系统下goland2018+本系列文章主要是研究以太坊源码,所以以太坊的编译工作不详细展开,有需要的可以参考这篇文章。2.2genesis.json文件假设你已经在gola
极地大王章
·
2020-08-11 23:44
以太坊
以太坊源码分析
之 P2P网络(三、UDP底层通信)
区块链特辑:https://blog.csdn.net/fusan2004/article/details/80879343,欢迎查阅,原创作品,转载请标明!这周工作有点小忙,部门区块链基础平台的开发开始进入节奏了,和上一篇间隔间隔有点久了,以后还是要坚持,不能刚开始就犯毛病了。上篇讲的是以太坊p2p网络的一个重点部分——节点发现,在介绍的时候提过,节点发现是通过udp的方式来进行的,这一篇就介绍
还是要学会仰望
·
2020-08-10 09:27
区块链
开源代码
区块链教程
以太坊源码分析
core-state源码分析(一)
区块链教程
以太坊源码分析
core-state源码分析,core/state包主要为以太坊的statetrie提供了一层缓存层(cache)database主要提供了trie树的抽象,提供trie树的缓存和合约代码长度的缓存
congdianquan3478
·
2020-08-08 14:20
转:
以太坊源码分析
(51)rpc源码分析
##RPC包的官方文档PackagerpcprovidesaccesstotheexportedmethodsofanobjectacrossanetworkorotherI/Oconnection.Aftercreatingaserverinstanceobjectscanberegistered,makingitvisiblefromtheoutside.Exportedmethodsthat
uuussseeennn
·
2020-07-30 02:41
以太坊源码分析
(15)node包建立多重协议以太坊节点
node包建立多重协议以太坊节点一个node是一组服务,通过共享资源提供RPCAPI。Services提供devp2p协议,当node实例开始运行,服务被wire到devp2p网络Node管理资源Node实例使用到的所有文件系统资源被放到data目录中。每个资源的路径可以通过额外的node配置改写。data目录是可选的。==如果没有设置或资源路径没有指定,node包会在内存中创建资源。==配置No
尹成
·
2020-07-29 01:20
区块链
区块链入门教程
以太坊源码分析
node包建立多重协议eth节点
node包建立多重协议eth节点node包建立多重协议以太坊节点一个node是一组服务,通过共享资源提供RPCAPI。Services提供devp2p协议,当node实例开始运行,服务被wire到devp2p网络Node管理资源Node实例使用到的所有文件系统资源被放到data目录中。每个资源的路径可以通过额外的node配置改写。data目录是可选的。如果没有设置或资源路径没有指定,node包会在
baidu_39383304
·
2020-07-27 19:25
以太坊源码分析
(7)Ethereum 资源分享
#AwesomeEthereum[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)>collectionofbestresourcesfor
尹成
·
2020-07-15 11:34
区块链
以太坊源码分析
--p2p节点发现
p2p(peertopeer)负责以太坊节点间的通信,主要包括底层节点发现(discover)和上层协议运行两大块,本文主要描述其中节点发现部分的实现数据结构节点发现功能主要涉及Server\Table\udp这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个Server,并将网络拓扑中相邻的节点视为Node,而Table是
japson0409
·
2020-07-12 20:16
区块链
以太坊
go
以太坊源码分析
(4)accounts包简介
accounts包实现了以太坊客户端的钱包和账户管理。账号的数据结构:typeAccountstruct{Addresscommon.Address`json:"address"`//EthereumaccountaddressderivedfromthekeyURLURL`json:"url"`//Optionalresourcelocatorwithinabackend}钱包interface
chunqi zhi
·
2020-07-12 20:41
区块链
golang
以太坊
以太坊源码分析
-交易执行及合约创建具体流程
1.StateProcessor的处理器会遍历块中的每一条交易,通过ApplyTransaction函数来执行交易Process函数会返回receipts和logs以及交易所花费的gas,如果因为交易因insufficientgas而失败,那么将会返回错误func(p*StateProcessor)Process(block*types.Block,statedb*state.StateDB,cf
爱吃鱼的俞阿娟
·
2020-07-12 18:44
区块链
以太坊源码分析
(54)以太坊随机数生成方式
最近考虑一个基于以太坊的去中心化赌场的实现,赌场如果需要实现,那么随机数是必须的。然后研究了一下以太坊里面的随机数生成,发现并不容易。以太坊里面生成随机数的几种方式。#oraclizeOraclize定位为去中心化应用的数据搬运工,他作为WebAPIs和DApp的可靠链接。有了Oraclize,就不需要建立额外的信任链,因为我们的行为已经被强制加密验证。Oraclize是一个可证明的诚实的预言机服
尹成
·
2020-07-12 18:20
区块链
以太坊源码分析
(53)以太坊测试网络Clique_PoA介绍
https://github.com/ethereum/EIPs/issues/225Clique的模式下,用户是无法获取以太币的,因为无法挖矿,所以如果需要以太币,需要通过特殊的途径来获取。可以通过这个网站获取etherhttps://faucet.rinkeby.io/需要有google+账号,facebook或者twitter账号才能获取,详细的获取办法参考上面的网站。Clique是以太坊的
尹成
·
2020-07-12 18:20
区块链
以太坊源码分析
(50)p2p-udp.go源码分析
p2p的网络发现协议使用了Kademliaprotocol来处理网络的节点发现。节点查找和节点更新。Kademliaprotocol使用了UDP协议来进行网络通信。阅读这部分的代码建议先看看references里面的Kademlia协议简介来看看什么是Kademlia协议。首先看看数据结构。网络传输了4种数据包(UDP协议是基于报文的协议。传输的是一个一个数据包),分别是ping,pong,fin
尹成
·
2020-07-12 18:20
区块链
以太坊源码分析
(52)以太坊fast sync算法
thisPRaggregatesalotofsmallmodificationstocore,trie,ethandotherpackagestocollectivelyimplementtheeth/63fastsynchronizationalgorithm.Inshort,geth--fast.这个提交请求包含了对core,trie,eth和其他一些package的微小的修改,来共同实现et
尹成
·
2020-07-12 18:20
区块链
上一页
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
其他