自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

呼,是出一口气;吸,是争一口气!

生活不止眼前的苟且,还有读不懂的诗和到不了的远方。

原创 比特币源码解析(26) - 可执行程序 - Bitcoind

0x01 Step 11: Import Blocks 从这一步的名字也可以看出这一步主要的内容就是导入区块,也就是从外部文件中导入区块信息,并加载到内存,更新区块索引等信息,具体代码如下。 // **************************************************...

2019-04-03 17:35:49 342 0

原创 比特币源码解析(25) - 可执行程序 - Bitcoind

0x01 Step 8:Start indexer 分析完了第七步,下面我们继续来看第八步的内容。 // ********************************************************* Step 8: start indexers if (gArgs.G...

2019-04-03 17:31:52 222 0

原创 比特币源码解析(24) - 可执行程序 - Bitcoind

0x00 失踪人口回归 每隔一段时间都是说要写完,结果都是写了一篇就搁下了。。啪啪啪!打脸,嗯,加油写! 0x01 AppInitMain Step 7: load block chain 续(2) CCoinsViewCache 在上一章中,我们分析到了init.cpp line 1515这里,...

2019-04-03 17:15:12 288 0

原创 比特币源码解析(23) - 可执行程序 - Bitcoind

目录 目录 0x00 回来啦~ 0x01 AppInitMain Step 7: load block chain 续(1) LoadGenesisBlock CCoinsViewDB ReplayBlocks 0x00 回来啦~ 翻起上一篇比特币的分析还是2017年11...

2018-06-27 15:27:14 1499 4

原创 【CryptoKitties源码解析】养猫的正确姿势!

今天想介绍一个最近比较火的一个“区块链”应用CryptoKitties,这个应用本质上实现的功能就是电子猫的繁殖与交易两个功能,功能上虽然比较简单但是再加上区块链这个强大的底层技术作为支撑,让它在整个行业掀起了一波热潮,甚至还导致了以太坊主网的堵塞,使得以太坊中未确认的交易数量从平常的2.5k增涨...

2017-12-10 23:13:19 8301 11

原创 【区块链开发指南】区块链进阶

存储额外数据在区块链上存储额外数据是指那些存在区块链上但是对交易没有任何影响的数据,目前存储额外数据主要有两种方法:OP_RETURN和Multi-Signatures。OP_RETURN2013年,比特币协议中引进了一项新的功能,即:创建一种名为OP_RETURN的交易,可以嵌入40字节小段数据...

2017-12-10 23:05:11 3006 0

原创 【区块链开发指南】区块链基础之挖矿和矿池

什么是挖矿?讨论到比特币时,经常会提到的一个名词就是“挖矿”,那么挖矿到底是什么呢?它的详细过程又是怎么的呢?对于我个人而言,以前我知道所谓挖矿大概就是要找一个随机数,使得区块的哈希值小于某个数,但具体是怎样的呢?不知道。。。当然,还不仅如此,很多其他的概念像区块的结构、交易的结构、脚本的类型、P...

2017-11-28 14:19:22 6543 0

原创 【区块链开发指南】区块链基础之区块和交易

在区块链网络当中,所有的数据都以区块的形式记录在各个节点上。而每个区块又以单独的文件保存在节点本地磁盘上,在比特币(Linux系统)中所有的区块信息都保存在~/.bitcoin/blocks/目录下面,并以blk***.dat文件名标示。

2017-11-28 14:17:24 5647 0

原创 【区块链开发指南】区块链基础之比特币地址

比特币地址是一个由数字和字母组成的字符串,并且由公钥经过Hash函数生成。通常我们见到的比特币地址是经过Base58Check编码的,这种编码使用了58个字符和校验码,提高了可读性、避免了歧义,并能有效防止地址输入时产生的错误。

2017-11-28 14:14:01 3230 0

原创 【区块链开发指南】序言

申明:本系列文章皆是关于《区块链开发指南》一书的摘选与总结,希望能够普及区块链技术,推动区块链行业的健康发展。

2017-11-25 13:47:55 4359 0

原创 比特币源码解析(22) - 可执行程序 - Bitcoind

0x01 AppInitMain Step 7: load block chain计算缓存大小 fReindex = gArgs.GetBoolArg("-reindex", false); bool fReindexChainState = gArgs.GetB...

2017-11-16 22:03:15 5094 8

原创 比特币源码解析(21) - 可执行程序 - Bitcoind

0x00 摘要经过前面20章的分析,我们已经渐渐接近比特币的核心功能部分了,也就是它的共识、交易处理等等。虽然前面基本上都是做的一些初始化的工作,但是这些工作对于比特币的整体运行来说都是必不可缺的,并且就像在之前讲过的信号处理、并发处理等等都是值得学习的部分,本章主要介绍AppInitMain中的...

