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
以太坊源码
以太坊源码
分析(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
区块链
以太坊源码
分析(24)core-state源码分析
core/state包主要为以太坊的statetrie提供了一层缓存层(cache)-database主要提供了trie树的抽象,提供trie树的缓存和合约代码长度的缓存。-journal主要提供了操作日志,以及操作回滚的功能。-state_object是account对象的抽象,提供了账户的一些功能。-statedb主要是提供了statetrie的部分功能。##database.godataba
尹成
·
2020-07-12 18:20
区块链
以太坊源码
分析(52)trie源码分析
包trie实现了MerklePatriciaTries,这里用简称MPT来称呼这种数据结构,这种数据结构实际上是一种Trie树变种,MPT是以太坊中一种非常重要的数据结构,用来存储用户账户的状态以及状态的变更,用来存储交易信息,用来存储交易的收据信息。MPT实际上是三种数据结构的组合,分别是Trie树,PatriciaTrie,和Merkle树。下面分别介绍这三种数据结构。##Trie树(引用介绍
尹成
·
2020-07-12 18:20
区块链
以太坊源码
分析(14)P2P分析
#概述Kademlia(简称Kad)是一种分布式哈希表技术,用于建立p2p网络拓扑结构。基本原理就是以两个节点ID的异或值作为两节点间的距离d,每个节点都将其他节点的信息存储到称之为K桶的表结构中,该表结构按照d的为1的最高bit位分层(可理解为桶索引),每层中存储最多K个节点信息。如下:|I|距离范围|邻居||:---:|:---------:|:-----------:||0|[2^0,2^1
尹成
·
2020-07-12 18:19
区块链
以太坊源码
分析(8)区块分析
##区块存储区块的存储是由leveldb完成的,leveldb的数据是以键值对存储的。在这里保存区块信息时,key一般是与hash相关的,value所保存的数据结构是经过RLP编码的。在代码中,core/database_util.go中封装了区块存储和读取相关的代码。在存储区块信息时,会将区块头和区块体分开进行存储。因此在区块的结构体中,能够看到Header和Body两个结构体。区块头(Head
尹成
·
2020-07-12 18:19
区块链
以太坊源码
分析(5)accounts代码分析
##1.personal.newAccount创建账户方法用户在控制台输入personal.newAccount会创建一个新的账户,会进入到ethapi.api中的newAccount方法中,这个方法会返回一个地址。```func(s*PrivateAccountAPI)NewAccount(passwordstring)(common.Address,error){acc,err:=fetchK
尹成
·
2020-07-12 18:19
区块链
以太坊源码
分析(23)core-state-process源码分析
##StateTransition状态转换模型/*TheStateTransitioningModel状态转换模型Astatetransitionisachangemadewhenatransactionisappliedtothecurrentworldstate状态转换是指用当前的worldstate来执行交易,并改变当前的worldstateThestatetransitioningmode
尹成
·
2020-07-12 18:19
区块链
以太坊源码
分析--MPT树
MPT(MerklePatriciaTries)是以太坊中存储区块数据的核心数据结构,它MerkleTree和PatriciaTree融合一个树形结构,理解MPT结构对之后学习以太坊区块header以及智能合约状态存储结构的模块源码很有帮助。首先来看下Merkle树:它的叶子是数据块的hash,从图中可以看出非叶子节点是其子节点串联字符串的hash,底层数据的任何变动都会影响父节点,这棵树的Mer
weixin_34293911
·
2020-07-12 09:30
以太坊源码
分析(1)——代码结构
一、说在最前本系列文章【
以太坊源码
分析】将边学习边更新,如未特殊说明,将默认为【go-ethereum-1.8.0】。
极地大王章
·
2020-07-12 04:12
以太坊
以太坊源码
解读 BlockChain的WriteBlockWithState方法
一、前言本章节介绍BlockChain的WriteBlockWithState方法。WriteBlockWithState方法的功能是将一个区块写入区块链,同时处理可能发生的分叉,能够执行到WriteBlockWithState这个函数说明区块本身是被验证过的没有问题,所以这个方法一定能将区块写入数据库,但是能不能写入规范链,需要进一步判断,假设写入的是规范链,是在原有规范链基础是追加一个呢?还是
李_MAX
·
2020-07-12 02:53
【
以太坊源码
】mpt实现
转载自:clickheretrie/encoding.goencoding.go主要处理trie树中的三种编码格式的相互转换的工作。三种编码格式分别为下面的三种编码格式。KEYBYTESencoding这种编码格式就是原生的key字节数组,大部分的Trie的API都是使用这边编码格式HEXencoding这种编码格式每一个字节包含了Key的一个半字节,尾部接上一个可选的'终结符','终结符'代表这
tianlongtc
·
2020-07-12 00:25
以太坊
以太坊源码
之『账户管理钱包分析』
如何实现通过geth生成以太坊地址?personal.newAccount(password)//创建一个新的账号funcaccountCreate(ctx*cli.Context)error{//获取geth配置cfg:=gethConfig{Node:defaultNodeConfig()}//加载配置文件iffile:=ctx.GlobalString(configFileFlag.Name
super_lixiang
·
2020-07-12 00:14
区块链
以太坊源码
之『geth命令操作』
概念:geth是go-ethereum中最主要的一个命令行工具,也是各种网络的接入点,支持全节点和轻节点模式,其它程序也可以通过暴露的JSONRPC接口调用访问以太访网络。主要引用第三方的cli包实现源码地址:https://gopkg.in/urfave/cli.v1概念:一个基于go开发的用于在go里面构建命令行的应用程序geth启动流程分析通过init做一个geth整体初始化//geth整体
super_lixiang
·
2020-07-12 00:14
区块链
[
以太坊源码
学习] 客户端发起合约调用
我们都知道,乙太坊中的合约其实就是一段程序,一般由solidity开发。在这一段程序中,定义了:一系列的变量,用来做合约本地存储,一般只在合约内部被调用,也可以声明成public的,solidity编译器会自动为其生成对应的get函数。一个构造函数,仅在合约部署时被被自动调用一次,用来初始化合约;很多方法,其中只有public或external的方法才可以被外界调用,用户主要面向的是这些函数。所谓
二进制狂客
·
2020-07-11 22:23
区块链
以太坊开发资源汇总
AwesomeEthereumcollectionofbestresourcesforethereumdevelopmentContents架构教程视频工具文档SDK优化案例Architect以太坊白皮书TheEthereumWiki以太坊设计原理以太坊代码剖析
以太坊源码
阅读
新缸中之脑
·
2020-07-11 22:34
区块链
DApp
以太坊
以太坊开发
以太坊源码
分析---go-ethereum之MPT(Merkle-Patricia Trie)
本文微信公众号月牙寂道长文章链接为:https://mp.weixin.qq.com/s/vljKF9lI6l_fKu0_Nn0U7g本文图片可能不太清晰,看清晰版本的,可以看原文链接微信公众号链接。MPT(Merkle-PatriciaTrie)其实就是一个数据结构,在以太坊中用于存储用户账户的状态及其变更、交易信息、交易的收据信息。要讲MPT,就要讲讲MPT是如何演变来的。Trie图片来自ht
月牙寂
·
2020-07-11 22:26
golang
以太坊
源码分析
以太坊源码
分析---go-ethereum之p2p通信分析(2)
本文QQ空间链接:http://user.qzone.qq.com/29185807/blog/1519899372本文csdn博客链接:http://blog.csdn.net/screscent/article/details/79416318上一篇分析了p2p模块的初始化与start。继续上一篇分析。先回顾下p2p的初始化github.com/ethereum/go-ethereum/eth
月牙寂
·
2020-07-11 22:25
golang
区块链
以太坊
以太坊源码
BlockChain类
功能:管理区块链,实现增、改、查操作以太坊启动后,系统中只存在一个BlockChain实例文件位置:core-->blockchain.go数据结构:Processor:处理器Validator:验证consensus:共识typeBlockChainstruct{chainConfig*params.ChainConfig//链和网络配置cacheConfig*CacheConfig//Cach
一片冰心王司徒
·
2020-07-11 19:46
区块链
以太坊源码
分析:statedb
前言就如以太坊黄皮书讲的,以太坊是状态机,区块的产生,实际是状态迁移的过程。那以太坊是如何定义状态的?是如何迁移状态的?是怎么存储状态的?这篇文章就介绍什么是状态,以及是怎么存储的。状态基本知识状态的定义一个账户的信息,就是一个状态,而以太坊是所有状态的集合。比如,最开始的状态是:{A有10元,B有0元},后来A发起了交易,给B2元,状态变成{A有8元,B有2元},这中间的过程就是状态转移。以太坊
lessisbetter
·
2020-07-11 12:06
区块链
以太坊源码
解读(20)通过EVM执行转账或合约调用——Call()
在了解合约调用之前,我们需要知道调用合约的本质是什么。在我们创建合约的时候,由run函数初始化的智能合约code(ret)储存在stateDB中。也就是说在内存中并没有Contract这个对象,而只是存在智能合约code。那我们如何调用合约呢?本质上,调用合约实际上是从合约账户中取出合约代码,然后NewContract()创建出一个临时的contract对象(如下图),然后执行contract的S
佛系布偶
·
2020-07-11 11:41
以太坊源码
以太坊源码
解读(6)blockchain区块插入和校验分析
以太坊blockchain的管理事务:1、blockchain模块初始化2、blockchain模块插入校验分析3、blockchain模块区块链分叉处理4、blockchian模块规范链更新上一节分析了blockchain的初始化,这一节来分析blockchain区块的插入和校验分析以及规范链更新。一、InsertChain函数主要功能:调用insertChain将一组区块挨个尝试插入数据库和规
佛系布偶
·
2020-07-11 11:41
以太坊源码
以太坊源码
解读(19)通过EVM创建智能合约——Create()
我们要知道,evm解释器的执行上下文是stateTransition,是交易,但evm的服务对象是智能合约。智能合约与evm的解释器有紧密的联系,所以我们这一节先从智能合约的创建和执行开始学习。合约创建函数的调用时机,一是Worker执行交易的过程,交易如果是合约创建,则会在EVM执行交易时生成智能合约地址并部署智能合约;二是通过opCreate指令,这个指令使得在智能合约内部创建新的智能合约成为
佛系布偶
·
2020-07-11 11:41
以太坊源码
以太坊源码
解读(4)Block类及其储存
一、Block类typeBlockstruct{/******header*******/header*Header/******header*******//******body*********/uncles[]*HeadertransactionsTransactions/******body*********///cacheshashatomic.Valuesizeatomic.Value
佛系布偶
·
2020-07-11 11:41
以太坊源码
以太坊源码
解读(9)以太坊的P2P模块解析——底层网络构建和启动
以太坊的底层p2pServer,大约可以分为三层:1、底层:table对象、node对象,它们分别定义了底层的路由表以及本地节点的数据结构、搜索和验证;1)database.go//封装node数据库相关操作2)node.go//节点数据结构3)ntp.go//同步时间4)table.go//路由表5)udp.go//网络相关操作2、中层:peer对象定义了远端节点、message对象开放发送接口
佛系布偶
·
2020-07-11 11:41
以太坊源码
以太坊源码
分析之 P2P网络(一、基础类或类型描述)
区块链特辑:https://blog.csdn.net/fusan2004/article/details/80879343,欢迎查阅,原创作品,转载请标明!从这篇开始,我们将会围绕着以太坊和eos的源码对一个区块链平台系统的不同组成展开进一步的源码级分析,之所以选择P2P开始我们的征程,主要有两个原因,一是我们部门目前正在进行内部区块链平台的开发,我本人正好负责了其中p2p及网络部分的研发任务,
还是要学会仰望
·
2020-07-11 06:32
区块链
以太坊源码
分析之十Merkle Patricia Tree(MPT)
以太坊源码
分析之十MerklePatriciaTree(MPT)以太坊中,MPT是一个非常重要的数据结构,在以太坊中,帐户的交易信息、状态以及相应的状态变更,还有相关的交易信息等都使用MPT来进行管理。
fpcc
·
2020-07-11 06:23
blockchain
以太坊源码
分析—p2p节点发现与协议运行
##前言p2p(peertopeer)负责以太坊底层节点间的通信,主要包括底层节点发现(discover)和上层协议运行两大部分。##节点发现节点发现功能主要涉及Server\Table\udp这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个Server,并将网络拓扑中相邻的节点视为Node,而Table是Node的容器,
187J3X1
·
2020-07-11 03:08
区块链
以太坊源码学习
以太坊源码
分析—Ethash共识算法
Ethereum当前和Bitcoin一样,采用基于工作量证明(ProofofWork,PoW)的共识算法来产生新的区块。与Bitcoin不同的是,Ethereum采用的共识算法可以抵御ASIC矿机对挖矿工作的垄断地位,这个算法叫做Ethash。为什么要反ASICPoW的的核心是Hash运算,谁的Hash运算更快,谁就更有可能挖掘出新的区块,获得更多的经济利益。在Bitcoin的发展过程中,挖矿设备
187J3X1
·
2020-07-11 03:36
以太坊源码学习
以太坊源码
分析(18)以太坊交易执行分析
#以太坊交易执行分析在这里,将其整体串起来,从state_processor.Process函数开始,归纳一下其所作的处理。##1ProcessProcess根据以太坊规则运行交易信息来对statedb进行状态改变,以及奖励挖矿者或者是其他的叔父节点。Process返回执行过程中累计的收据和日志,并返回过程中使用的Gas。如果由于Gas不足而导致任何交易执行失败,将返回错误。**处理逻辑:**~~
尹成
·
2020-07-10 20:47
区块链
以太坊源码
分析(6)accounts账户管理分析
##数据结构分析以太坊的账户管理定义在accounts/manager.go中,其数据结构为:```//Managerisanoverarchingaccountmanagerthatcancommunicatewithvarious//backendsforsigningtransactions.typeManagerstruct{backendsmap[reflect.Type][]Backe
尹成
·
2020-07-10 20:47
以太坊源码
分析(2)go ethereum 目录大概介绍
go-ethereum项目的组织结构基本上是按照功能模块划分的目录,下面简单介绍一下各个目录的结构accounts实现了一个高等级的以太坊账户管理bmt二进制的默克尔树的实现build主要是编译和构建的一些脚本和配置cmd命令行工具,又分了很多的命令行工具,下面一个一个介绍/abigenSourcecodegeneratortoconvertEthereumcontractdefinitionsi
尹成
·
2020-07-10 20:46
区块链
以太坊源码
(01):P2P网络及节点发现机制
目录1分布式网络介绍1.1Kad网介绍1.2Kad网络节点距离1.3K桶1.4Kad通信协议2邻居节点2.1NodeTable类主要成员2.2邻居节点发现方法2.3邻居节点网络拓扑及刷新机制。1分布式网络介绍以太坊底层分布式网络即P2P网络,使用了经典的Kademlia网络,简称kad。1.1Kad网介绍Kademlia在2002年由美国纽约大学的PetarP.Manmounkov和DavidMa
weixin_30519071
·
2020-07-10 18:37
以太坊——重新编译静态文件bindata.go文件
最近在改
以太坊源码
,在执行internal/jsre/deps/deps.go的go-bindata-nometadata-pkgdeps-obindata.gobignumber.jsweb3.js命令出现了一些问题
BlackSpiderGeneral
·
2020-07-10 18:14
以太坊
以太坊源码
分析--MPT树
MPT(MerklePatriciaTries)是以太坊中存储区块数据的核心数据结构,它MerkleTree和PatriciaTree融合一个树形结构,理解MPT结构对之后学习以太坊区块header以及智能合约状态存储结构的模块源码很有帮助。首先来看下Merkle树:它的叶子是数据块的hash,从图中可以看出非叶子节点是其子节点串联字符串的hash,底层数据的任何变动都会影响父节点,这棵树的Mer
区块链技术头条
·
2020-07-10 17:12
区块链
以太坊
Solidity
区块链应用
区块链发展
以太坊源码
导读 大致分两部分
最近看好几天以太坊的源码没看出个所以然。一般研究一个项目代码一般是把项目先跑起来。看了半天没找到代码入口。https://github.com/ethereum/pyethereum这个是目前的分支,可以看到已经非常复杂了。由github的commit记录我们可以大致确定以太坊的主要代码。即链接:https://github.com/ethereum/pyethereum/tree/e476fb1
于桓
·
2020-07-10 17:29
以太坊源码
解读(23)stateDB分析
前面介绍了以太坊MPT树的结构和方法,而stateDB对象就是对以太坊状态MPT进行管理的对象。其管理功能包括:1、初始化:New2、增加:StateDB.createObject3、删除:StateDB.Suicide4、修改:StateDB.AddBalance5、查询:StateDB.GetBalance6、拍摄快照:StateDB.Snopshot7、恢复快照:StateDB.Revert
佛系布偶
·
2020-07-10 17:48
以太坊源码
以太坊源码
分析—Whisper
前言Whisper是以太坊中一项非常有趣的技术,它是一个基于身份的通信系统,被设计用于Dapp之间少量数据通信。Whisper协议运行在以太坊p2p协议框架之上,所有运行Whisper协议的节点(以下简称节点)组成一个Whisper网络。通过节点之间的消息转发,理论上,每个节点都可以收到所有Whisper消息。特性Whisper具有以下基本特性和概念通信加密每一条Whisper消息在网络上都是加密
187J3X1
·
2020-07-10 16:23
区块链
以太坊源码学习
以太坊源码
分析—账户的管理
#前言以太坊是一个巨大的状态机,在网络中,每一个全节点都保存着以太坊状态机的全部历史,只要愿意,我们可以查询到任何时刻的状态(黄皮书中WorldState),其中账户状态便是其中的一部分,这部分功能由主要由state包提供##基本概念####账户地址在以太坊中,无论是外部账户还是合约账户,都以一个160bit的数组表示地址,它是由特定椭圆曲线上的一个点表示的公钥经过KeccakHash算法截取而来
187J3X1
·
2020-07-10 15:51
区块链
以太坊源码学习
5.5
以太坊源码
详解5
交易步骤发起交易:制定目标地址和交易金额,以及gas和gaslimit交易签名:使用账户的私钥对交易进行签名提交交易:把交易添加到交易缓冲池中(会先对签名进行验证)广播交易:通知EVM执行,同时把交易广播到其他节点具体分析1、发起交易func(s*PublicTransactionPoolAPI)SendTransaction(ctxcontext.Context,argsSendTxArgs)(
尹成
·
2020-07-10 13:47
区块链
以太坊源码
交易流程源码解读
和Bitcoin类似,以太坊的转账流程基本是这样的:1.发起交易:指定目标地址和交易金额,以及必需的gas/gasLimit2.交易签名:使用账户私钥对交易进行签名3.提交交易:验签交易,并将交易提交到交易缓冲池4.广播交易:通知以太坊虚拟机吧交易信息广播给其他节点EthTransaction结构首先,在源码中搜索到Transaction结构的定义之处:./core/types/transacti
weixin_30885111
·
2020-07-10 07:46
以太坊源码
分析-转账流程分析
以太坊源码
分析-以太坊启动前面我们分析以太坊的启动过程,在过程中已经创建了交易池(tx_pool),现在我们猜测一下转账的大概步骤:创建一笔交易,并发送接收到交易信息,然后做一些验证验证合法,将该交易放入交易池
weixin_30569033
·
2020-07-10 06:02
【
以太坊源码
阅读】椭圆曲线加密和EIP155
1、以太坊椭圆曲线加密r,s,vhttps://crypto.stackexchange.com/questions/59506/ecdsa-recover-on-arbitrary-valueshttps://crypto.stackexchange.com/questions/18105/how-does-recovering-the-public-key-from-an-ecdsa-sign
tianlongtc
·
2020-07-10 03:54
以太坊
以太坊源码
解读(18)以太坊交易的执行基本流程——将交易递交给EVM
之前分析挖矿模块,miner从TxPool拿来的交易,交给worker对象。后者要调用commitTransaction在本地执行交易,生成receipt,更改世界状态,打包成挖矿的block最后递交给engine进行挖矿。而这一节我们关注的是在commitTransaction中,如何在本地执行交易。func(w*worker)commitTransaction(tx*types.Transac
佛系布偶
·
2020-07-09 19:29
以太坊源码
以太坊源码
解读(2)以太坊客户端geth源码目录解析
Geth是以太坊官方唯一推荐的客户端,相当于是对以太坊区块链的官方实现。源码的地址是:https://github.com/ethereum/go-ethereum下面我们来从Geth源码的目录来看看以太坊都有哪些模块。一、目录分析go-etherreum-master|-accounts/*实现了高层级Ethereum账号管理*/||-abi//该包实现了Ethereum的ABI(应用程序二进制
佛系布偶
·
2020-07-09 19:29
以太坊源码
以太坊源码
分析-交易源码分析(一)
目录一.发起交易1.发送交易时参数的机构体对象2.SendTransaction()方法介绍2.1.toTransaction()方法2.2.调用wallet.SignTx(account,tx,chainID)对当前交易进行签名。2.2.1调用types.SignTx方法进行签名2.2.2调用WithSignature为交易设置签名2.2.3调用SignatureValues方法获取r,s,v字
火一样的男子
·
2020-07-09 08:38
以太坊
以太坊源码
探究之交易与签名
与比特币相比,以太坊中的交易结构有相当明显的不同。下面是以太坊中Transaction数据结构的UML图:以太坊交易类图右边的txdata才是实际的交易数据,它在core/types/transaction.go里是这样声明的:typetxdatastruct{AccountNonceuint64`json:"nonce"gencodec:"required"`Price*big.Int`json
diaoju3333
·
2020-07-09 07:39
以太坊源码
分析(五) - geth的启动过程分析
先看下启动的日志:y@ubuntu:~/blockchain/Ethereum/go-ethereum-1.8.13$build/bin/geth--identity"TestNode1"--datadir"data0"--rpc--rpcapi"db,eth,net,web3"--port"30303"--networkid"29382"--ws--wsorigins="*"--rpccorsd
yzpyzp
·
2020-07-09 04:08
区块链
以太坊源码分析
以太坊源码
分析(39)geth启动流程分析
geth是我们的go-ethereum最主要的一个命令行工具。也是我们的各种网络的接入点(主网络main-net测试网络test-net和私有网络)。支持运行在全节点模式或者轻量级节点模式。其他程序可以通过它暴露的JSONRPC调用来访问以太坊网络的功能。如果什么命令都不输入直接运行geth。就会默认启动一个全节点模式的节点。连接到主网络。我们看看启动的主要流程是什么,涉及到了那些组件。##启动的
尹成
·
2020-07-09 03:08
区块链
以太坊源码
分析(12)交易数据分析
##交易的数据结构交易的数据结构定义在core.types.transaction.go中,结构如下:```typeTransactionstruct{datatxdata//cacheshashatomic.Valuesizeatomic.Valuefromatomic.Value}```交易的结构体中只有一个data字段,是txdata类型的。其他的hash,size,from都是缓存。txd
尹成
·
2020-07-09 03:08
区块链
上一页
1
2
3
4
5
6
7
下一页
按字母分类:
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
其他