比特币源码解析-可执行程序-Bitcoind
00 摘要bitcoin源码编译成功,将生成可执行文件:
bench_bitcoin: 作用是编译系统更新,主要检查系统使用的一些加密算法是否有新的更新。
bitcoin-cli: Bitcoind的一个功能完备的RPC客户端
bitcoind: 比特币核心执行程序,俗称bitcoin-core。
bitcoin-qt: 比特币钱包
bitcoin-tx: 比特币交易处理模块,支持交易的查询和创建。
test_bitcoin: 运行各个模块的测试代码。
test_bitcoin-qt: 运行钱包模块的测试代码。
01 Main首先寻找bitcoind的main函数。直接找到src/bitcoind.cpp;
12345678int main(int argc, char* argv[]){ SetupEnvironment();//环境配置 // Connect bitcoind signal handlers 连接bitcoind信号处理机制 noui_connect() ...
比特币源码解析-可执行程序-Bitcoind
01 AppInitAppInit()是main函数中的最后一个函数:
精通比特币-000-学习目标
精通比特币(第二版)概念 & 原理
第一章 介绍
第二章 比特币的原理
目标:
比特币系统的结构及不同节点在系统中的作用
区块链技术在比特币中的应用场景 - 交易流程(UTXO交易模式)、区块的意义
通过比特币客户端的UI进行转账交易(测试网络)
私钥、地址创建流程精通比特币 - 第四章 私钥 地址 钱包
目标:
钱包的概念
私钥、公钥、公钥哈希、地址的类型及概念(压缩、非压缩、对应字节的意义)
通过随机数构建私钥
通过私钥构建公钥、公钥哈希(合法性、ECDSA-secp256k1、Hash160)
通过公钥构建地址 (合法性、Base58Check)
构建P2SH地址
了解:分层确定性钱包(HD钱包)
SEED 助记词转换
SEED - 主私钥 - 主公钥 - 链编码 - 索引 - 子私钥关系及构建推导流程
钱包对接第三章 比特币客户端(BitcoinQT)第五章 交易第六章 比特币网络第七章 区块链
《区块链技术指南》 - 6.1.5 安装和运行比特币测试网络 (代码实战演练)
目标:
搭建比特币客户端及JsonRPC的应用(测试网络)
比特币系统支持的交易类 ...
精通比特币-05-交易
第五章 交易5.1 简介比特币交易是比特币系统中重要的部分。
在这一章,我们将会剖析比特币交易的多种形式、所包含的信息、如何被创建、如何被验证以及如何成为所有比特币交易永久记录的一部分。
5.2 比特币交易的生命周期一笔比特币交易的生命周期起始于它被创建的那一刻,也就是诞生(origination)。
5.2.1 创建比特币交易一旦一笔比特币交易被创建,他会被资金所有者(们)签名。如何它是合法创建并签名的,则该笔交易现在就是有效的,它包含了转移这笔资金所需要的所有信息。
最终,有效比特币交易必须能介入比特币网络,从而使之能被传送,直至抵达下一个等级在公共总账簿(区块链)的挖矿节点。
5.2.2 广播交易至比特币网络比特币因此可以通过未加密网络被发送到比特币网络。比特币将金钱变成了一种数据结构,所以在本质上是不可能阻止任何人创建并执行比特币交易的。
5.2.3 比特币交易在比特币网络中的传播一旦一笔比特币交易被发送到任意一个连接指比特币网络的节点,这笔交易将会被该节点验证。如果交易被验证有效,该节点将会被这笔交易传播到这个节点所连接的其他节点;同时,交易发起者会受到一条表示交易有效并被接 ...
精通比特币-06-比特币网络
第6章 比特币网络6.1 P2P网络架构比特币采用了基于国际互联网的P2P网络架构。P2P是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊“节点。
6.2 节点类型及分工尽管比特币P2P网络中的各个节点相互对等,但是根据所提供的功能不同,各节点可能具有不同的分工。每个比特币节点都是路由、全块链数据库、挖矿、钱包服务的功能集合。一个全节点包括如图6-1所示的四个功能:
图6-1 一个包含四个完整功能的比特币网络节点:钱包、矿工、完整区块链、网络路由节点
6.5 全节点全节点是指维持包含全部交易信息的完整区块链的节点。更准确地说,这样的节点应当被称为完整区块链节点。
6.6 交换库存清单一个全节点连接到对等节点之后,第一件事要做的事情就是构建完整的区块链。如果该节点是一个全新节点,那么它就不包含任何区块链的信息,他只知道一个区块————静态植入在客户端软件中的创世区块。新节点需要下载从0号区块(创世区块)开始的数十万区块的全部内容,才能跟网络同步、并重建全区块链。
精通比特币-07-区块链
第7张 区块链7.1 简介区块链是由包含交易信息的区块从后向前有序链接祁连的数据结构。他可以被存储为flatfile,或是存储在一个简单数据库中。
比特币核心客户端使用Google的LevelDB数据库存储区块链元数据。
对每个区块头进行SHA256加密哈希,可生成一个哈希值。
7.2 区块结构区块是一种被包含在公开账簿(区块链)里的聚合了交易信息的容器数据结构。
7.3 区块头区块头由三组区块元素组成。首先是一组引用父区块哈希值的数据,这组元数据用于将该区块与区块链中前一区块相连接。第二组元数据,即难度、时间戳和nonce,与挖矿竞争相关。第三组数据是merkle树根(一种用来有效地总结区块中所有交易的数据结构)
7.4 区块标识符:区块头哈希值和区块高度
精通比特币-10-比特币安全
第十章 比特币安全
你不能“备份”你的现金、黄金或者银行账户,但你可以像备份其他文件一样,备份含有密钥的比特币钱包。
10.1 安全准则比特币的核心准则是去中心化,这一点对安全性具有重要意义。
一笔比特币交易只授权向指定接收方发送一个指定数额,并且不能被修改或伪造。
比特币的去中心化安全模型很大程度上将权力移交到用户手上,随之而来的是用户们保管好密钥的责任。
10.1.1 比特币系统安全开发对于比特币开发者而言最重要的是去中心化原则。
比特币的安全性依赖于密钥的分散性控制,并且需要矿工们各自独立地进行交易验证。
另一个常见的错误是接受区块链离线交易,妄图减少交易费或加速交易处理速度。
10.1.2 信任根源传统的安全体系基于一个称为信任根源的概念,它指的总体系统或应用程序中一个可信赖的安全核心。
在比特币里,共识系统创建了一个可信的完全去中心化的公开账本,一个正确验证过的区块使用创世块作为信任的根源,建立一条直至当前区块的可信任链。
比特币系统可以并应该使用区块链作为它们的信任根源。
一个没有漏洞的比特币应用程序应该只受限于比特币的共识机制,这意味 ...