Recent Posts
-
2018-04-19
以太坊源码分析—p2p节点发现与协议运行
前言p2p(peer to peer)负责以太坊底层节点间的通信,主要包括底层节点发现(discover)和上层协议运行两大部分。节点发现节点发现功能主要涉及 Server \ Table \ udp 这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个Server,并将网络拓扑中相邻的节点视为Node,而Table是Node的容器,udp则是负责维持底层的连接。这些结构的关系如下图Serverp2p/server.g...
-
2018-04-17
以太坊源码分析—账户的管理
前言以太坊是一个巨大的状态机,在网络中,每一个全节点都保存着以太坊状态机的全部历史,只要愿意,我们可以查询到任何时刻的状态(黄皮书中World State),而账户状态便是其中的状态,这部分功能由主要由代码中的state包提供基本概念账户地址在以太坊中,无论是外部账户还是合约账户,都以一个160bit的数组表示地址,它是由特定椭圆曲线上的一个点表示的公钥经过Keccak Hash算法截取而来关于椭圆曲线,请点击椭圆曲线关于账户之间的区别,请点击外部账户和合约账户的区别账户内容以太坊中,一个...
-
2018-04-16
以太坊源码分析—交易的执行
前言以太坊是一个运行智能合约的平台,被称作可编程的区块链,允许用户将编写的智能合约部署在区块链上运行。而运行合约的主体便是以太坊虚拟机(EVM)区块 交易 合约区块链由区块(Block)组成,而区块中打包一定数量的交易(Transaction),交易可能是一个单纯的转账操作,也可能是调用一个智能合约,无论是哪一种,EVM在运行(excute)交易时都会创建合约(Contract)外部账户 合约账户以太坊中的账户有两类 外部账户 由账户持有人的私钥控制的真实存在的账户 合约账户 由...
-
2018-04-14
以太坊源码分析—挖矿与共识
前言挖矿(mine)是指矿工节点互相竞争生成新区块以写入整个区块链获得奖励的过程.共识(consensus)是指区块链各个节点对下一个区块的内容形成一致的过程在以太坊中, miner包向外提供挖矿功能,consensus包对外提供共识引擎接口挖矿miner包主要由miner.go worker.go agent.go 三个文件组成 Miner 负责与外部交互和高层次的挖矿控制 worker 负责低层次的挖矿控制 管理下属所有Agent Agent 负责实际的挖矿计算工作三者之间...