区块链基础技术入门之比特币核心(Bitcoin Core)

  • A+
所属分类:区块链技术
这篇文章是我在公司内部分享的文字整理!
主要介绍了如何编译构建比特币核心bitcoin core)、通过bitcoin-cli访问比特币区块链以及区块链比较靠谱的使用场景。

1.简介

1.开源项目,mit许可证
2.p2p电子现金系统论文的第一个实现,实现了比特币的所有方面,实现了包括钱包,交易和区块验证引擎,以及P2P网络中的完整网络节点。

2.架构

区块链基础技术入门之比特币核心(Bitcoin Core)
db用的leveldb,之前用的是Berkeley DB ,2013年bip切换的【bip(bitcoin improvement proposal):比特币改进提案】

3.搭建开发环境

Mac:10.13.6 (17G2112)
源码下载:github.com/bitcoin/bitcoin,选择版本0.16.3(当前最新版本)
.
编译构建,参考bitcoin/doc/build-*
which bitcoind
bitcoind默认的安装位置@Ubuntu是/usr/local/bin。编译完成后在/usr/local/bin目录下会生成7个可执行文件
.
源文件结构说明
/doc 说明文档
/src 源码
/test 功能测试python

 

飞哥注:为了少走弯路编译构建务必直接参考bitcoin/doc/build-*,请不要参考网上的二手信息!

4.基础技术入门(bitcoin-cli)

a.节点配置

/.bitcoin/bitcoin.conf
默认情况下,bitcoin core构建一个仅包含与用户钱包有关的交易的数据库。
.
几个关键参数:
alertnotify 运行指定的命令或脚本,通常通过电子邮件将紧急警报发送给该节点的所有者。
datadir 选择要放入所有块链数据的目录和文件系统。
prune 通过删除旧的块,将磁盘空间要求降低到这个兆字节。
txindex 维护所有交易的索引
rpcuser=bitcoinrpc rpcpassword=hf_test
.
查看参数可通过命令:bitcoind help
.

b.启动节点

控制台启动:bitcoind –printtoconsole
后台启动:bitcoind -daemon
.
测试网络 bitcoind -testnet
本地区块链 bitcoind -regtest
.
开发钱包等应用的话,首先在regtest开发,然后在testnet上进行测试,最后实现生产。
.

c.网络

bitcoin-cli getnetworkinfo
fee计算 btc/kb
.

d.链

bitcoin-cli getblockchaininfo
mediantime 系统时钟(这是一个非常重要的概念)
softforks 软分叉 segwit扩容方案
.

e.区块

bitcoin-cli getblockhash 511591
bitcoin-cli getblock 000000000000000000416c225b222476e57d8a08249c762e8e261f3d3e8b1fc3
.
默克尔树
全部的交易组成一个merkle树。创币交易作为区块中的首个交易。必须偶数个节点。
快速比较;零知识证明
chainwork 全链总工作量
mediantime 共识,系统时钟,这个块的前面11个块按照block time排序后的中间时间
交易tx(被编码的)
共识算法,挖矿说明[nonce(随机数)+difficulty],类似数独,挖矿前构造区块
.

f.交易

bitcoin-cli getrawtransaction xxx
解码 bitcoin-cli decoderawtransaction  XXXX
vin
scriptSig由支付端生成的数据
vout
utxo
scriptPubKey包含在交易输出中的脚本。该脚本设置了比特币花费需满足的条件。满足条件的数据可以由签名脚本提供。
.
说明:utxo(Unspent transaction Output)_比特币系统没有比特币,没有账户,只有UTXO,可以说(UTXO=比特币),形成交易链
.

g.钱包

钱包地址:bitcoin-cli getnewaddress
生成算法说明:椭圆曲线算法+随机数——>公钥+私钥——>公钥编码(SHA256+RIPEMD160——>+版本进行两次SHA256编码(加校验码)——>BASE58编码
钱包地址的量非常大
导出私钥:bitcoin-cli dumpprivkey XXX
解锁密码: bitcoin-cli walletpassphrase hufei_test 60
.
bitcoin-cli getwalletinfo 注意:钱包中是没有钱的!只是一个概念
安全是最重要的
.
查看所有命令bitcoin-cli help
.

h.json-rpc

curl --user bitcoinrpc --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": getblockchaininfo", "params": [] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/
.
默认同步端口:8333 默认RPC端口:8332

 

5.比较靠谱的场景

a.钱包
b.底层建设(私链)
c.游戏:以太猫等
d.公益\溯源
e.获客:类似gxb、网易星球,通过发token,获取用户信息
f.联盟链(需要共识)

 

6.作业

注册otcbtc场外交易购买0.1个btc
下载imtoken钱包
从otcbtc转至imtoken钱包
区块链基础技术入门之比特币核心(Bitcoin Core)

发表评论

您必须才能发表评论!