比特幣錢包搭建與使用


安裝

就位

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/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM