go
japson0409
区块链底层技术开发。
展开
-
ansible 使用亚马逊云服务(AWS)密钥文件 xx.pem同时操纵多个节点
一、安装ansible安装pip包管理工具,先下载安装脚本get-pip.py。 1 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 执行安装脚本。 1 python get-pip.py 验证下是否安装成功。 1...原创 2018-09-08 19:02:24 · 1230 阅读 · 0 评论 -
以太坊源码分析--p2p节点发现
p2p(peer to peer)负责以太坊节点间的通信,主要包括底层节点发现(discover)和上层协议运行两大块,本文主要描述其中节点发现部分的实现数据结构节点发现功能主要涉及 Server \ Table \ udp 这几个数据结构,它们有独自的事件响应循环,节点发现功能便是它们互相协作完成的。其中,每个以太坊客户端启动后都会在本地运行一个Server,并将网络拓扑中相邻的节点...原创 2018-12-27 09:35:15 · 721 阅读 · 0 评论 -
以太坊gas、gaslimit、gasPrice、gasUsed详解。
1. gas是什么。 Gas 翻译成中文就是“燃气”,是以太坊世界的燃料,它决定了以太坊网络生态系统的正常运行。Gas 用来衡量执行某些动作需要多少“工作量”,这些“工作量”就是为了执行该动作支付给网络的费用额。通俗理解,Gas 是给矿工的佣金,并以 ETH 支付,无论是交易、执行智能合约并启动 DApps,还是支付数据存储费用,都需要用到 Gas。 以太坊在区块链上实现了...原创 2018-11-02 18:28:42 · 10174 阅读 · 0 评论 -
以太坊区块广播、fetcher消息接收过滤、downloader的Total Difficulty的代码流程解析
一、定义 Total Difficulty - integer of the total difficulty of the chain until this block. 从区块链的第一个区块到此区块的难度的二、作用 主要用于区块广播和同步fetcher、Insertblock时判断区块新旧,值越大,处理优先级越高。三、代码引用流程1.广播与p2p部分分析...原创 2018-11-09 15:04:18 · 1238 阅读 · 0 评论 -
go语言函数传递问题(map、切片、接口、chan)
一句话总结:map、切片、接口、函数类型、chan都是引用类型,作为函数参数传递不会复制一个副本。package mainimport ( "fmt")func change(a int) { a = 10}func changeMap(m map[int]string) { _, ok := m[1] if ok { m[1] = "...转载 2018-10-24 15:27:00 · 1617 阅读 · 0 评论 -
以太坊源码深入分析(10)-- 以太坊Bloom过滤器实现原理及应用场景分析
上一节分析reciept产生过程的时候提到:reciept会为日志数据生成一个Bloom过滤器,那Bloom过滤器是用来干嘛的呢?有什么用呢?一,Bloom过滤器的数据结构和reciept创建Bloom的过程type Bloom [BloomByteLength]byteBloomByteLength = 256Bloom 就是一个256个字节数组。一共2048位。我们看看怎么把庞大...转载 2018-10-25 17:00:44 · 1432 阅读 · 0 评论 -
以太坊源码深入分析(6)-- 以太坊P2P协议接收广播的处理和Fetcher源码分析
上一节主要讲了Ethereum服务和以太坊P2P协议通讯模块ProtocolManager的初始化和启动,以及以太坊通讯协议如何广播给其他的网络节点。这一节讲讲,以太坊通讯协议如何处理接收到的广播消息。以及fetcher怎么工作。一,ProtocolManager接收网络节点广播消息首先看看p2p.Protocol的结构type Protocol struct { Name ...原创 2018-10-25 16:55:31 · 375 阅读 · 0 评论 -
以太坊源码深入分析(7)-- 以太坊Downloader源码分析
上一节分析到Fetcher用于同步网络节点的新区块和新的交易数据,如果新区块和本地最新的区块相隔距离较远,说明本地区块数据太旧,Fetcher就不会同步这些区块。这时候就要借助Downloader来同步完整的区块数据。一,启动DownloaderProtocolManager初始化的时候会进行Downloader的初始化:func New(mode SyncMode, stateDb ...原创 2018-10-25 16:16:46 · 359 阅读 · 0 评论 -
以太坊bootnode建立连接的过程
总体流程1、节点A向boot发送ping2、boot向A发送pong3、boot向A发送ping,A返回pong(互相ping一下确保对方活着)4、A向boot发送findnode请求5、boot向A发送neighbors信号代码位置这部分的代码在go-etherum/p2p/discover/udp.go中。// Copyright 2015 The go-cy...原创 2018-12-11 14:53:18 · 1999 阅读 · 0 评论