以太坊系列之八: 比特币难度系数的计算
摘要:区 块 421133 的 难度 位 数值 是 402990845, 转成 十六进制 是 0x180526FD。 比特 币 的 难度 目标 是以 十六进制 数 的 前 两位 做 指数, 其余 位数 做 系数, 由 下面 公式 计算 出来: target= coefficient × 2^( 8 ×(
阅读全文
posted @
2017-06-22 10:07
baizx
阅读(1387)
推荐(0) 编辑
go-spew golang最强大的调试助手,没有之一
摘要:go内置的fmt.sprintf已经很强大了,但是和spew比起来还是相形见绌,这里来一个例子. 对比一下,看看输出有多美:
阅读全文
posted @
2017-06-09 08:45
baizx
阅读(1372)
推荐(0) 编辑
以太坊系列之七: p2p模块的dial--以太坊源码学习
摘要:dial.go阅读手记 dial.go是负责和peer建立连接关系的地方,主要是实现 其中最复杂的是newTasks,是建立新的连接,从test代码中可以看出, 要在指定的最大连接数(peers)基之上去创建新的连接 lookupBuf // current discovery lookup res
阅读全文
posted @
2017-06-08 16:43
baizx
阅读(3641)
推荐(0) 编辑
以太坊系列之六: p2p模块--以太坊源码学习
摘要:p2p模块 p2p模块对外暴露了Server关键结构,帮助上层管理复杂的p2p网路,使其集中于Protocol的实现,只关注于数据的传输. Server使用discover模块,在指定的UDP端口管理网络中结点的发现以及维护,discover模块能够直接和临近结点交换各自已知结点信息,从而不断的更新
阅读全文
posted @
2017-06-08 16:42
baizx
阅读(3064)
推荐(1) 编辑
以太坊系列之五: p2p的nat模块--以太坊源码学习
摘要:p2p的nat模块 该模块相对比较简单,因为nat的真正实现并不在此模块,主要是使用了第三方的nat upnp和nat pmp来实现真正的穿透(端口映射). 对外公布的接口 主要有三个关键函数一个是添加映射,一个是删除映射,另一个是获取外部IP.使用起来非常直观,我们这里看一个例子,nat.go中的
阅读全文
posted @
2017-06-07 16:34
baizx
阅读(2149)
推荐(0) 编辑
以太坊系列之四: 使用atomic来避免lock
摘要:使用atomic来避免lock 在程序中为了互斥,难免要用锁,有些时候可以通过使用atomic来避免锁, 从而更高效. 下面给出一个以太坊中的例子,就是 ,从名字Pipe可以看出, 他实际上就是一个pipe,相比大家对pipe已经比较熟悉了,我就不多解释了. go type MsgPipeRW st
阅读全文
posted @
2017-06-06 12:09
baizx
阅读(1453)
推荐(1) 编辑
如何优雅地使用win10的Linux子系统
摘要:转自: http://blog.csdn.net/u010053050/article/details/52388663 http://www.rehack.cn/techshare/devtools/842.html 首先你要升级到win10周年更新版,然后安装linux子系统。 win10的li
阅读全文
posted @
2017-06-03 09:24
baizx
阅读(1550)
推荐(0) 编辑
以太坊系列之三: 以太坊的crypto模块--以太坊源码学习
摘要:以太坊的crypto模块 该模块分为两个部分一个是实现sha3,一个是实现secp256k1(这也是比特币中使用的签名算法). 需要说明的是secp256k1有两种实现方式,一种是依赖libsecp256k1,需要cgo,另外一种是依赖 "github.com/btcsuite/btcd" ,这是一
阅读全文
posted @
2017-06-03 09:21
baizx
阅读(12731)
推荐(2) 编辑
解决在cmder中bash(WSL)上下箭头不能使用问题
摘要:有三种解决方式,第一种方式最简单实用 安装新版本wslbridge 这个解决方法最简单,最实用,下载 "第三方wslbridge" ,安装即可使用. 这时再进入cmder,运行bash.exe,可以发现上下左右箭头已经可以工作了. 修改启动参数 Solution 1: Default task {b
阅读全文
posted @
2017-06-03 09:19
baizx
阅读(1819)
推荐(0) 编辑
以太坊系列之二: 单调时间monotime-以太坊源码学习
摘要:在程序中需要测量时间时最好使用monotime.Now()而不是time.Now(),相比之下前者更准确. 来个示例: 可以看到,精确到毫秒级 ,以太坊中用来度量时间
阅读全文
posted @
2017-06-01 14:35
baizx
阅读(2650)
推荐(1) 编辑
以太坊系列之一: 以太坊RLP用法-以太坊源码学习
摘要:"RLP" (递归长度前缀)提供了一种适用于任意二进制数据数组的编码,RLP已经成为以太坊中对对象进行序列化的主要编码方式。RLP的唯一目标就是解决结构体的编码问题;对原子数据类型(比如,字符串,整数型,浮点型)的编码则交给更高层的协议;以太坊中要求数字必须是一个大端字节序的、没有零占位的存储的格式
阅读全文
posted @
2017-06-01 14:15
baizx
阅读(10793)
推荐(1) 编辑