兄弟连区块链教程以太坊源码分析core-vm-stack-memory源码分析
vm使用了stack.go里面的对象Stack来作为虚拟机的堆栈。memory代表了虚拟机里面使用的内存对象。stack比较简单,就是用1024个big.Int的定长数组来作为堆栈的存储。构造 // stack is an object for basic stack op
区块链教程以太坊源码分析core-state源码分析(二)
兄弟连区块链教程以太坊源码分析core-state源码分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 ## statedb.gostateDB用来存储以太坊中关于merkle trie的所有内容。 StateDB负责缓存和存储嵌套状态。 这是检索合约和账户的
区块链教程以太坊源码分析core-state源码分析(一)
区块链教程以太坊源码分析core-state源码分析,core/state 包主要为以太坊的state trie提供了一层缓存层(cache)database主要提供了trie树的抽象,提供trie树的缓存和合约代码长度的缓存。journal主要提供了操作日志,以及操作回滚的功能。state_object是account对象的抽象,提供了账户的一些功能。statedb主要是提供了state tri
区块链教程以太坊源码分析core-state-process源码分析(二)
兄弟连区块链教程以太坊源码分析core-state-process源码分析(二):
兄弟连区块链教程以太坊源码分析core-state-process源码分析
## StateTransition 状态转换模型 /* The State Transitioning Model 状态转换模型 A stat
区块链教程以太坊源码分析core-genesis创世区块源码分析
genesis 是创世区块的意思. 一个区块链就是从同一个创世区块开始,通过规则形成的.不同的网络有不同的创世区块, 主网络和测试网路的创世区块是不同的.这个模块根据传入的genesis的初始值和database,来设置genesis的状态,如果不存在创世区块,那么在database里面创建它。数据结构 // Genesis specifies the header fields, st
区块链教程以太坊源码分析downloader-peer源码分析
peer模块包含了downloader使用的peer节点,封装了吞吐量,是否空闲,并记录了之前失败的信息。peer // peerConnection represents an active peer from which hashes and blocks are retrieved.type peerConnection struct {id string // Unique id
区块链教程以太坊源码分析chain-indexer区块链索引二
兄弟连区块链教程以太坊源码分析chain-indexer区块链索引二。
区块链教程以太坊源码分析chain-indexer区块链索引一
兄弟连区块链教程以太坊源码分析chain-indexer区块链索引一chain_indexer 区块链索引chain_indexer.go 源码解析chain_indexer 顾名思义, 就是用来给区块链创建索引的功能。 之前在eth协议的时候,介绍过BloomIndexer的功能,其实BloomIndexer是chain_indexer的一个特殊的实现, 可以理解为派生类, 主要的功能其实实在c
兄弟连区块链教程eth源码分析node包建立多重协议eth节点
node包建立多重协议eth节点 node包建立多重协议以太坊节点 一个node是一组服务,通过共享资源提供RPC API。 Services提供devp2p协议,当node实例开始运行,服务被wire到devp2p网络 Node管理资源 Node实例使用到的所有文件系统资源被放到data目录中。 每个资源的路径可以通过额外的node配置改写。 data目录
兄弟连区块链入门教程之eth源码分析RPC分析
这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符。在这个环境里也内置了一些用来操作eth的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:eth:包含一些跟操作区块链相关的方法;net:包含一些查看p2p网络状态的方法;admin:包含一些与管理节点相关的方法;miner:包含启动&停止挖矿的
兄弟连区块链入门教程之以太坊源码分析交易数据分析
交易的数据结构交易的数据结构定义在core.types.transaction.go中,结构如下:type Transaction struct { data txdata // caches hash atomic.Value size atomic.Value from atomic.Value }交易
区块链入门教程eth源码分析CMD深入分析(二)
cmd包下的geth子包主函数启动的各个子命令解析/gethinitfunction:导入创世块的json,以指定的json作为创世块 args:<genesisPath> demo: init /home/yujian/eth-go/genesis.json notice:ethereum默认创建路径为home目录的.ethereum,如果该目录下已经写入过
兄弟连区块链教程以太源码分析CMD深入分析(一)
cmd包分析cmd下面总共有13个子包,除了util包之外,每个子包都有一个主函数,每个主函数的init方法中都定义了该主函数支持的命令,如geth包下面的:func init() { // Initialize the CLI app and start G
兄弟连区块链教程以太坊源码分析cmd包分析
### cmd包概述 * geth 主要Ethereum CLI客户端。它是Ethereum网络(eth主网,测试网络或私有网)的入口点,使用此命令可以使节点作为full node(默认),或者archive node(保留所有历史状态)或light node(检索数据实时)运行。 其他进程可以通过暴露在HTTP,WebSocket和/或IPC传输之上的JSON R
区块链教程以太源码分析accounts账户管理分析
兄弟连区块链教程以太源码分析accounts账户管理分析。数据结构分析ETH的账户管理定义在accounts/manager.go中,其数据结构为:// Manager is an overarching account manager that can communicate with&nbs
兄弟连区块链教程以太源码分析accounts包简介
accounts包实现了eth客户端的钱包和账户管理。账号的数据结构:typeAccount struct { Address common.Address `json:"address"` // Ethereum account addressderived from t
兄弟连区块链入门教程eth源码分析p2p-udp.go源码分析(二)
ping方法与pending的处理,之前谈到了pending是等待一个reply。 这里通过代码来分析是如何实现等待reply的。pending方法把pending结构体发送给addpending. 然后等待消息的处理和接收。 // ping sends a ping message
兄弟连区块链入门教程分享区块链POW证明代码实现demo
区块链入门教程分享区块链POW证明代码实现demo这里强调一下区块链的协议分层应用层合约层激励机制共识层网络层数据层上 一篇主要实现了区块链的 数据层,数据层主要使用的技术就是对数据的校验,求hash。这里介绍工作量证明POW, POW是属于共识机制的内容。PoW机制中根据矿工的工作量来执行货币的分配和记账权的确定。算力竞争的胜者将获得相应区块记账权和比特币奖励。因此,矿机芯片的算力越
兄弟连区块链教程eth源码解析区块数据结构
在区块链中,区块是存储有价值信息的块。这是任何一种加密货币的本质。除此之外,区块还包含一些技术信息,比如它的版本、当前时间戳和前一区块的散列值(哈希值)Block(区块)是Ethereum的核心数据结构之一* 所有账户的相关活动,以交易(Transaction)的格式存储,每个Block有一个交易对象的列表* 每个交易的执行结果,由一个Receipt对象与其包含的一组Log对象