主页 > imtoken官网钱包app > 比特币源码编译学习记录
比特币源码编译学习记录
1、从bitcon源码编译ubuntu16.04
带步骤截图的文档已经上传到我的资源里,我整理了一下。
1)准备阶段,无法显示图片
2)下载源码
3)编译
关于编译步骤,源码中有文档,build-unix.md、build-osx.md、build-windows.md都有详细的介绍
8.31是新的,如果最后成功了,就会有这些可执行文件
st_bitcoin-qt '/usr/local/bin'
libtool: install: /usr/bin/install -c bitcoind /usr/local/bin/bitcoind
libtool: install: /usr/bin/install -c bitcoin-cli /usr/local/bin/bitcoin-cli
libtool: install: /usr/bin/install -c bitcoin-tx /usr/local/bin/bitcoin-tx
libtool: install: /usr/bin/install -c test/test_bitcoin /usr/local/bin/test_bitcoin
libtool: install: /usr/bin/install -c bench/bench_bitcoin /usr/local/bin/bench_bitcoin
libtool: install: /usr/bin/install -c qt/bitcoin-qt /usr/local/bin/bitcoin-qt
libtool: install: /usr/bin/install -c qt/test/test_bitcoin-qt /usr/local/bin/test_bitcoin-qt
以上两步可以确认比特币安装成功
4) 在测试网上启动比特币核心
bitcoind -testnet //输入后无显示,电脑发热
再打开一个终端bitcoin-cli -testnet getinfo,可以看到正在加载区块,刷新命令,区块会增加
{ “version”:130200,“protocolversion”:70015,“blocks”:7456,“timeoffset”:-1,“connections”:8,“proxy”:“”,“difficulty”:16比特币截图生成,“testnet”:true ,“中继费”:0.00001000,“错误”:“”}
bitcoin-cli -testnet getblockchaininfo 报错
错误:找不到 RPC 凭据。 找不到身份验证 cookie,配置文件中没有设置 rpcpassword (/home/parallels/.bitcoin/bitcoin.conf)
需要设置密码来控制bitcoin core提供的应用程序编程接口,新建bitcoin.conf,配置信息如下
小型服务器的资源不足配置示例
配置后重启bitcoind -testnet-printtoconsole //测试网络,输出显示在控制台
alertnotify=myemailscript.sh "Alert: %s"
maxconnections=15
prune=5000
minrelaytxfee=0.0001
maxmempool=200
maxreceivebuffer=2500
maxsendbuffer=500
rpcuser=bitcoinrpc
rpcpassword=CHANGE_THIS
testnet=1
在bitcoin.conf中添加testnet=1,就不用每次都输入-testnet了
bitcoin-cli -testnetgetinfo//不要忘记测试网
bitcoin-cli -testnet getblockchaininfo //当前7.20记录时间header 1354564
下载的区块数据在~/.bitcoin/testnets目录下,以后要删除的话就在这里
du -a(s)h可以查看文件占用内存大小,du -ah testnets ~/.bitcoin下可以查看内存大小
要使用 getawtransaction 等命令访问交易,您必须配置 bitcoin core 以构建完整的交易索引。 这可以通过 txindex 来实现。 设置 txindex=1 与 prunes 的设置冲突。 (由于使用的是prunes配置,这里无法使用getblock,getblockhash,getrawtransaction等指令,这段错误)是由与没有加-testnet,可以使用getblockhash,bitcoin-cli -testnet getblockhash 1350000,bitcoin-cli -testnet getblock0000000000000028198c4d52ecb33b594533a1a054e571ee30766a7997f5aa24 , getrawtransaction 和 decoderrawtransaction 都可以工作。
附:尝试在centos上编译源码,不顺利,一直没有编译完成
2.“掌握比特币”
第一章简介
区块链、分布式账本
第二章 比特币原理
比特币共发行21,000,000枚,可交易从千分之一(一毫比特币)到亿分之一(一聪比特币)
许多比特币都会包含新所有者的地址(买家地址)和当前所有者的地址(更改地址)
第 3 章 比特币核心
源码编译运行介绍
第 4 章密钥和地址
使用bx做一些例子,bx的安装放在第四部分
每个密钥对包括一个私钥和一个公钥。 私钥 (k) 是一个数字,通常是随机选择的。 有了私钥,我们就可以利用椭圆曲线乘法的单向加密函数生成一个公钥(K)。 使用公钥 (K),我们可以使用单向加密哈希函数生成比特币地址 (A)。 这种非对称密码学的适用性使得任何人都可以验证每笔交易的每一个签名,同时确保只有私钥的所有者才能产生有效的签名。
私钥,256位二进制数,64位十六进制数
第五章 钱包
钱包只包含钥匙,从某种意义上说,比特币钱包是一串钥匙。
非确定性(随机)钱包、确定性(种子)钱包
第六章交易
交易脚本和脚本语言
图灵不完备
锁定脚本、脚本公钥(scriptpubkey)、解锁脚本(scriptsig)
第 7 章高级事务和脚本
7.2 多重签名
7.3 p2sh
7.5时间锁7.5.4-7.5.6跳过了,太无聊了
第 8 章 比特币网络
完整的区块链节点通过检查其下方数千个区块的整个链来验证交易,以确保未支付此 UTXO。另一方面,SPV 节点通过检查其上方的区块将其推到下方的深度来验证交易
第9章区块链
9.9 比特币的测试区块链
testnet--比特币的试验场:是测试用的区块链,目前testnet3,2011年2月重启,2017年突破20gb
segnet -- 隔离见证测试网:向 testnets3 添加了 segwit
regtest -- 本地区块链:为本地测试运行的封闭系统
第 10 章 挖矿与共识
10.5
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
// 当右移未定义时强制块奖励为零。
如果(减半 >= 64)
返回 0;
CAmount nSubsidy = 50 * COIN;
// 补贴每 210,000 个区块减半,大约每 4 年发生一次。
n补贴>>=减半;
返还补贴;
}
1722行比特币截图生成,计算区块奖励函数
难度目标和目标调整pow.cpp
第 11 章比特币安全
第十二章比特币的应用
附录 1. 比特币白皮书
3.《区块链技术指南》
第二章区块链基础
哈希函数,最常用的是双SHA哈希函数
Merkle树是数据结构中的一种树
双花问题也称为“双花”问题
交易加密的非对称加密算法(椭圆曲线加密算法)ECC,一对数字相关的密钥,可以通过算法从私钥计算出公钥,不能从公钥推导出私钥。
共识机制:pow(工作量证明)、pos(权益证明)、dpos(共享授权证明)、分布式共识算法
第三章区块链架构分析
区块链管理的代码逻辑在main.cpp程序中实现。
比特币使用 berkeley db 作为钱包数据库。
3.3 区块链2.0架构:以太坊区块链
比特币没有账户的概念,以太坊有两种账户:外部所有账户(eoa)、合约账户(contract)
第 4 章区块链中的密码学技术
4.1 hash算法的特性:防碰撞、不可逆原像、problem-friendly
4.2 Merkle数:merkle哈希树
4.3 比特币公钥密码算法采用secp256k1椭圆曲线
第五章共识算法详解
5.1 拜占庭容错算法强共识共识算法
故障节点称为拜占庭节点,正常节点为非拜占庭节点。
5.2 pow机制是最终共识的共识算法,不适用于私有链和联盟链。 工作证明工作证明
5.3 Pos 权益证明机制
5.4 dpos机制share authorization proof mechanism delegate proof of stake
第七章 智能合约
7.4 实例未测试
第 8 章超级账本项目
Hyperledger是目前最大的区块链开源项目,其目标是为商业应用建立一个基础的分布式账本技术。
4. bitcoin explore 7.16的笔记都没有保存
参考
1.docker安装
参考官网,我修改了镜像地址,两个镜像地址都改成了国内的阿里镜像
sudo docker run hello-world 作为测试
sudo docker image ls
sudo docker container ls -all /aq
2.根据引用的博文
sudo docker run -it fengyajie/bx-docker-alpine:1.0 (-it以交互方式运行容器,并为容器重新分配一个伪输入终端)
5.《区块链开发指南》
第一章区块链基础
短区块链(或有效区块链)中的区块无效。 当比特币客户端移动到另一个长区块链时,短区块链中的所有有效交易将被重新添加到交易队列池中,并被包含在另一个区块中。 短链中的区块奖励不会出现在长链中。
第二章区块链进阶
2.2 交易对手
2.4 侧链
Chapter 3 Fundamentals of Cryptography(看过图形密码技术,这部分略过,这本书有点难懂)
3.1 哈希函数
哈希值(hash value)或消息摘要(message digest); 典型的散列函数有两类:消息摘要算法(MD5)和安全散列算法(SHA)
第四章比特币区块链发展