
以太坊源码分析
文章平均质量分 75
不折腾就闹心
这个作者很懒,什么都没留下…
展开
-
go-ethereum源码剖析:交易
交易是区块链中最基本也是最核心的一个概念,在以太坊中,交易更是重中之重,因为以太坊是一个智能合约平台,以太坊上的应用都是通过智能合约与区块链进行交互,而智能合约的执行是由交易触发的,没有交易,智能合约就是一段死的代码,可以说在以太坊中,一切都源于交易。下面就来看看在以太坊中交易是什么样的,交易里面都有什么。交易的数据结构在core/types/transaction.go中定义了交易的数据结构:ty转载 2017-06-27 10:41:45 · 3698 阅读 · 0 评论 -
以太坊源码(05):网络服务分析
http://mp.weixin.qq.com/s/yJAwLYbrD9AHLqmlZvy_WA目录 1 网络分层 ............................................................................................42 会话层................................转载 2018-01-10 09:15:35 · 1319 阅读 · 0 评论 -
修改bootnode
bootnode 1 修改core/types/block.go中Header的结构体。加上Signature []byte `json:"signature" gencodec:"required"`2 在p2p/discover/udp.go中修改"os" "github.com/ethereum/go-ethereum/common"原创 2018-01-25 20:31:32 · 1694 阅读 · 0 评论 -
以太坊源码分析-以太坊启动
以太坊源码分析-开篇13年时第一次知道比特币的存在,那时仅仅是跟风炒币而已,没有具体去了解相关的技术细节。前不久无意中有人提到「比特币在没有大维护的情况下完美运行8年了」,瞬间惊呆了,于是乎开始了解区块链的相关知识。在区块链中,我选择以太坊作为切入点,分析以太坊的相关底层技术细节实现。由于初学不久,分析不对的地方烦请指出。以太坊开发环境搭建安装Go环境,请自行Google从gith转载 2018-01-25 11:30:40 · 13950 阅读 · 2 评论 -
concensus.go sealer.go源码
在eth/concensus.go中主要是验证区块头,调整挖矿难度的算法,以及验证挖到的区块是否正确等等功能。还有前期准备,计算奖励等// VerifySeal implements consensus.Engine, checking whether the given block satisfies// the PoW difficulty requirements.func (eth原创 2018-01-16 09:11:56 · 1577 阅读 · 1 评论 -
修改bootnode的功能
func (req *findnode) handle(t *udp, from *net.UDPAddr, fromID NodeID, mac []byte) error { if expired(req.Expiration) { return errExpired } if t.db.node(fromID) == nil { // No bond exists, we do原创 2018-01-15 18:48:44 · 939 阅读 · 0 评论 -
masternode对挖到区块签名
在concensus/ethash/sealer.go中修改import ( crand "crypto/rand" "math" "math/big" "math/rand" "runtime" "sync" "crypto/ecdsa" "fmt" //"io/ioutil" //"os" //"path/filepath" "github.com/ethereum原创 2018-01-22 11:09:08 · 858 阅读 · 0 评论 -
以太坊bootnode测试
环境准备本测试环境在单机上完成,通过不同端口号来区分节点。使用go的客户端geth,版本是Version: 1.6.7-unstable。源码地址: https://github.com/ethereum/go-ethereum 。geth和bootnode的编译自行完成。工作目录结构如下:➜ ethereum tree -L 2.├── bootnode.ke转载 2017-12-28 19:13:49 · 5265 阅读 · 0 评论 -
ethereum p2p源码模块的分析
转http://www.cnblogs.com/baizx/p/6957772.htmlp2p模块p2p模块对外暴露了Server关键结构,帮助上层管理复杂的p2p网路,使其集中于Protocol的实现,只关注于数据的传输.Server使用discover模块,在指定的UDP端口管理网络中结点的发现以及维护,discover模块能够直接和临近结点交换各自已知结点信息,从而不转载 2017-12-28 10:48:11 · 3799 阅读 · 1 评论 -
[以太坊源代码分析] VI. 基于p2p的底层通信(上篇)
以太坊作为一个去中心化的系统,其底层个体相互间的通信显然非常重要,所有数据的同步,各个个体状态的更新,都依赖于整个网络中每个个体相互间的通信机制。以太坊的网络通信基于peer-to-peer(p2p)通信协议,又根据自身传输数据类型(区块,交易,哈希值等),网络节点业务相关性等需求,在各方面做了特别设计。由于以太坊中p2p通信相关代码量较大,打算分为上下两篇文章来加以详解:上篇主要介绍管理转载 2017-12-11 16:24:44 · 6390 阅读 · 2 评论 -
[以太坊源代码分析] II. 数据的呈现和组织,缓存和更新
在Ethereum的世界里,数据的最终存储形式是[k,v]键值对,目前使用的[k,v]型底层数据库是LevelDB;所有与交易,操作相关的数据,其呈现的集合形式是Block(Header);如果以Block为单位链接起来,则构成更大粒度的BlockChain(HeaderChain);若以Block作切割,那么Transaction和Contract就是更小的粒度;所有交易或操作的结果,将以各个个转载 2017-12-11 15:16:28 · 4949 阅读 · 2 评论 -
go-ethereum源码剖析:区块存储
区块和交易等数据最终都是存储在leveldb数据库中的,本文介绍区块和交易在leveldb中的存储格式。在core/database_util.go中封装了所有与区块存储和读取相关的代码,通过这些代码可以弄清楚区块、交易等数据结构在数据库中是如何存储的。区块存储leveldb是一个key-value数据库,所有数据都是以键-值对的形式存储。key一般与hash相关,value一般是要存储的数据结构的转载 2017-06-27 10:43:04 · 2055 阅读 · 0 评论 -
以太坊源码(01):P2P网络及节点发现机制
http://mp.weixin.qq.com/s/_hNFvgOdBp1Z8ecWc6X8rg目录1 分布式网络介绍1.1 Kad网介绍1.2 Kad网络节点距离1.3 K桶1.4 Kad通信协议2 邻居节点2.1 NodeTable类主要成员2.2 邻居节点发现方法2.3 邻居节点网络拓扑及刷新机制。转载 2018-01-10 09:17:33 · 2474 阅读 · 0 评论