安裝
就位
cd /usr/local/
安裝依賴
yum install -y wget yum install -y autoconf yum install -y automake yum install -y libtool yum install -y gcc gcc-c++ gcc-g77 yum install -y openssl-devel yum install -y boost-devel yum install -y libevent-devel
數據庫和錢包版本是有一定的搭配的,我這里用的是0.17.1配4.8.30,如果你要用其他版本,有可能需要折騰一下。
下載解壓 berkeley-db安裝包(這是我存儲的雲端文件)
wget http://file.fengyumeng.com/db-4.8.30.tar.gz tar -zxvf db-4.8.30.tar.gz
如果你需要其他版本的話可以到這里去找:
https://www.oracle.com/database/technologies/related/berkeleydb-release-history.html
切目錄
cd db-4.8.30/build_unix/
配置
../dist/configure --enable-cxx --disable-shared --with-pic --prefix=/usr/local
安裝
make install
回到local目錄
cd ../../
下載bitcoin
wget http://file.fengyumeng.com/bitcoin-0.17.1.tar.gz
如果你身體好,能翻牆,就去github下載你想要的版本:https://github.com/bitcoin/bitcoin/releases
解壓
tar -zxvf bitcoin-0.17.1.tar.gz
切入目錄
cd ./bitcoin-0.17.1/
生成配置文件
./autogen.sh
進行配置
./configure
編譯
make
安裝
make install
查找是否安裝成功
which bitcoind which bitcoin-cli
啟動
創建一個目錄存放區塊數據
mkdir /bitcoin
跳過去
cd /bitcoin/
創建配置文件
vim bitcoin.conf
如下配置內容,自己看着改
#測試網絡(不配置就默認是主網) testnet=1 # 啟動rpc服務 server=1 # rpc賬號密碼 rpcuser=abc rpcpassword=123456 #rpc白名單 rpcallowip=0.0.0.0/0 # 接受rest請求 rest=1 # 所有交易進行索引 否則只保留錢包地址交易索引記錄 txindex=1 # 交易確認區塊數 默認是6 txconfirmtarget=3 # 數據存儲位置 默認是家目錄下的.bitcoin目錄 datadir=/bitcoin # 塊數據存儲位置 默認家目錄下的.bitcoin/blocks 必須先創建該目錄 blocksdir=/bitcoin/blocks
更多配置,可以去這里找
https://jlopp.github.io/bitcoin-core-config-generator
啟動命令
bitcoind -conf=/bitcoin/bitcoin.conf -rpcport=9999 -daemon
-rpcport是rpc端口(默認的rpc端口是18443,如果你在配置文件里配端口的話 只有主網才會生效)
-daemon是守護進程
調用rpc接口看看通不通
curl --user abc:123456 --data-binary '{"jsonrpc":"1.0","id":"curltest","method":"getwalletinfo","params":[]}' -H 'content-type:text/plain' http://127.0.0.1:9999
看到如下信息證明是OK的 你已經可以找到balance等字樣了

停止命令 (帶上你啟動時的參數一起)
bitcoin-cli -conf=/bitcoin/bitcoin.conf -rpcport=9999 stop
如果再次啟動的時候出現異常,就手動刪除.lock文件
rm -rf /bitcoin/testnet3/.lock
使用
區塊信息
查看區塊信息
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 getblockchaininfo
獲取區塊高度
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 getblockcount
查看挖礦信息
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 getmininginfo
賬戶地址
列出所有錢包
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 listwallets
默認會有一個空錢包的
生成錢包
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 createwallet wallt1
你可以生成很多錢包
生成地址
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getnewaddress a_label_1
getnewaddress 后面跟的是 標簽名 以官方的話說是個label 相當於分類名
這是在wallt1錢包下面生成一個地址,一個客戶端可以有很多個錢包,每個錢包可以有很多個地址,多個地址可以設置成同一個label,相當於一個房間里可以有多個衣櫃,每個衣櫃有很多個格子,我把很多雙襪子放同一個格子方便管理。
打印在控制台的就是生成的地址

顯示地址的私鑰
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 dumpprivkey 2N33hCn1fSwZATgmAD55cetomi9MWB4V5xM
查看錢包下所有的label
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 listlabels
查看label下所有的地址
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getaddressesbylabel a_label_1
錢包余額
獲取測試比特幣
地址:https://coinfaucet.eu/en/btc-testnet/
獲取了之后,可以去測試網絡瀏覽器查:https://live.blockcypher.com
也可以直接打開這個鏈接(把后面的地址換成你要查詢的地址):https://live.blockcypher.com/btc-testnet/address/2N33hCn1fSwZATgmAD55cetomi9MWB4V5xM/
當然,你要等區塊確認之后錢才會變成可用的。
有一點需要注意一下,測試網絡目前的區塊高度是160多萬,查一下你本地的區塊高度同步了多少,如果區塊沒同步足夠,在本地是查不到交易的。
查詢錢包信息
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getwalletinfo
balance:錢包中以 BTC 為單位已確認的總余額
unconfirmed_balance:錢包中以 BTC 為單位未確認的總余額
immature_balance:錢包中以 BTC 為單位未成熟的總余額
查詢錢包余額
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getbalance
查詢地址余額
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 getreceivedbyaddress -rpcwallet=wallt1 2N33hCn1fSwZATgmAD55cetomi9MWB4V5xM 3
指定地址至少N個確認交易的金額,不填數字則默認1個
根據標簽查余額
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getreceivedbylabel a_label_1
后面同樣可以跟個數字 默認為1個確認的余額
遍歷地址余額信息
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 listreceivedbyaddress 1 true
交易
查詢錢包接收到的交易
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 listtransactions
根據hash查交易(錢包內交易)
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 gettransaction 3c1dcdccd6373134a183cd4df93e59a40b1b395fde55b7c0f9ca0eed04f4965f
根據hash查交易(交易池交易)
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 getrawtransaction 3c1dcdccd6373134a183cd4df93e59a40b1b395fde55b7c0f9ca0eed04f4965f true
轉賬
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=wallt1 sendtoaddress 2N8W4G3H1aTxJvkS8rdbj4e4yzeMeDCVB5y 0.01
比特幣每一次轉賬轉出的都是整個錢包的所有可用余額,其中指定的金額去往目標地址,剩余的金額回到自己錢包,這是找零的概念,建議不了解的同學啃一下UXTO模型。
加密解鎖
錢包加密
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=a1 encryptwallet abcdefg
encryptwallet后面跟的就是你的保險箱密碼,一旦加密, 每次進行轉賬時都需要先進行錢包解鎖。
(加密成功后bitcoin進程會關閉,需要重新啟動,建議區塊同步完了再進行錢包加密,否則加密后重啟錢包,可能會發現原來的錢包數據丟失了)
錢包解鎖
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=a1 walletpassphrase abcdefg 10
解鎖時間以秒為單位,到點之后錢包自動上鎖,如果在解鎖時間未到之前想要上鎖就需要手動調用下面的鎖定錢包接口
鎖定錢包
bitcoin-cli -rpcuser=abc -rpcpassword=123456 -rpcport=9999 -rpcwallet=a1 walletlock
API調用
RPC接口一覽表:https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list
比特幣PHP的SDK:https://github.com/blockchain/api-v1-client-php
比特幣JAVA的SDK:https://github.com/blockchain/api-v1-client-java
比特幣Python的SDK:https://github.com/blockchain/api-v1-client-python
比特幣NodeJs的SDK:https://github.com/blockchain/api-v1-client-node
第三方API:https://www.blockcypher.com/dev/bitcoin/
