自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (1)
  • 收藏
  • 关注

原创 以太坊源码深入分析(9)-- 以太坊通过EVM执行交易过程分析

上一节分析了同步一个新的区块准备插入本地BlockChain之前需要重放并执行新区块的所有交易,并产生交易收据和日志。以太坊是如何执行这些交易呢?这就要请出大名鼎鼎的以太坊虚拟机。以太坊虚拟机在执行交易分为两个部分,第一部分是创建EVM,计算交易金额,设置交易对象,计算交易gas花销;第二部分是EVM 的虚拟机解析器通过合约指令,执行智能合约代码,具体来看看源码。一,创建EVM,通过EVM执行交易...

2018-05-16 21:08:32 2557 2

原创 以太坊源码深入分析(8)-- 以太坊核心BlockChain源码分析

前面几节都在分析以太坊的通信协议,怎么广播,怎么同步,怎么下载。这一节讲讲以太坊的核心模块BlockChain,也就是以太坊的区块链。1,BlockChain的初始化Ethereum服务初始化的时候会调用core.SetupGenesisBlock来加载创始区块。顾名思义,创始区块就是以太坊区块链中的第一个区块,number值为0。紧接着调用core.NewBlockChain来加载以太坊的区块链...

2018-05-09 19:20:51 3389 1

原创 以太坊源码深入分析(7)-- 以太坊Downloader源码分析

上一节分析到Fetcher用于同步网络节点的新区块和新的交易数据,如果新区块和本地最新的区块相隔距离较远,说明本地区块数据太旧,Fetcher就不会同步这些区块。这时候就要借助Downloader来同步完整的区块数据。一,启动DownloaderProtocolManager初始化的时候会进行Downloader的初始化:func New(mode SyncMode, stateDb ethdb....

2018-05-05 19:49:47 1122 2

原创 以太坊源码深入分析(6)-- 以太坊P2P协议接收广播的处理和Fetcher源码分析

上一节主要讲了Ethereum服务和以太坊P2P协议通讯模块ProtocolManager的初始化和启动,以及以太坊通讯协议如何广播给其他的网络节点。这一节讲讲,以太坊通讯协议如何处理接收到的广播消息。以及fetcher怎么工作。一,ProtocolManager接收网络节点广播消息首先看看p2p.Protocol的结构type Protocol struct { Name string Ve...

2018-04-28 17:53:42 1910 1

原创 以太坊源码深入分析(5)-- Ethereum服务和以太坊P2P协议发送广播源码分析

在“以太坊源码深入分析(2)”一文中,我们提到Ethereum作为一个service,被Node 注册进去。Node start的时候会启动其注册的所有服务,Ethereum service也是一样。一,ethereum service的初始化和启动初始化方法func New(ctx *node.ServiceContext, config *Config) (*Ethereum, error) ...

2018-04-25 20:12:54 2182 1

原创 以太坊源码深入分析(4)-- 以太坊RPC通信实例和原理代码分析(下)

上一节我们试着写了一个RPC的请求实例,通过分析源码知道了RPC服务的创建流程,以及Http RPC server创建过程,Http RPC Client的请求流程。这一节,先分析一下Http RPC server如何处理client的请求。然后再分析一下IPC RPC的处理流程。一,Http RPC server处理Client的请求。回到上一节startHTTP() 里面HTTPServer初...

2018-04-22 23:42:15 1636

原创 以太坊源码深入分析(3)-- 以太坊RPC通信实例和原理代码分析(上)

上一节提到,以太坊在node start的时候启动了RPC服务,以太坊通过Rpc服务来实现以太坊相关接口的远程调用。这节我们用个实例来看看以太坊 RPC是如何工作的,以及以太坊RPC的源码的实现一,RPC通信实例1,RPC启动命令 :geth --rpcgo-ethereum的RPC服务默认地址:http://localhost:8545/通过以下命令修改默认地址和端口:geth --rpc --...

2018-04-20 19:55:43 3484 6

原创 以太坊源码深入分析(2)-- go-ethereum 客户端入口和Node分析

一,geth makefile 以及编译逻辑上篇提到用 make geth 来编译geth客户端。我们来看看make file做了什么: geth: build/env.sh go run build/ci.go install ./cmd/geth @echo "Done building." @echo "Run \"$(GOBIN)/geth\" to launch ge...

2018-04-10 21:21:37 1888

原创 以太坊源码深入分析(1)--下载、编译、启动go-ethereum

这段时间一直在研究区块链技术,同时也在加紧研发自己公司的区块链钱包,对区块链相关技术有一定的研究心得,希望通过博文来记录和分享自己的一些心得体会,也欢迎对文章感兴趣的朋友来跟我交流和讨论。笔者打算从以太坊源码分析专栏写起,后面会分析Hyperledger Fabric源码,以及比特币的源码。这里要说明一下,为什么不从比特币源码分析写起:比特币作为区块链技术的鼻祖,它是每个区块链开发者永远的图腾,不...

2018-04-10 15:34:11 1714

java和c++对比

很多初学java的人,包括很多由底层转做java应用的程序员,让你真正的明白java和c++的区别

2011-11-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除