比特幣(Bitcoin)的概念最初由中本聰在2008年11月1日提出,並於2009年1月3日正式誕生。根據中本聰的思路設計發佈的開源軟件以及建構其上的P2P網絡。比特幣是一種P2P形式的虛擬的加密數字貨幣。點對點的傳輸意味着一個去中心化的支付系統。與全部的貨幣不一樣,比特幣不依靠特訂貨幣機構發行,它依據特定算法,經過大量的計算產生,比特幣經濟使用整個P2P網絡中衆多節點構成的分佈式數據庫來確認並記錄全部的交易行爲,並使用密碼學的設計來確保貨幣流通各個環節安全性。P2P的去中心化特性與算法自己能夠確保沒法經過大量製造比特幣來人爲操控幣值。基於密碼學的設計可使比特幣只能被真實的擁有者轉移或支付。這一樣確保了貨幣全部權與流通交易的匿名性。比特幣與其餘虛擬貨幣最大的不一樣,是其總數量很是有限,具備極強的稀缺性。 bitcoin百度百科 bitcoin維基百科git
目前網絡上有不少社區開發了多款bitcoin錢包,其中bitcoin core錢包安裝後會下載所有節點,而且有一套rpc接口協議,代碼在github也所有開源,bitcoin core支持多個操做系統,咱們能夠根據本身須要進行安裝。我作過的項目需求都是交易系統和支付系統實現充值,提現,和歸集功能,bitcoin core對我來講足夠了,因此就選擇他了。至於其餘錢包我就沒有具體深刻研究了,若是有特殊需求的業務,也能夠去研究下其餘錢包是否支持。 想研究其餘錢包可點擊連接進行查看:bitcoin維基百科github
由於虛擬幣價值比較高,因此有不少黑客會想盡各類辦法盜取虛擬幣資產,像一線交易所也都被盜過,目前最簡單和成本最低的防範方法就是作冷熱錢包隔離,咱們在設計系統的時候也應該考慮此方面的解決方案,而後在這個思路上面延伸。個人解決方案是用戶充值進錢包的虛擬幣,我天天會經過定時任務把熱錢包的虛擬幣轉到冷錢包。這樣的話黑客就算黑了咱們錢包,他能盜走的幣也不多,能夠減小平臺的損失。算法
區塊同步時cpu會懟滿,因此大家到時候不要大驚小怪了,這是正常的,等區塊同步完成後就會恢復正常shell
安裝也有多種方法,能夠在上面地址下載安裝文件也行,這裏我是直接經過ubuntu的apt下載安裝 首先須要添加bitcoin的源:數據庫
sudo add-apt-repository ppa:bitcoin/bitcoin
添加源成功以後,須要更新下源:json
sudo apt-get update
安裝bitcoind:ubuntu
sudo apt-get install bitcoind
能夠選擇性的安裝bitcoin-qt,在ubuntu-service版本上是不須要bitcoin-qt的,若是是在ubuntu-desktop上面想使用bitcoin-qt的話能夠選擇安裝:安全
sudo apt-get install bitcoin-qt
直接輸入bitcoind命令可讓bitcoind在前臺直接運行:服務器
bitcoind
也能夠採用後臺運行的方式,也能夠和我同樣用nohup打印一下日誌網絡
nohup bitcoind &
經過命令查看錢包版本,以及是否安裝成功
bitcoind -version Bitcoin Core Daemon version v0.18.0.0-g2472733a24a9364e4c6233ccd04166a26a68cc65 Copyright (C) 2009-2019 The Bitcoin Core developers Please contribute if you find Bitcoin Core useful. Visit <https: bitcoincore.org> for further information about the software. The source code is available from <https: github.com bitcoin>. This is experimental software. Distributed under the MIT software license, see the accompanying file COPYING or <https: opensource.org licenses mit> This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit <https: www.openssl.org> and cryptographic software written by Eric Young and UPnP software written by Thomas Bernard.
啓動後錢包會自動同步區塊,能夠打開日誌查看具體同步狀況
tail -f nohup.out
進入bitcoin安裝目錄
cd $HOME/.bitcoin ls banlist.dat bitcoind.pid blocks chainstate debug.log peers.dat wallets ls wallets/ database db.log wallet.dat
由於這次我安裝的版本是0.18,因此相比老版本有所改變,wallet.bat文件在wallet文件夾裏面,上面咱們能夠看到文件夾最新結構,下面是具體文件夾介紹
bitcoind.pid bitcoind 運行的進程文件 blocks 區塊鏈數據文件 chainstate 區塊鏈狀態的數據庫使用LevelDB存儲 db.log 數據庫日誌文件 debug.log 運行時的日誌文件 wallet.dat 錢包文件(這個要劃重點了,此文件保存了咱們錢包生成的私鑰,特別重要,建議經過編寫shell腳本或者使用後臺程序天天作個備份)
安裝supervisor(進程監控),錢包掛掉可使程序自啓
sudo apt-get install supervisor
bitcoin-cli getwalletinfo 查看錢包詳情,在0.18版本中,之前的getinfo已經取消 { "walletname": "", "walletversion": 169900, 錢包版本 "balance": 0.00000000, 錢包餘額 "unconfirmed_balance": 0.00000000, 未確認餘額 "immature_balance": 0.00000000, 這個暫時還不清楚 "txcount": 0, 錢包內交易數量 "keypoololdest": 1562826486, 密鑰池內最先密鑰建立時間 "keypoolsize": 1000, 密鑰池大小 "keypoolsize_hd_internal": 1000, "paytxfee": 0.00000000, 手續費率(這個比較重要,後面單獨講) "hdseedid": "ed13b2019c2e28e9dc84cf7124ba2e36cebcb656", "private_keys_enabled": true } bitcoin-cli getblockchaininfo 查看區塊詳情 { "chain": "main", "blocks": 238558, 錢包當前區塊(btc安裝啓動後通常1-2天能夠同步到最新區塊高度) "headers": 584893, 當前最新區塊高度 .... 後面還有其餘信息,咱們暫不關注 } bitcoin-cli sendtoaddress 轉帳接口(後面具體介紹) Response: 1. "address" (string, required) 接收地址 2. "amount" (numeric or string, required) 轉帳金額 Result: "txid" (string) 惟一標識tx_id Examples: > bitcoin-cli sendtoaddress "1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd" 0.1 > curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "sendtoaddress", "params": ["1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd", 0.1] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/
轉帳目前有多種方式和接口,下面作詳細介紹:
目前個人項目是設置的定時器天天在不一樣時間執行三次歸集任務,由於用的sendtoaddress轉帳的接口,因此我每次歸集的時候查詢錢包餘額是否超過歸集閾值,超過就作歸集操做。
</https:></https:></https:></https:>