2017-11-12 22:49:37 6465 3

原创 比特币源码解析(20) - 可执行程序 - Bitcoind

0x01 AppInitMain Step 5: verify wallet database integrity#ifdef ENABLE_WALLET if (!WalletVerify()) return false; #endif Step 5主要是验证钱包数据库的...

2017-11-10 19:43:28 2544 0

原创 比特币源码解析(19) - 可执行程序 - Bitcoind

0x01 StartRPCbool StartRPC() { LogPrint(BCLog::RPC, "Starting RPC\n"); fRPCRunning = true; g_rpcSignals.Started(); return t...

2017-11-09 15:06:41 2336 0

原创 比特币源码解析(18) - 可执行程序 - Bitcoind

0x01 InitHTTPServer初始化访问控制列表(ACL) if (!InitHTTPAllowList()) return false; if (gArgs.GetBoolArg("-rpcssl", false)) { u...

2017-11-07 10:55:13 3560 0

原创 比特币源码解析(17) - 可执行程序 - Bitcoind

0x01 Step 4a - ContinueCScheduler 实现 // Start the lightweight task scheduler thread CScheduler::Function serviceLoop = boost::bind(&CSched...

2017-09-25 17:05:03 3765 2

原创 比特币源码解析(16) - 可执行程序 - Bitcoind

0x01 AppInitSanityChecks - Step 4 sanity checksbool AppInitSanityChecks() { // ********************************************************* Step 4: ...

2017-09-22 12:46:49 3247 0

原创 c++并发编程 - Boost Thread

0x00 摘要在分析比特币源码时,最开始就简单学习了一些boost thread的简单用法和最基本的互斥锁,但看到后面发现还用到了更深层次的并发编程知识,于是又回来完整的学习一下,这里做个学习的总结。本文的内容主要包括线程组(Thread group)以及各种互斥锁(lock_guard, uni...

2017-09-21 22:03:13 3147 1

原创 比特币源码解析(15) - 可执行程序 - Bitcoind

0x01 Step 3: parameter-to-internal-flags - continue由于Step 3中的内容太多,所以上一章未能完成,这一章继续分析Step 3中剩下的内容。

2017-09-20 10:18:54 4648 0

原创 比特币源码解析(14) - 可执行程序 - Bitcoind

0x00 AppInitParameterInteraction这个函数包括源码中的Step 2和Step 3两个,主要实现的功能是设置区块链运行时的一些参数。0x01 Step 2 - parameter interactions // if using block pruning, th...

2017-09-14 17:11:05 5839 2

原创 比特币源码解析(13) - 可执行程序 - Bitcoind

0x01 AppInitBasicSetup本章我们继续分析AppInit()中的下一个函数AppInitBasicSetup(),从这个函数开始,源码将变量初始化的过程分了很多个Step,我们也按照这样的顺序来依次分析。Step 1: Setup#ifdef _MSC_VER // 如果是VS...

2017-09-13 09:45:36 4802 5

原创 比特币源码解析(12) - 可执行程序 - Bitcoind

0x01 InitParameterInteraction下面我们来看上一章第二个函数的实现代码,这个函数中包括一系列的if语句,我们一个个来看。 // when specifying an explicit binding address, you want to listen on it...

2017-09-11 22:06:58 4406 2

原创 比特币源码解析(11) - 可执行程序 - Bitcoind

0x01 AppInit - Continue对于AppInit中剩下的一部分代码,我们首先浏览一下主要实现的功能,然后再具体介绍每个函数的实现方法。// src/bitcoind.cpp line 127-185 // -server defaults to true for bitcoind ...

2017-09-08 19:46:10 5485 0

原创 比特币源码分析(10) - 可执行程序 - Bitcoind

0x01 AppInit接下来分析main函数中的最后一个函数AppInit,首先看前面一部分代码, // src/bitcoind.cpp line 65-95 boost::thread_group threadGroup; CScheduler scheduler;bool fRet =...

2017-09-08 15:48:56 9245 0

原创 比特币源码解析(9) - 可执行程序 - Bitcoind

我使用的是Ubuntu 16.04 系统所以直接按照https://github.com/bitcoin/bitcoin/blob/master/doc/build-unix.md 编译就可以成功,编译完成之后,生成了一下几个可执行文件

2017-09-03 16:54:51 15833 5

原创 比特币源码解析(7) - 数据结构 - 区块

区块是区块链的组成基本结构,也是交易信息的载体,矿工通过挖矿的形式来产生新的区块并获得奖励,新块产生的过程也是一个交易打包的过程,只有加入到区块中的交易才会被系统所有其他节点所认可,才是有效的。

2017-09-01 19:47:41 9059 1

原创 比特币源码解析(6) - 数据结构 - 交易池

我们知道当交易被广播并且被矿工接收到时,矿工就会把交易加入到本地的交易池当中,每个矿工又会对自己的交易池设置相应的限制,来保证交易数量不会过多,矿工在打包交易到区块中时,也会根据一定的优先顺序来选择交易,从而让自己能获得尽量多的交易费。

2017-09-01 19:45:39 11284 0

原创 比特币源码解析(5) - 数据结构 - 交易

交易(transaction)是比特币甚至所有区块链中最核心的数据结构之一,可以说其他所有的模块都是为交易服务的,包括交易的产生、广播、共识、存储等等,所以我们首先从交易出发,然后逐步延伸到其他的部分。

2017-09-01 12:01:44 14793 7

原创 比特币源码解析(4) - 准备知识 - libevent & QT

原本想先把这些准备知识(BOOST, libevent, QT)都仔细搞懂之后再去研究比特币的代码的,开始学习了之后才发现还是太天真了,每一项技术背后都不是那么简单的,想完全搞清楚也并非短时间能够搞定,尤其是看到网上一篇QT的教程,作者到16年3月11日截止已经连续写了快4年!所以现在打算转换策略...

2017-08-31 22:04:55 9342 0

原创 比特币源码解析(3) - 准备知识 - Boost

Boost中Test模块是用来给代码做单元测试的,测试的方法是白盒测试,所以编写测试必须对待测试的模块有深度的理解,然后再对正常功能和可能会出现的问题进行测试,测试的实际过程就是给定输入判定是否和预期的输出相同,所以Test本质上也是个验证等式的工具外加了一层包装。

2017-08-29 22:16:54 9941 1

原创 比特币源码解析(2) - 准备知识 - Boost

0x00 简介Boost是一个开源、跨平台、功能强大的c++库,并且是除了stl外最常用的库,实现了很多基本操作,能让开发变得更加简单、快捷。下面我们就介绍bitcoin源码中主要用到的一些类,官方文档见:http://www.boost.org/doc/libs/1_65_0/ ,其中的每一个类...

2017-08-29 11:28:52 19362 6

原创 比特币源码解析(1) - 整体框架

比特币源码解析(1) - 整体框架0x00 写在前面研究了这么久的区块链却一直都没有完整的看过一个区块链项目的代码,甚至还一度沉迷各种ICO,每天看着各种货币层出不穷,跌跌涨涨,起起伏伏,不亦乐乎。现在看来,也许整体来讲赚了点小钱,可是那又有什么意义呢?终究不是长久之计。这两天终于静下来大概浏览了...

2017-08-27 21:26:14 39184 18

原创 Codeforces 606E Freelancer's Dreams - 线性规划

题目链接: http://codeforces.com/contest/606/problem/E 题目意思就是有个二货想成为一个程序员高手还想买套房,成为高手需要经验p,买套房需要金钱q,然而他现在啥都没有(经验金钱都为0),但是他有n个项目,对于每个项目每天可以得经验ai,金钱bi,...

2015-12-11 20:40:07 1262 0

原创 bzoj 1588 [HNOI2002]营业额统计

题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1588 Splay模板题。。 #include #include using namespace std; #define Key_value (ch[root][ch[r...

2015-12-08 19:53:22 314 0

原创 poj 3468 A Simple Problem with Integers - Splay

题目链接: http://poj.org/problem?id=3468 题意:区间更新,求区间和。 本来是线段树区间更新的入门题,一直听说Splay这个神奇的数据结构没去学,于是就学了一下,第一道。。 推荐学习: http://notonlysuccess.me/?p=709 ...

2015-12-08 19:49:20 303 0

原创 bzoj4034[HAOI2015]T2 - 树链剖分

题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4034 题目意思: 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个...

2015-11-30 19:20:23 342 0

原创 bzoj1036: [ZJOI2008]树的统计Count - 树链剖分

题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=1036 题意:  给一棵树, 点上有权值, 带单点更新, 询问两点间权值最大值以及路径上所有点权值和。 树链剖分入门题。 #include using names...

2015-11-30 11:51:46 373 0

原创 SPOJ Query on a tree - 树链剖分

题目链接:http://www.spoj.com/problems/QTREE/ 题意:给一棵树,单点更新, 询问树上两点间路径上边权最大值。 树链剖分模板题, 学习资料:  http://wenku.baidu.com/link?url=SGLjpJtYbJ0HxDYlU_GMX...

2015-11-30 10:01:15 328 0

原创 千里之行, 始于足下

wu.

2015-11-29 16:58:53 537 0

转载 圆的反演

原文链接: http://blog.csdn.net/acdreamers/article/details/16966369 反演的定义: 已知一圆C,圆心为O,半径为r,如果P与P’在过圆心O的直线上,且,则称P与P'关于O互为反演。 反演的性...

2015-11-12 16:09:07 2184 0

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