bitcoin 网络简介 1

创作人 Leo


编辑时间 Fri Jul 29,2022 at 19:47


developer.bitcoin.org

钱包

公私钥:用来签名验证交易,同时也是身份认证

地址:地址通过秘钥生成

什么是 BIP:Bitcoin Improvement Proposals 比特币改进建议

秘钥管理议题历史:

BIP32: 用来解决一个人有多个地址需求;
BIP32 提案的名字是:Hierarchical Deterministic Wallets,就是我们所说的 HD 钱包;
根据一个随机数种子通过分层确定性推导的方式得到 n 个私钥。

BIP44:
为 BIP32 提到的 HDPath 定义了规范
m / purpose’ / coin’ / account’ / change / address_index

BIP39:
通过助记词推导 BIP32 中提到的随机数种子

比特币地址前缀:
可以用来快速确认该串属于什么类型

例如:

前缀 说明 用例
1 Pubkey hash (P2PKH address) 17VZNX1SN5NtKa8UQFxwQbFeFc3iqRYhem
K or L Private key (WIF, compressed pubkey) L1aW4aubDFB7yfras2S1mN3bqg9nwySY8nkoLmJebSLD5BWv3ENZ

List of address prefixes

获取 BTC

地址 1
地址 2

BTC 浏览器

www.blockchain.com
live.blockcypher.com

API

RPC API Reference

REGTEST 本地开发网络

配置文件

环境搭建

  1. 首先下载比特币源码 github 托管,按照 Readme 编译即可,编译完成会在 src 下生成 bitcoind
  2. 编辑一个 bitcoin.conf 配置文件
## server
regtest=1

## RPC
server=1

## others
fallbackfee=0.01
  1. 创建一个 data 文件夹用来放区块链数据,并启动 bitcoind
    ./src/bitcoind -datadir=~/Downloads/bitcoin-regtest/datas -conf=~/Downloads/bitcoin-regtest/bitcoin.conf

内部钱包操作

命令

# 开启网络
./src/bitcoind -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf

# 生成地址
./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf getnewaddress
bcrt1q230ndvm3nazp2fn9y5g5clntdn54g355wvsjhc
bcrt1qln0ehv9dcf8st0uadjsjq8kfd48czygfe7m476

# 获取默认地址余额
./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf getbalance

# 出 101 个块,并把奖励给对应地址
./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf generatetoaddress 101 bcrt1q230ndvm3nazp2fn9y5g5clntdn54g355wvsjhc

# 列出默认地址未消费记录
./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf listunspent

./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf listunspent 0

./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf listunspent 0 9999999 "[\"bcrt1qsq8dxyx78uem3sw7zvt9jluqtxgznf9yy8unkr\",\"bcrt1qvy5mgws3yzq0av58vfrzuy7fmevdfvetgcgfuw\", \"mpNhoJmCDjFTSv6WNTEDQdxxA5dyVNLYtp\"]" false

# 列出当前内部管理的钱包
./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf listwallets

# 从默认地址转账,返回事务 ID
./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf sendtoaddress mpNhoJmCDjFTSv6WNTEDQdxxA5dyVNLYtp 10

./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf sendtoaddress bcrt1qsq8dxyx78uem3sw7zvt9jluqtxgznf9yy8unkr 10
b1e9745b916939da65b6eb31d405acc2d9ca484d1d4fd198a593f9aa96b50725

$ ./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf sendtoaddress mpNhoJmCDjFTSv6WNTEDQdxxA5dyVNLYtp 10
3439713bae934c8feee32495fc9f05f6a2223b4b81ab85351197209263f477cc

./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf sendtoaddress bcrt1qvy5mgws3yzq0av58vfrzuy7fmevdfvetgcgfuw 10
d139a0537c192e3affddb87beb44fc7a44520aff93f7fecdd949bad8e4ae4cbc

# 获取交易信息
./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf gettxout "3439713bae934c8feee32495fc9f05f6a2223b4b81ab85351197209263f477cc" 1

# 获取区块链当前信息
./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf getblockchaininfo

# 导入地址
./src/bitcoin-cli -datadir=/Users/bitz/Downloads/bitcoin-regtest/datas -conf=/Users/bitz/Downloads/bitcoin-regtest/bitcoin.conf importaddress mpNhoJmCDjFTSv6WNTEDQdxxA5dyVNLYtp

转账到外部钱包

js 库

bitcoinjs - Open source organisation for Bitcoin libraries
这是 bitcoin js 的项目地址

bitcoinjs-lib
主要提供公钥私钥对生成,签名验签,功能;是对其他 BIPs 的封装

bip39 助记词库

参考资料

理解开发HD 钱包涉及的 BIP32、BIP44、BIP39
《精通比特币第二版》中文版第九章区块链


阅读:142
搜索
  • Linux 高性能网络编程库 Libevent 简介和示例 2288
  • Mac系统编译PHP7【20190929更新】 2186
  • Hadoop 高可用集群搭建 (Hadoop HA) 1852
  • Linux 常用命令 1837
  • zksync 和 layer2 1832
  • 安徽黄山游 1817
  • Windows 安装Swoole 1794
  • Hadoop 高可用YARN 配置 1750
  • 小白鼠问题 1707
  • 使用 Java+Thrift 实现异步事件处理服务 1627
简介
不定期分享软件开发经验,生活经验