前两篇文章主要从整体逻辑上对代码进行了梳理,这篇文章将主要讲述网络模块主要的函数,以及其具体实现。 监听连接:ThreadSocketHandler断开没有使用的节点,首先遍历节点数组vNodesCopy,如果节点标识断开连接(fDis..
2018-03-26
任务调度器Bitcoin 进程启动后,有一个专门的线程做任务调度, 这些任务根据指定的时刻,执行..
2018-03-23
众所周知,比特币网络是采用的P2P网络体系,所以,没有明显的客户端与服务端的区别或者是概念,每一..
2018-03-22
Bitcoin Cash
任务调度器Bitcoin 进程启动后,有一个专门的线程做任务调度, 这些任务根据指定的时刻,执行对应的函数:12345678bool AppInitMain(){ ....... // Start the lightweight task scheduler thread CScheduler::Function serviceL..
众所周知,比特币网络是采用的P2P网络体系,所以,没有明显的客户端与服务端的区别或者是概念,每一个节点既是自身的客户端,又是其它节点的服务端。 在sync.h中,定义了 CSemaphore,它包装了系统底层的信号量机制,对wait(), try_wait(),post()实现了封装,代码如下: 1234567891011class CSemaphore..
如今,委内瑞拉的法币几乎一文不值,而且它的现金危机只会越来越糟糕。 在过去几个月里,我们看到这个国家陷入了越来越严重地一场全面的人道主义灾难中,“经济确实处于一个无解的螺旋式下降中”-Steve Hanke说,他是普金斯大学的应用经济学教授。 国家政策导致在过去一年多的时间里通货膨胀率上升了4115%,对应的玻利瓦尔(委内瑞拉货币)在2017年贬值了9..
2018-03-21
Bitcoin
多线程脚本检查启动多线程脚本检查启动代码:123456789101112131415bool AppInitMain(Config &config, boost::thread_group &threadGroup, CScheduler &scheduler) { ... if (nScriptCheckT..
2018-03-19
在梳理代码逻辑之前,首先介绍几个比较重要的结构: CMessageHeader消息头包含的内容: 123456789101112131415class CMessageHeader {public: enum { MESSAGE_START_SIZE = 4, //消息开始字符串,长度4字节,就是告诉..
2018-03-18
go-ethereum中go-event库的使用github.com/ethereum/go-ethereum/event包实现了一个事件发布订阅的库,使用接口主要是event.Feed 类型,以前还有event.TypeMux 类型,看代码注释,说过时了,目前主要使用Feed 类型。 1234567891011121314151617181920212..
2018-03-15
该脚本的格式 锁定脚本: < expiry time > OP_CHECKLOCKTIMEVERIFY OP_DROP OP_DUP OP_HASH160 < pubKeyHash > OP_EQUALVERIFY OP_CHECKSIG 解锁脚本: < sig > < pubKey > 允许一个交易的输出..
摘要增加一个新的消息类型–“feefilter”,用于告知 peer 不要向该节点发送低于指定费率的交易的“inv”。 动机为了防止未开采的低费用的攻击和一些垃圾邮件的交易,Bitcoin Core 0.12中引入了有限 mempool 的概念。同时引入了拒绝过滤器,以防止同一交易因为费用不足而被拒绝时重复请求的问题。 这些方法有助于保持节点上的资源利用..
2018-03-13
block headers 以 80 字节的格式进行序列化,然后作为比特币工作量验证算法的一部分进行哈希处理,使序列化头部格式成为共识规则的一部分。 bytes name 数据类型 描述 4 version int32_t block version 指示要遵循哪一组块验证规则 32 previous block header hash..
2018-03-12