精通比特币-012
1. MacOsX 下编译源代码1. 下载源代码
git clone https://github.com/bitcoin/bitcoin.git
2. 如果没有安装Xcode和Brew,需要安装
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
3. 安装依赖库
brew install automake berkeley-db4 libtool boost --c++11 miniupnpc openssl pkg-config protobuf qt libevent python3
4. 终端命令行执行
git clone https://github.com/bitcoin/bitcoin
cd bitcoin
./autogen.sh
./configure
make
make check
make ins ...
Ubuntu下搭建比特币运行环境
Ubuntu下搭建比特币核心运行环境参考原创文章: 比特币源码linux下环境配置编译运行bitcoin
1. 安装依赖包使用命令apt-get install进行安装必须安装的依赖包有:
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install libdb-dev
sudo apt-get install libdb++-dev
sudo apt-get install libdb5.1++-dev
sudo apt-get install libboost-dev
sudo apt-get install libboost-all-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libssl-dev
sudo apt-get install build-essential
sudo apt-get install libminiupnpc-dev
sudo a ...
精通比特币-012
1. 冷钱包/热钱包比特币钱包按照私钥的存储方式,可以分为冷钱包、热钱包两种。
冷钱包是指网络不能拿访问到你私钥的钱包。
冷钱包往往依靠“冷”设备确保比特币私钥的安全,比如不联网的电脑、手机、写着私钥地址的小本本等。
冷钱包避免了被黑客盗取私钥的风险,但是可能棉铃物理安全的风险,比如电脑丢失顺怀等。
热钱包是指互联网能够访问你私钥的钱包,热钱包往往是在线钱包的形式。
使用热钱包时,最后在不同平台设置不同密码,且开启二次认证,以确保自己的资产安全。
无论是使用冷钱包还是热钱包,只要其他人知道你的比特币私钥,就能转走的你的比特币。
谁掌握私钥,谁才是比特币真正的主人。
2. 比特币交易本质 – UTXO(Unspent Transaction Output)UTXO 代表 Unspent Transaction Output。(Transaction 简称为 TX)
现在的银行、信用卡、证券交易系统以及互联网第三方支付系统,其核心都是基于账户(accout based)的设计,由关系数据库支撑。
数据库要确保两点:
1. 第一是你要确保业务规则得到遵守,张三的余额充足。
2. 第二 ...
精通比特币-000-学习目标
精通比特币(第二版)概念 & 原理
第一章 介绍
第二章 比特币的原理
目标:
比特币系统的结构及不同节点在系统中的作用
区块链技术在比特币中的应用场景 - 交易流程(UTXO交易模式)、区块的意义
通过比特币客户端的UI进行转账交易(测试网络)
私钥、地址创建流程
第四章 私钥 地址
私钥-公钥-比特币地址 的概念和转换过程
私钥格式和转换
钱包的种类,助记词,种子的概念
第五章 钱包
了解:分层确定性钱包(HD钱包)
SEED 助记词转换
SEED
主私钥 - 主公钥 - 链编码 - 索引 - 子私钥关系及构建推导流程
目标:
钱包的概念
私钥、公钥、公钥哈希、地址的类型及概念(压缩、非压缩、对应字节的意义)
通过随机数构建私钥
通过私钥构建公钥、公钥哈希(合法性、ECDSA-secp256k1、Hash160)
通过公钥构建地址 (合法性、Base58Check)
构建P2SH地址
钱包对接第三章 比特币客户端(BitcoinQT)第五章 交易第六章 比特币网络第七章 区块链
《区块链技术指南》 - 6.1.5 安装和运行比特币测试网络 (代码实 ...
比特币源码解析-数据结构-交易池
简介当交易被广播并且被矿工接收到时,矿工就把交易加入到本地的交易池中,每个矿工又会对自己的交易池设置相应的限制,来保证交易数量不会过多,矿工在打包交易到区块中时,也会根据一定优先顺序来选择交易,从而获得尽量的交易费。
对于交易池主要介绍两个结构CTxMemPoolEntry和CTxMemPool,第一个是交易池中每一个元素的基本结构,第二个是整个交易池包含的所有信息。
文件名//txmempool.h
12class CTxMemPoolEntryclass CTxMemPool
CTxMemPoolEntry123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687/** * CTxMemPoolEntry stores data about the corresponding transaction, ...
精通比特币-01-介绍
1.1 什么是比特币?比特币是由一系列概念和技术作为基础构建的数字货币生态系统。
狭义的“比特币”代表系统中的货币单位,用于储存和传输价值。
不同于传统货币,比特币是完全虚拟的。它不但没有实体,本质上也没有一种虚拟物品代表比特币。
比特币隐含在收发币的转账记录中。
用户只要有证明其控制权的密钥,用密钥解锁,就可以发送比特币。这些密钥通常存储在计算机的数字钱包里。
拥有密钥是使用比特币的唯一条件,这让控制权完全掌握在每个人手中。
比特币是一个分布式的点对点网络系统。
比特币系统包含调节挖矿难度的协议。
比特币是一种协议、一种网络、一种分布式计算创新的代名词。
在本章中,我们从一些主要概念和术语入手,告诉你如何获取软件并使用比特币进行简单的交易。接下来的章节,我们会逐步讲解比特币背后的技术细节,分析比特币网络和比特币协议的内部运行机制。
比特币由这些构成:▷ 一个去中心化的点对点网络(比特币协议)▷ 一个公共的交易账簿(区块链)▷ 一个去中心化的数学的和确定性的货币发行(分布式挖矿)▷ 一个去中心化的交易验证系统(交易脚本)
1.2 比特币发展史
关键的创新是 ...
精通比特币-02-比特币原理
2.1 交易、区块、挖矿和区块链
在本章中,我们将通过较高层面跟踪比特币系统单笔交易,
观察交易如何通过比特币分布式共识机制变得可信,被接受,并且最终记录在区块链,也就是所有交易的分布式账簿。
2.1.1 比特币概述如图2-1所示的概览图中,我们可以看到
比特币系统由用户(用户通过密钥控制钱包)、交易(每一笔交易都会被广播到整个比特币网络)和矿工(通过竞争计算生成在每个节点达成共识的区块链,区块链是一个分布式的公共权威账簿, 包含了比特币网络发生的所有的交易)组成。
本章中的每个示例都基于在比特币网络上进行的实际交易,通过将资金从一个钱包发送到另一个钱包来模拟用户(Joe,Alice,Bob和Gopesh)之间的交互。
在通过比特币网络跟踪交易到区块链时,我们将使用一个区块链接浏览器站点来显示每个步骤。区块链浏览器(blockchain explorer)是一个作为比特币搜索引擎运行的Web应用程序,它允许您搜索地址,交易和块,并查看它们之间的关系和资金流动。
图2-1比特币网络概览
常见的区块链数据查询网站包括:
▷Bitcoin Block Explorer
▷Bloc ...
精通比特币-03-比特币客户端
第三章 比特币客户端比特币核心Bitcoin是一个开源项目,源代码可以根据开放(MIT)许可证提供,可免费下载并用于任何目的。
比特币核心是比特币系统的参考实现,这意味着它是如何实施的权威参考。
Bitcoin Core实现了比特币的所有方面,包括钱包,交易和区块验证引擎,以及P2P网络中的完整网络节点。
警示: _即使Bitcoin Core包含钱包的参考实现,但这并不意味着可以用作用户或应用程序的生产钱包。
建议应用程序开发人员使用现代标准(如BIP-39和BIP-32)构建钱包(请参阅助记词]和[hd钱包]章节)。 BIP就是比特币改进提案(Bitcoin Improvement Proposal)_。
下图为比特币核心的架构。
图3-1比特币核心架构(来源Eric Lombrozo)
3.1 比特币开发环境3.2 从源码编译比特币核心Bitcoin Core的源代码可以作为ZIP存档下载,也可以从GitHub克隆权威的源代码库。
精通比特币-04b-钱包
钱包
“钱包”是指用于存储和管理用户密钥的数据结构。
5.1 钱包技术概述
一个常见误解是,比特币钱包里含有比特币。 事实上,钱包里只含有钥匙。 “钱币”被记录在比特币网络的区块链中。 用户通过钱包中的密钥签名交易,从而来控制网络上的钱币。 在某种意义上,比特币钱包是密钥链。
提示比特币钱包只含有密钥,而不是钱币。 每个用户有一个包含多个密钥的钱包。 钱包只包含私钥/公钥对的密钥链(请参阅[私钥章节])。 用户用密钥签名交易,从而证明他们拥有交易输出(他们的钱币)。 钱币以交易输出的形式存储在区块链中(通常记为vout或txout)。
有两种主要类型的钱包,区别在于它们包含的多个密钥是否相互关联。
第一种类型是非确定性钱包(nondeterministic wallet),其中每个密钥都是从随机数独立生成的。密钥彼此无关。这种钱包也被称为“Just a Bunch Of Keys(一堆密钥)”,简称JBOK钱包。
第二种类型是确定性钱包(deterministic wallet),其中所有的密钥都是从一个主密钥派生出来,这个主密钥即为种子(seed)。该类型钱包中所有密钥都相互 ...
精通比特币-04-密钥、地址、钱包
第四章 密钥、地址、钱包
在本章中,我们将介绍一些在比特币中用来控制资金的所有权的密码学,包括密钥,地址和钱包
4.1 简介比特币的所有权是通过数字密钥、比特币地址和数字签名来确立的。
数字密钥实际上并不存储在网络中,而是由用户生成之后,存储在一个叫做钱包的文件或简单的数据库中。
大多数比特币交易都需要一个有效的签名才会被存储在区块链。只有有效的密钥才能产生有效的数字签名,因此拥有~密钥副本就拥有了对该帐户的比特币的控制权。用于支出资金的数字签名也称为见证(witness),密码术中使用的术语。
密钥是成对出现的,由一个私钥和一个公钥所组成。
在比特币交易的支付环节,收件人的公钥是通过其数字指纹代表的,称为比特币地址,就像支票上的支付对象的名字 (即“收款方”)。一般情况下,比特币地址由一个公钥生成并对应于这个公钥。
首先,我们将介绍密码学并解释在比特币中使用的数学知识。然后我们将了解密钥如何被产生、存储和管理。我们将回顾用于代表私钥和公 钥、地址和脚本地址的各种编码格式。最后,我们将讲解密钥和地址的高级用途:比特币靓号,多重签名以及脚本地址和纸钱包。
4.1.1 公 ...