探索比特币源码1-运行 Bitcoin Core Node
探索比特幣源碼1-運(yùn)行 Bitcoin Core Node
上一文我們已經(jīng)編譯好了Bitcoin Core的可執(zhí)行文件
本文,我們來嘗試運(yùn)行一個(gè)Bitcoin Core
注:本文是在學(xué)習(xí)Mastering Bitcoin過程中的記錄,由于代碼的快速迭代,在筆者寫下本文的時(shí)刻(2018/7/18),書中給出的包括配置、示例、命令調(diào)用等都發(fā)送了一定程度的改變。作為一個(gè)初學(xué)者,我盡可能的探索了改變后的用法及其原因,如有疏漏和錯(cuò)誤望及時(shí)指出,期待和各位的交流。
前言
比特幣的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)由節(jié)點(diǎn)組成,為了更好的學(xué)習(xí)比特幣的原理以及如何開發(fā)比特幣軟件,我們需要運(yùn)行一個(gè)自己的比特幣節(jié)點(diǎn)。
但是,運(yùn)行節(jié)點(diǎn)需要一個(gè)具有足夠資源來處理所有比特幣交易的系統(tǒng)。根據(jù)您是否選擇索引所有交易并保留塊的完整副本,您可能還需要大量的磁盤空間和RAM。Bitcoin Core默認(rèn)情況下保留區(qū)塊鏈的完整副本。在16年底時(shí),全索引節(jié)點(diǎn)需要2GB的RAM和125GB的磁盤空間,并且在不斷增長。
直到完整的塊鏈數(shù)據(jù)集被下載完成之前,Bitcoin Core將無法處理交易或更新帳戶余額。
為了運(yùn)行我們自己的Bitcoin Core節(jié)點(diǎn),首先要確保有足夠的磁盤空間來完成初始同步。
預(yù)留充足的磁盤空間
如果你的電腦磁盤剩余空間充足,那就直接進(jìn)行下一環(huán)節(jié)吧。
這里我記錄了我是如何找到最占用空間的文件并給電腦瘦身的,以供參考。
首先使用df -hl命令查看磁盤占用情況
$ df -hl 文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn) udev 1.9G 0 1.9G 0% /dev tmpfs 390M 6.4M 384M 2% /run /dev/sda5 459G 392G 44G 90% / tmpfs 2.0G 22M 1.9G 2% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/loop0 296M 296M 0 100% /snap/pycharm-professional/66 /dev/loop3 300M 300M 0 100% /snap/pycharm-professional/68 /dev/loop4 79M 79M 0 100% /snap/vscode/37 /dev/loop7 304M 304M 0 100% /snap/pycharm-professional/64 /dev/loop8 87M 87M 0 100% /snap/core/4650 /dev/loop1 79M 79M 0 100% /snap/vscode/38 /dev/loop2 87M 87M 0 100% /snap/core/4830 /dev/loop6 87M 87M 0 100% /snap/core/4917 tmpfs 390M 80K 390M 1% /run/user/1000 /dev/loop9 80M 80M 0 100% /snap/vscode/42 /dev/sda6 452G 163G 266G 38% /media/lsgo-as/Data這是我的磁盤占用情況,可以發(fā)現(xiàn),其中掛載在根目錄/下的SD磁盤居然占用了392G的空間
/dev/sda5 459G 392G 44G 90% /使用sudo du -sh *命令查看當(dāng)前目錄下文件的大小
使用du -sh .[!.]*命令查看所有隱藏文件的大小
頻繁利用這兩個(gè)命令,最終追溯到目錄~/.local/share/Trash/files占用了312G空間
原來是回收站占用了大量空間-_-|
仔細(xì)一看,都是團(tuán)隊(duì)小伙伴跑深度學(xué)習(xí)時(shí)刪除的數(shù)據(jù)集和模型文件。
使用下面命令將回收站清空
$ rm -rf ~/.local/share/Trash/files/*配置Bitcoin Core節(jié)點(diǎn)
現(xiàn)在,在主目錄~下,存在.bitcoin目錄
這應(yīng)該是我們的Bitcoin Core節(jié)點(diǎn)的路徑,錢包、區(qū)塊鏈等都會(huì)存放在這里
注:按照Mastering Bitcoin的說法,我們首次嘗試運(yùn)行bitcoind時(shí)會(huì)報(bào)錯(cuò),提醒你用一個(gè)安全密碼給JSON-RPC接口創(chuàng)建一個(gè)配置文件.bitcoin/bitcoin.conf。該密碼控制對(duì)Bitcoin Core提供的應(yīng)用程序編程接口(API)的訪問。但在筆者寫下本文的時(shí)刻(2018/7/18),發(fā)現(xiàn)這個(gè)設(shè)定已經(jīng)不存在了,這樣做應(yīng)該是為了讓bitcoind的使用更加簡潔。
我們可以使用bitcoind --help來查看幫助
$ bitcoind --help Bitcoin Core Daemon version v0.16.1Usage:bitcoind [options] Start Bitcoin Core DaemonOptions:-?Print this help message and exit-versionPrint version and exit......-conf=<file>Specify configuration file (default: bitcoin.conf)......看來仍然存在對(duì)于.conf的使用,可以使用-conf=<file>指明配置文件的路徑。
如果你想自定義一些配置,可以詳細(xì)閱讀Mastering Bitcoin 第三章
目前,先忽略這個(gè)配置文件,你可以直接命令運(yùn)行比特幣客戶端了。
運(yùn)行Bitcoin Core節(jié)點(diǎn)
使用bitcoind -printtoconsole命令在前臺(tái)運(yùn)行,并打印信息到終端
$ bitcoind -printtoconsole或者使用bitcoind -daemon命令,使用守護(hù)進(jìn)程在后臺(tái)運(yùn)行
$ bitcoind如果想要終止Bitcoin Core客戶端的運(yùn)行,可以使用如下命令:
$ bitcoin-cli stop其中bitcoin-cli是命令行幫助程序,我們可以通過它訪問比特幣核心客戶端實(shí)現(xiàn)的JSON-RPC接口。
注:如果想要停止客戶端,千萬不要用Ctrl + C這種方法。我試了一次,客戶端就無法再次正常運(yùn)行了,所以一定記住要用上面的方法。
當(dāng)我們第一次運(yùn)行客戶端后,實(shí)際上Bitcoin Core先要做的是努力同步從創(chuàng)世快以來的所有區(qū)塊鏈數(shù)據(jù),根據(jù)網(wǎng)速,這可能需要幾天甚至幾周。
所以我們趕緊再次把客戶端運(yùn)行上,開始同步數(shù)據(jù)。
這個(gè)過程中,我們可以隨時(shí)使用bitcoin-cli getblockchaininfo查看區(qū)塊鏈信息,從而查看同步進(jìn)度,類似如下:
$ bitcoin-cli getblockchaininfo {"chain": "main","blocks": 31452,"headers": 532626,"bestblockhash": "0000000091e5e4985852a04cfd3032f8be7debfda8a8d1bb8e11beffd0e1fdf4","difficulty": 1,"mediantime": 1261716777,...... }其中”blocks”: 31452是塊高度,也就對(duì)應(yīng)了同步的進(jìn)度。
注:Mastering Bitcoin 第三章中給出的bitcoin-cli getinfo命令在我寫作時(shí),已經(jīng)改為了上面給出的bitcoin-cli getblockchaininfo命令。
已經(jīng)確認(rèn)程序正在正確同步了,慢慢運(yùn)行把,我們下一次來使用bitcoin-cli進(jìn)行一些交互實(shí)驗(yàn)
總結(jié)
以上是生活随笔為你收集整理的探索比特币源码1-运行 Bitcoin Core Node的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#编写不安全代码初探
- 下一篇: matlab算hht,关于MATLAB中