关闭
当前搜索:

[以太坊源代码分析]III. 挖矿和共识算法的奥秘

点击打开链接 本系列的前两篇分别介绍了以太坊的基本概念,基本环节-交易,区块、区块链的存储方式等,这篇打算介绍一下“挖矿“得到新区块的整个过程,以及不同共识算法的实现细节。 1.待挖掘区块需要组装 在Ethereum 代码中,名为miner的包(package)负责向外提供一个“挖矿”得到的新区块,其主要结构体的UML关系图如下图所示: 处于入口的类是M...
阅读(54) 评论(0)

concensus.go sealer.go源码

在eth/concensus.go中主要是验证区块头,调整挖矿难度的算法,以及验证挖到的区块是否正确等等功能。还有前期准备,计算奖励等 // VerifySeal implements consensus.Engine, checking whether the given block satisfies // the PoW difficulty requirements. func (eth...
阅读(17) 评论(0)

修改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...
阅读(18) 评论(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 邻居节点网络拓扑及刷新机制。 ...
阅读(95) 评论(0)

以太坊源码(05):网络服务分析

http://mp.weixin.qq.com/s/yJAwLYbrD9AHLqmlZvy_WA 目录  1 网络分层 ............................................................................................4 2 会话层...................................
阅读(73) 评论(0)

以太坊源码admin.addPeer

http://blog.csdn.net/code_segment/article/details/78597353?locationNum=8&fps=1 从handle(peer)倒推,寻找被调用关系 在p2p.Server.run()函数,无限for循环中,执行select中case c := 分支的操作,进行handshake,并且goroutine启动Server.r...
阅读(51) 评论(0)

以太坊bootnode测试

环境准备 本测试环境在单机上完成,通过不同端口号来区分节点。使用go的客户端geth,版本是Version: 1.6.7-unstable。源码地址: https://github.com/ethereum/go-ethereum 。geth和bootnode的编译自行完成。工作目录结构如下: ➜  ethereum  tree -L 2 . ├── bootnode.ke...
阅读(79) 评论(0)

ethereum p2p源码模块的分析

转http://www.cnblogs.com/baizx/p/6957772.html p2p模块 p2p模块对外暴露了Server关键结构,帮助上层管理复杂的p2p网路,使其集中于Protocol的实现,只关注于数据的传输. Server使用discover模块,在指定的UDP端口管理网络中结点的发现以及维护,discover模块能够直接和临近结点交换各自已知结点信息,从而不...
阅读(186) 评论(0)

以太坊源码P2P网络及节点发现机制

核心数据结构: NodeTable类负责以太坊的节点发现,NodeTable采用kademlia(KAD)算法进行节点发现 NodeTable维护一个网络节点列表,此列表为当前可用节点,供上层使用由于NodeID经过sha3生成出的Hash为256位。列表有256-1=255项,其中-1是因为刨除了当前节点(本机)列表的每一项位一个节点桶(NodeBucket),每个桶中最多放16个节...
阅读(132) 评论(0)

bootnode建立连接的过程

1、节点A向boot发送ping 2、boot向A发送pong 3、boot向A发送ping,A返回pong(互相ping一下确保对方活着) 4、A向boot发送findnode请求 5、boot向A发送neighbors信号...
阅读(93) 评论(0)

VMware的快照和克隆总结

多重快照功能简介:    快照的含义:对某一个特定文件系统在某一个特定时间内的一个具有只读属性的镜像。当你需要重复的返回到某一系统状态,又不想创建多个虚拟机的时候,就可以使用快照功能。其实,快照并不是VMware Workstation 5的新功能。早在VMware Workstation 4的时代,就已经支持快照功能了。但是VMware Workstation 4只能生成一个快照,也...
阅读(65) 评论(0)

以太坊启动机制

// Start create a live P2P node and starts running it. //创建一个有生命的p2p 节点 并且运行它 func (n *Node) Start() error { //获取写锁 n.lock.Lock() defer n.lock.Unlock() // 如果节点已经在运行,短路 if n.server !...
阅读(266) 评论(0)

golang RWMutex读写锁分析

RWMutex:是基于Mutex实现的读写互斥锁,一个goroutine可以持有多个读锁或者一个写锁,同一时刻只能持有读锁或者写锁 数据结构设计: type RWMutex struct { w Mutex // 互斥锁 writerSem uint32 // 写锁信号量 readerSem uint32 // 读锁信号量 ...
阅读(56) 评论(0)

go语言的常见函数

1 make函数   创建数组切片 Go语言提供的内置函数make()可以用于灵活地创建数组切片。 创建一个初始元素个数为5的数组切片,元素初始值为0:  mySlice1 := make([]int, 5)  创建一个初始元素个数为5的数组切片,元素初始值为0,并预留10个元素的存储空间:  mySlice2 := make([]int, 5, 10)  2 defer语句 ...
阅读(40) 评论(0)

在eclipse中配置Go开发环境

转载:https://www.jianshu.com/p/48025776632c 在第一节中,小伙伴们已经学会了安装Go语言的SDK和如何在eclipse中安装对go语言的支持插件,细心的小伙伴会发现,写代码特别累。肿么可以没有代码自动补全功能?好,别着急,现在我们一起来研究。让代码写的飞起来,让Go语言变得好玩起来。 一、我们要做什么 我们要将要安装Go模块下的tools三个小插件,顺带...
阅读(90) 评论(0)

windows下用eclipse+goclipse插件

1、在官网下载jdk。目前最新版本为jdk8。http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。根据自己系统的版本选择,对应的jdk文件,注意一定要选择正确的文件。设置环境变量 此电脑,右键,选择属性,选择高级系统设置。 创建JAVA_HOME变量,变量值是java的安装位置,我...
阅读(41) 评论(0)

ubuntu安装teamviewer

1、在终端中执行如下命令进行安装wget http://download.teamviewer.com/download/teamviewer_i386.deb 或者 sudo dpkg -i teamviewer_12.0.71510_i386.deb 或者 sudo dpkg -i teamviewer_i386.deb2、使用如下命令处理依赖问题sudo apt-get install –f...
阅读(60) 评论(0)

源码安装以太坊/wtc

1 安装go 先更新一下 sudo apt-get update sudo apt-get -y upgrade下载源码https://www.golangtc.com/download 并解压sudo tar -xvf go1.9.2.linux-amd64.tar.gz sudo mv go /usr/local设置路径vi /etc/profileexport PATH=$PATH:/us...
阅读(77) 评论(0)

制作geth 的镜像

1 写Dockerfilemkdir blc cd blc vim Dockerfile FROM ubuntu:16.04RUN apt-get update \ && apt-get install software-properties-common -y \ && add-apt-repository -y ppa:ethereum/ethereum \ &&...
阅读(81) 评论(0)

UPnP的介绍和理解

在远程服务器开了一个节点B,然后在自己电脑上启动两个节点A,C,用了--bootnodes B命令,A和C都能把B节点添加到自己的列表里,但是A和C不能互相发现是为什么?按理来说B应该把自己知道的节点列表都告诉给他相连的节点吧 答案是:它们会自动查找满足upnp协议能链接到的节点啊 所以现在学习一下upnp 前言 做android智能硬件开发一年,蓝牙接触多的就是spp模拟串...
阅读(98) 评论(0)
211条 共11页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:115797次
    • 积分:2679
    • 等级:
    • 排名:第15673名
    • 原创:141篇
    • 转载:67篇
    • 译文:3篇
    • 评论:28条
    最新评论