當前位置:首頁 » 比特幣問答 » 搭建btc

搭建btc

發布時間: 2023-03-09 09:18:12

A. 手把手教你搭建比特幣衛星接收節點

原文: https://hackernoon.com/building-your-own-bitcoin-satellite-node-6061d3c93e7

比特幣區塊鏈實際上是一個賬本,所以需要將全部交易信息包含在賬本內,從而體現每個比特幣的所有權。賬本需要在節點之間相互廣播,以達到分布式備份賬本的目的,這是比特幣的關鍵特徵。目前,節點廣播幾乎完全依賴互聯網,這給比特幣帶來了潛在的「單點故障」問題,降低了整個網路的穩健性和安全性。

例如,海底光纜出現故障,或受政策影響的針對性斷網都可能導致大范圍的網路斷連,從而影響該地區比特幣節點的同步,損害比特幣的可用性。

同步衛星的出現,減少了比特幣對互聯網的依賴,使節點同步可以通過接收衛星信號的形式完成。只需要一個衛星天線和一個接收器,就可以接收從衛星傳來的區塊數據,保持節點同步。同時,這也降低了運行節點的成本,在某些欠發達地區,網路連接費用高昂,使用衛星同步區塊數據可以省下網費,讓更多人有機會運行節點,從而提高比特幣的覆蓋率。

國外早有大神自製了衛星接收節點,本文將其整理成簡略教程,供大家參考。

首先調節三腳架高低。

然後將衛星盤連接到三腳架上,並調節方位和高低。

然後將高頻頭安裝到高頻頭支架上。

如果一切順利,你的衛星天線應該是這樣的。

使用 F 轉接頭將 SDR 連接到高頻頭電源上,然後使用同軸電纜將高頻頭也連接到電源上。連接前需要確認電源與 SDR 是匹配的,否則錯誤的電源將損壞 SDR。

Blockstream 為所需軟體提供了預建的二進制文件。

打開「終端」後,輸入

回車輸入密碼,密碼是安裝時設置的。然後可以看到待更新列表,輸入 y,回車。

升級結束後,重啟。

在「終端」中,輸入

回車後屏幕出現 Is this ok [y/N],輸入 y,回車。

完成後,將 Blockstream Satellite 在 Github 的庫克隆到本地,創建一個項目。

首先要創建衛星接收器,輸入如下命令:

安裝好後開始克隆 Github 庫

去剛才克隆好的文件夾

現在我們已經准備好所有 gr-framer GNUradio 模組需要的軟體了,開始執行安裝腳本:

輸入密碼

創建 gr-framers
恭喜,你已經安裝了 gr-framers GNUradio!

現在開始執行 Blockstream GNUradio 安裝腳本:

創建 Blockstream 模組

現在已經安裝好 Blockstream 模組了。

我們需要設置 PYTHONPATH 和 LD_LIBRARY_PATH,來讓接收器正常工作:

到這里,所有關於 GNUradio 的設置都已經完成了!

安裝相關軟體:

安裝 FIBRE 相關軟體
現在,克隆 FIBRE 庫:

然後去克隆的文件夾:

開始創建:

現在創建 FIBRE

(此處可以添加 -jn 來加速編譯,其中 n 是 cpu 核心數。如果你是四核處理器,就輸入命令 make -j4)

已完成創建
完成後,開始安裝:

FIBRE 安裝好了

FIBRE 已經安裝好了!你現在可以開始同步,或者將已經同步好的節點復制過來。

到此為止,你已經准備好前期工作,下面開始對齊衛星盤。

Blockstream 目前有 5 顆衛星,確定你所在地區被哪一顆所覆蓋。

可在 Blockstram 官網 查詢:

本文選擇的是 Galaxy 18 衛星。

官網也有對齊工具,你可以輸入你的地址或經緯度,它會告訴你如何調整天線的高度、方位和極性。這里是 對齊工具 。

為了得到一個 Galaxy 18 大概的可視化方位,我用了 SatellitePointer 這個 App。

確保在視線的 30 度之內沒有建築、樹、或其他遮擋物。理想的視線是這樣的:

視線越好,你接收的信號也就越好。

當你已經確定好衛星盤的擺放地點,你可以開始設置方位和高度。

信號質量與高度角密切相關,所以把高度角調節得越准確越好。

當你覺得高度已經調好了,就可以開始設置高頻頭的方位了。

設置高頻頭極性有點難辦。我用了 SatellitePointer 這個 App 來幫助設置。我把手機的頂邊貼近高頻頭底部的平邊(圖中紅線處),然後看 App 中的指示:

雖然高頻頭上也有角度器,但是我覺得 App 更方便。

在啟動接收器之前,你需要確定衛星的頻率,並將其輸入 rx_gui.py 文件。之前的教程里已經說過如何查詢頻率了。我使用的 Galaxy 18 衛星的頻率是 12022.85 MHz。

要計算輸入到 rx_gui.py 的頻率,需要用衛星頻率減去你高頻頭的 LO 頻率。本文使用的高頻頭 LO 頻率為 10750 MHz,因此最後的結果是 1272.85 MHz。

需要將 MHz 轉化為 Hz,最後結果是 1272850000 Hz。

現在你可以將頻率和增益(設為 40 即可)寫入文件中,然後運行。

rx_gui.py 文件在 Blockstream 庫的 satellite/grc 文件夾中。

當你運行 rx_gui.py 時,會彈出一個窗口。我們需要用到 FLL In 這個選項卡。

圖形顯示波動很大,刷新很快。要解決這個問題,你可以設置一下 average 參數,設為 15 即可。

緩慢地左右旋轉衛星盤,觀察 FLL In 的變化。我同樣用了之前的 App 來幫助尋找方位。

如果你成功了,你會看到如下所示的圖表。

現在你需要調整方位(左右)、高度(上下)和高頻頭的極性,來讓信號更好。最後會得到如下所示的圖表。

要確認你的信號是好的,你可以到 Abs PMF Out 選項卡,看一下有沒有峰值。

你也可以到 Costas Sym Out 選項卡去看散點圖。

最後,「終端」會顯示:

恭喜!你成功對齊了衛星盤!

輸入指令:

可以在 debug.log 文件中看到有沒有成功接收區塊,如果你看到如下的信息:

那麼就已經成功了!
現在,你可以斷網,試著只通過衛星來接收區塊。

B. 怎麼搭建山寨幣礦池

搭建礦池需要的准備工作:
1、最好獨立伺服器和固定IP ,VPS也行
2、固定ip 地址
3、操作系統:ubuntu,centos,linux 內存不小於2G
4、軟體:礦池的前台和後台程序,一般多是英文的資料。

搭建礦池的教程:
1、准備工作:
熟悉linux系統,
編寫程序的基本功,
熟悉網站HTML代碼
基本的英文能力
2、操作系統:ubuntu,centos,linux 內存不小於2G
3、搭建礦池全套教程參考網站:
搭建BTC礦池後端程序:https://github.com/forrestv/p2pool/
搭建BTC礦池前端程序:https://github.com/hardcpp/P2PoolExtendedFrontEnd
搭建礦池資料https://github.com/viperaus/stratum-mining
搭建礦池資料https://en.bitcoin.it/wiki/P2Pool
搭建礦池資料https://bitcointalk.org/index.php?topic=18313.0
搭建礦池資料https://bitcointalk.org/index.php?topic=62842.0
4、搭建BTC礦池具體步驟、教程:http://www.800996.com/btc/pool/BTCKC.htm
5、搭建LTC礦池具體步驟、教程:http://www.800996.com/btc/pool/lTCKC.htm

C. 如何在windows平台下編譯比特幣bitcoin客戶端

第一步:安裝變編譯環境QT和MINGW,msys
1、msys是一個在windows平台模擬shell的程序。

訪問http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download
下載安裝程序之後,通過安裝管理程序,按安裝以下內容:
From MinGW installation manager -> All packages -> MSYS
選中以下安裝包

msys-base-bin
msys-autoconf-bin
msys-automake-bin
msys-libtool-bin
點 apply changes開始安裝。他會自動下載安裝好。
需要注意的是,確保不要安裝msys-gcc和msys-w32api ,因為這兩個包和我們的編譯系統發生沖突。
很多人出現一些莫名其妙的問題,就是因為這兩個包。
2、安裝 MinGW-builds
訪問
http://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32/Personal Builds/mingw-builds/4.8.2/threads-posix/dwarf/i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z/download
下載並解壓縮 i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z 到C盤根目錄 C:\
注意我的目錄結構。你盡量和我一樣。

3、設置PATH環境變數,將C:\mingw32\bin;添加到第一個。
4、在命令行模式下輸入 gc -v 會得到以下內容
c:\gcc -v
Using built-in specs.
COLLECT_GCC=c:\mingw32\bin\gcc.exe
COLLECT_LTO_WRAPPER=c:/mingw32/bin/../libexec/gcc/i686-w64-mingw32/4.8.2/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../../../src/gcc-4.8.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw482/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-posix-dwarf-rev3, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/lib -L/c/mingw482/prerequisites/i686-zlib-static/lib -L/c/mingw482/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'
Thread model: posix
gcc version 4.8.2 (i686-posix-dwarf-rev3, Built by MinGW-W64 project)
至此,你的開發環境已經搭建好了,很簡單吧

第二部分:下載bitcoin引用的外部庫
我們把它們全部放在 C:\deps目錄下
2.1 安裝OpenSSL下載:http://www.openssl.org/source/openssl-1.0.1g.tar.gz
進入啟動 MinGw shell 比如目錄:(C:\MinGW\msys\1.0\msys.bat)運行這個msys.bat,就會啟動一個shell環境,提示符是$
輸入命令
cd /c/deps/
tar xvfz openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
Configure no-shared no-dso mingw
make

等待幾分鍾後,就把openssl編譯好了。

2.2 下載Berkeley DB 訪問: http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz
我們推薦使用 4.8版本
同樣在msys shell環境下輸入以下命令
cd /c/deps/
tar xvfz db-4.8.30.NC.tar.gz
cd db-4.8.30.NC/build_unix
../dist/configure --enable-mingw --enable-cxx --disable-shared --disable-replication
make
等待編譯

2.3 安裝Boost,下載地址: http://sourceforge.net/projects/boost/files/boost/1.55.0/

msys命令:
cd C:\deps\boost_1_55_0\
bootstrap.bat mingw
b2 --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc variant=release link=static threading=multi runtime-link=static stage

2.4 安裝Miniupnpc 下載地址: http://miniupnp.free.fr/files/download.php?file=miniupnpc-1.9.tar.gz

cd C:\deps\miniupnpc
mingw32-make -f Makefile.mingw init upnpc-static

2.5下載 protoc 和 libprotobuf:
Download and unpack http://protobuf.googlecode.com/files/protobuf-2.5.0.zip
msys shell命令

cd /c/deps/protobuf-2.5.0
configure --disable-shared
make

2.6 qrencode:
下載地址: http://prdownloads.sourceforge.net/libpng/libpng-1.6.10.tar.gz?download
命令
cd /c/deps/libpng-1.6.10
configure --disable-shared
make

下載 http://fukuchi.org/works/qrencode/qrencode-3.4.3.tar.gz ode:
cd /c/deps/qrencode-3.4.3

LIBS="../libpng-1.6.10/.libs/libpng16.a ../../mingw32/i686-w64-mingw32/lib/libz.a" \
png_CFLAGS="-I../libpng-1.6.10" \
png_LIBS="-L../libpng-1.6.10/.libs" \
configure --enable-static --disable-shared --without-tools

make

2.7 安裝 Qt 5 庫
下載和解壓縮
http://download.qt-project.org/official_releases/qt/5.2/5.2.1/submoles/qtbase-opensource-src-5.2.1.7z
http://download.qt-project.org/official_releases/qt/5.2/5.2.1/submoles/qttools-opensource-src-5.2.1.7z
在 windows命令行輸入:
set INCLUDE=C:\deps\libpng-1.6.10;C:\deps\openssl-1.0.1g\include
set LIB=C:\deps\libpng-1.6.10\.libs;C:\deps\openssl-1.0.1g

cd C:\Qt\5.2.1
configure.bat -release -opensource -confirm-license -static -make libs -no-sql-sqlite -no-opengl -system-zlib -qt-pcre -no-icu -no-gif -system-libpng -no-libjpeg -no-freetype -no-angle -no-vcproj -openssl-linked -no-dbus -no-audio-backend -no-wmf-backend -no-qml-debug

mingw32-make

set PATH=%PATH%;C:\Qt\5.2.1\bin

cd C:\Qt\qttools-opensource-src-5.2.1
qmake qttools.pro
mingw32-make

3. 下載Bitcoin 0.9.1 地址: https://github.com/bitcoin/bitcoin/archive/v0.9.1.zip

在msys shell下輸入以下命令行:
cp /c/deps/libpng-1.6.10/.libs/libpng16.a /c/deps/libpng-1.6.10/.libs/libpng.a

cd /c/bitcoin-0.9.1

./autogen.sh

CPPFLAGS="-I/c/deps/boost_1_55_0 \
-I/c/deps/db-4.8.30.NC/build_unix \
-I/c/deps/openssl-1.0.1g/include \
-I/c/deps \
-I/c/deps/protobuf-2.5.0/src \
-I/c/deps/libpng-1.6.10 \
-I/c/deps/qrencode-3.4.3" \
LDFLAGS="-L/c/deps/boost_1_55_0/stage/lib \
-L/c/deps/db-4.8.30.NC/build_unix \
-L/c/deps/openssl-1.0.1g \
-L/c/deps/miniupnpc \
-L/c/deps/protobuf-2.5.0/src/.libs \
-L/c/deps/libpng-1.6.10/.libs \
-L/c/deps/qrencode-3.4.3/.libs" \
./configure \
--disable-upnp-default \
--disable-tests \
--with-qt-incdir=/c/Qt/5.2.1/include \
--with-qt-libdir=/c/Qt/5.2.1/lib \
--with-qt-bindir=/c/Qt/5.2.1/bin \
--with-qt-plugindir=/c/Qt/5.2.1/plugins \
--with-boost-system=mgw48-mt-s-1_55 \
--with-boost-filesystem=mgw48-mt-s-1_55 \
--with-boost-program-options=mgw48-mt-s-1_55 \
--with-boost-thread=mgw48-mt-s-1_55 \
--with-boost-chrono=mgw48-mt-s-1_55 \
--with-protoc-bindir=/c/deps/protobuf-2.5.0/src

make

strip src/bitcoin-cli.exe
strip src/bitcoind.exe
strip src/qt/bitcoin-qt.exe

這樣,你就得到了變異好的 bitcoin-cli.exe和bitcoind.exe ,bitcoin-qt.exe(windows QT圖形界面的錢包軟體)

D. BTC主網節點搭建

-環境 Centos7+
-硬碟500GB+
寶塔環境,硬碟掛載到www盤

cd /www/ wget https://bitcoin.org/bin/bitcoin-core-0.20.0/bitcoin-0.20.1-x86_64-linux-gnu.tar.gz

tar zxf bitcoin-0.20.1-x86_64-linux-gnu.tar.gz
ln -fs /www/bitcoin-0.20.1 /www/bitcoin
ln -fs /www/bitcoin-0.20.1/bin/bitcoind /usr/local/bin/bitcoind
ln -fs /www/bitcoin-0.20.1/bin/bitcoin-cli /usr/local/bin/bitcoin-cli

mkdir -p /www/btc_data
mkdir ~/.bitcoin
vim ~/.bitcoin/bitcoin.conf

yum install vim -y

bitcoind -daemon

bitcoin-cli stop

bitcoin-cli getblockchaininfo
bitcoin-cli getmininginfo

E. 比特幣中國第一人

在中國區塊鏈行業的發展史上,比特幣中國是一個無法繞開的名字。作為國內第一家,也一度是最大的一家比特幣交易平台,它見證了行業的興衰起伏,是無數人踏入幣圈的第一站。而它的創始人,也因而被圈內人贊譽為「中國比特幣第一人」。

拓展資料:
一、楊林科的青蔥歲月:1985年出生於浙江溫州,父親是當地生意人。小時候,他的夢想是做游泳運動員,然而現實和夢想總有落差,學習成績不佳的他高中畢業後便早早踏上社會,在一家汽車配件廠打工。作為一個飽受浙商文化洗禮的年輕人,楊林科認為汽配廠的工作並沒有什麼前途,然而苦於沒有出頭的機會,18歲的他在家人的建議下選擇參軍,一方面鍛煉自己,一方面等待更合適的機會。兩年後,楊林科從部隊退伍,開始嘗試在北京做生意。最初的一段時間,由於資本和經驗都有所欠缺,收獲始終不大,隨著時間的慢慢累積,他漸漸找到一些門道,開始嘗試經營汗蒸設備和酒店生意,生意也慢慢走上正軌。2011年5月的某天,正忙於經營生意的楊林科打開電腦,猛然看見朋友黃嘯宇的QQ簽名:「願意了解bitcoin可以聊聊。」當時的他完全沒有接觸過數字貨幣,只是出於好奇回復了一句:「什麼是bitcoin?」就此開啟了在區塊鏈領域的征程。
二、他的朋友黃嘯宇是一位技術宅,喜歡研究經濟,是國內最早接觸比特幣的人之一。當時全球最大的比特幣交易平台是Mt.Gox,占據著全球80%的比特幣交易量,靠著手續費賺的盆滿缽滿。而在中國,只有少數人用個人電腦挖礦在淘寶出售。黃嘯宇於是就構想做一個中國的比特幣交易平台。這個想法引起了楊林科極大的興趣。在簡單了解比特幣的運作機制後,他覺得門頭溝的成功模式是可以復制的,於是果斷投入了幾萬塊錢,和黃嘯宇用一個月時間,共同搭建了國內第一家數字貨幣交易所——比特幣中國。而「bitcoin」這個詞的中文名「比特幣」,也是二人共同翻譯的。

F. 如何搭建比特幣礦池

搭建礦池不是那麼簡單的,足夠的伺服器,足夠的算力

G. 一小區地下車庫疑建「比特幣」工廠,該事件調查的怎麼樣了

目前正在對租房人員的行為進行調查,而且也已經將違章搭建進行拆除。

我們都知道小區裡面是不能出現違章搭建的行為。但是有一些人在小區購買房子之後,通常都會選擇通過自己的私心在小區裡面進行一些違章搭建行為。從而會讓小區的市民出現比較反感的狀態,而且也會選擇舉報這種現象。

物業表示對此事並不知情。

其次就是當這件事情在網路上擁有比較高的熱度之後,就有相關記者采訪小區裡面的物業。然而物業的回應讓很多網友都覺得特別的吃驚。因為物業對這件事情一無所知,從而讓很多網友都覺得物業的這種說法只是一種推薦責任的表現。並且也讓很多網友開始質疑物業的一些相關管理能力。

H. 比特幣礦池的協議stratum

轉自: https://zhuanlan.hu.com/p/23558268
getblocktemplate協議誕生於2012年中葉,此時礦池已經出現。礦池採用getblocktemplate協議與節點客戶端交互,採用stratum協議與礦工交互,這是最典型的礦池搭建模式。

與getwork相比,getblocktemplate協議最大的不同點是:getblocktemplate協議讓礦工自行構造區塊。如此一來,節點和挖礦完全分離。對於getwork來說,區塊鏈是黑暗的,getwork對區塊鏈一無所知,他只知道修改data欄位的4個位元組。對於getblocktemplate來說,整個區塊鏈是透明的,getblocktemplate掌握區塊鏈上與挖礦有關的所有信息,包括待確認交易池,getblocktemplate可以自己選擇包含進區塊的交易。

挖礦有兩種方式,一種叫SOLO挖礦,另一種是去礦池挖礦。前文所述的在節點客戶端直接啟動CPU挖礦,以及依靠getwork+cgminer驅動顯卡直接連接節點客戶端挖礦,都是SOLO挖礦,SOLO好比自己獨資買彩票,不輕易中獎,中獎則收益全部歸自己所有。去礦池挖礦好比合買彩票,大家一起出錢,能買一堆彩票,中獎後按出資比率分配收益。理論上,礦機可以藉助getblocktemplate協議鏈接節點客戶端SOLO挖礦,但其實早已沒有礦工會那麼做,在寫這篇文章時,比特幣全網算力1600P+,而當前最先進的礦機算力10T左右,如此算來,單台礦機SOLO挖到一個塊的概率不到16萬分之一,礦工(人)投入真金白銀購買礦機、交付電費,不會做風險那麼高的投資,顯然投入礦池抱團挖礦以降低風險,獲得穩定收益更加適合。因此礦池的出現是必然,也不可消除,無論是否破壞系統的去中心化原則。

礦池的核心工作是給礦工分配任務,統計工作量並分發收益。礦池將區塊難度分成很多難度更小的任務下發給礦工計算,礦工完成一個任務後將工作量提交給礦池,叫提交一個share。假如全網區塊難度要求Hash運算結果的前70個比特位都是0,那麼礦池給礦工分配的任務可能只要求前30位是0(根據礦工算力調節),礦工完成指定難度任務後上交share,礦池再檢測在滿足前30位為0的基礎上,看看是否碰巧前70位都是0。

礦池會根據每個礦工的算力情況分配不同難度的任務,礦池是如何判斷礦工算力大小以分配合適的任務難度呢?調節思路和比特幣區塊難度一樣,礦池需要藉助礦工的share率,礦池希望給每個礦工分配的任務都足夠讓礦工運算一定時間,比如說1秒,如果礦工在一秒之內完成了幾次任務,說明礦池當前給到的難度低了,需要調高,反之。如此下來,經過一段時間調節,礦池能給礦工分配合理難度,並計算出礦工的算力。

礦池通過getblocktemplate協議與網路節點交互,以獲得區塊鏈的最新信息,通過stratum協議與礦工交互。此外,為了讓之前用getwork協議挖礦的軟體也可以連接到礦池挖礦,礦池一般也支持getwork協議,通過階層挖礦代理機制實現(Stratum mining proxy)。須知在礦池剛出現時,顯卡挖礦還是主力,getwork用起來非常方便,另外早期的FPGA礦機有些是用getwork實現的,stratum與礦池採用TCP方式通信,數據使用JSON封裝格式。

先來說一下getblocktemplate遺留下來的幾個問題:

礦工驅動:在getblocktemplate協議里,依然是由礦工主動通過HTTP方式調用RPC介面向節點申請挖礦數據,這就意味著,網路最新區塊的變動無法及時告知礦工,造成算力損失。

數據負載:如上所述,如今正常的一次getblocktemplate調用節點都會反饋回1.5M左右的數據,其中主要數據是交易列表,礦工與礦池需頻繁交互數據,顯然不能每次分配工作都要給礦工附帶那麼多信息。再者巨大的內存需求將大大影響礦機性能,增加成本。

Stratum協議徹底解決了以上問題。

Stratum協議採用主動分配任務的方式,也就是說,礦池任何時候都可以給礦工指派新任務,對於礦工來說,如果收到礦池指派的新任務,應立即無條件轉向新任務;礦工也可以主動跟礦池申請新任務。

現在最核心的問題是如何讓礦工獲得更大的搜索空間,如果參照getwork協議,僅僅給礦工可以改變nNonce和nTime欄位,則交互的數據量很少,但這點搜索空間肯定是不夠的。想增加搜索空間,只能在hashMerkleroot下功夫,如果讓礦工自己構造coinbase,那麼搜索空間的問題將迎刃而解,但代價是必要要把區塊包含的所有交易都交給礦工,礦工才能構造交易列表的Merkleroot,這對於礦工來說壓力更大,對於礦池帶寬要求也更高。

Stratum協議巧妙解決了這個問題,成功實現既可以給礦工增加足夠的搜索空間,又只需要交互很少的數據量,這也是Stratum協議最具創新的地方。

再來回顧一下區塊頭的6個欄位80位元組,這個很關鍵,nVersion,nBits,hashPrevBlock這3個欄位是固定的,nNonce,nTime這兩個欄位是礦工現在就可以改變的。增加搜索空間只能從hashMerkleroot下手,這個繞不過去。Stratum協議讓礦工自己構造coinbase交易,coinbase的scriptSig欄位有很多位元組可以讓礦工自由填充,而coinbase的改動意味著hashMerkleroot的改變。從coinbase構造hashMerkleroot無需全部交易,

如上圖所示,假如區塊將包含13筆交易,礦池先對這13筆交易進行處理,最後只要把圖中的4個黑點(Hash值)交付給礦工,同時將構造coinbase需要的信息交付給礦工,礦工就可以自己構造hashMerkleroot(圖中的綠點都是礦工自行計算獲得,兩兩合並Hash時,規定下一個黑點代表的hash值總是放在右邊)

。按照這種方式,假如區塊包含N筆交易,礦池可以濃縮成log2(N)個hash值交付給礦工,這大大降低了礦池和礦工交互的數據量。

Stratum協議嚴格規定了礦工和礦池交互的介面數據結構和交互邏輯,具體如下:

1. 礦工訂閱任務

啟動挖礦機器,使用mining.subscribe方法鏈接礦池

返回數據很重要,礦工需本地記錄,在整個挖礦過程中都用到,其中:

Extranonce1,和 Extranonce2對於挖礦很重要,增加的搜索空間就在這里,現在,我們至少有了8個位元組的搜索空間,即nNonce的4個位元組,以及 Extranonce2的4個位元組。

2. 礦池授權

在礦池注冊一個賬號 ,添加礦工,礦池允許每個賬號任意添加礦工數,並取不同名字以區分。礦工使用mining.authorize方法申請授權,只有被礦池授權的礦工才能收到礦池指派任務。

3. 礦池分配任務

以上每個欄位信息都是必不可少,其中:

有了以上信息,再加上之前拿到的Extranonce1 和Extranonce2_size,就可以挖礦了。

4. 挖礦

1) 構造coinbase交易

用到的信息包括Coinb1, Extranonce1, Extranonce2_size 以及Coinb2,構造很簡單:

為啥可以這樣,因為礦池幫礦工做了很多工作,礦池已經構建了coinbase交易,系列化後在指定位置分割成coinb1和coinb2,coinb1和coinb2包含指定信息,比如coinb1包含區塊高度,coinb2包含了礦工的收益地址和收益額等信息,但是這些信息對於礦工來說無關緊要,礦工挖礦的地方只是Extranonce2 的4個位元組。另外Extranonce1是礦池寫入區塊的指定信息,一般來說,每個礦池會寫入自己礦池的信息,比如礦池名字或者域名,我們就是根據這個信息統計每個礦池在全網的算力比重。

2) 構建Merkleroot

利用coinbase和merkle_branch,按照上圖方式構造hashMerkleroot欄位。

3) 構建區塊頭

填充餘下的5個欄位,現在,礦池可以在nNonce和Extranonce2 里搜索進行挖礦,如果嫌搜索空間還不夠,只要增加Extranonce2_size為多幾個位元組就可輕而易舉解決。

5. 礦工提交工作量

當礦工找到一個符合難度的shares時,提交給礦池,提交的信息量很少,都是必不可少的欄位:

礦池拿到以上5個欄位後,首先根據任務號ID找出之前分配任務前存儲的信息(主要是構建的coinbase交易以及包含的交易列表等),然後重構區塊,再驗證shares難度,對於符合難度要求的shares,再檢測是否符合全網難度。

6. 礦池給礦工調節難度

礦池記錄每個礦工的難度,並根據shares率不斷調節以指定合適難度。礦池可以隨時通過mining.set_difficulty方法給礦工發消息另其改變難度。

如上,Stratum協議核心理念基本解析清楚,在getblocktemplate協議和Stratum協議的配合下,礦池終於可以大聲的對礦工說,讓算力來的更猛烈些吧。

I. 大白話淺顯地講講比特幣(一)

最近比特幣在馬首富的鼓搗下火的一塌糊塗,暴漲又暴跌,各路大佬紛紛出來談比特幣,評價及其分化極端,有人認為是21世紀人類最牛發明,未來人類的貨幣方向[看];有人認為是一坨X,旁氏騙局[暈]

比特幣是一大堆技術狂人搞出來的,幣圈也以技術男居多,充滿了各種術語和黑話。所以還真不太好理解。這個系列的幾篇文章里,我試圖用最淺顯的方式解釋一下比特幣大概的原理和功能。

有一家銀行成立於2010年,是眾多網民共同建起來的。但沒有一個國家的政府待見它,所以也沒有任何的政府牌照。它存不了任何一個國家的法定貨幣,例如人民幣、美元、英鎊這種真錢。類似於騰訊發了個Q幣,它自己發了個代幣叫B幣。這個銀行只能存B幣、取B幣、或者通過這個銀行,把裡面存的B幣轉到另外一個人在這個銀行里的賬戶。說白了,這家銀行自己發了個「假錢」自娛自樂。

相比別的傳統銀行,這個銀行有一些對客戶很好很有用的功能:

營業網路廣 :這個銀行完全開在網上,只要能上互聯網,就可以去它家存錢取錢和轉賬。

開戶零條件 :任何人,不需要任何的材料,只要能上網就可以去它那開戶,不用任何的身份證件,隨便開多少個賬戶都行,幾秒鍾就能開完。開完戶會給你一個賬戶號和密碼。憑著賬戶號和密碼就能取錢和轉賬。但這個密碼沒法改,而且如果密碼丟了,賬戶裡面的錢也找不回來了。

轉賬快,費用低 :通過銀行轉賬B幣很快,就算是全球范圍轉賬,十幾分鍾就能到賬,手續費很低,幾乎可以忽略。

完全匿名: 因為開戶不查身份證件,所以這個世界上只有你自己知道這個賬戶是你的。如果你不承認,沒有任何技術手段可以證明這個賬戶屬於你。比最牛X的瑞士銀行還要隱私。不可能出現瑞士銀行這種被迫交出客戶名單的情況。

不可凍結不可剝奪 :有密碼就有裡面的錢。只要你還記得賬戶的密碼,密碼也沒泄露給別人,就只有你自己可以操縱賬戶裡面的B幣。除非把你抓起來嚴刑拷打說出密碼,否則目前為止沒有任何技術上的手段能把裡面的錢凍結或者強行劃走,連世界上最牛逼的政府都不行。在這個銀行存錢有最強的安全感。

可想而知,完全匿名和不可凍結剝奪這兩功能太猛了,特別適合那些見不得光的生意,被zf不待見是必然的。所以B幣雖然自己認為是貨幣(currency),但沒有一個國家的zf承認它是個貨幣,只承認它是個虛擬資產(asset),就好比前段時間法院認為打 游戲 里的裝備也是值錢的一樣。


這個銀行是怎麼運作的?

首先這個銀行的數據不會存在一個地方,而是採用了「去中心化」的布局。

什麼是「中心化」?就是數據都會集中放到一個地方。傳統的銀行都是中心化的,傳統銀行的存款賬本是放到一個中央機房裡的。但這個銀行不受zf待見,不能這樣做,萬一機房被zf拔網線怎麼辦,所以採用了「去中心化」的方式,就是幾乎所有的分支點都有一份完整的數據,自動互相備份。就算是zf端掉任何一個點,也不會對正常的運作有影響。要癱瘓掉這個銀行的運作起碼得同時打掉這個銀行起碼一半以上的分支點,但銀行的分支點遍布全球數不勝數,除非關掉整個互聯網,否則這個任務是不可能的。

這個銀行沒有員工,即使zf要抓人也不知道抓誰。它的賬本數據更新是靠找一些臨時工進行記賬更新。

假設劉備是它的客戶,要給曹操轉1塊B幣。劉備轉完賬之後,把這個消息在網上廣播,很快大家就都知道了這事。銀行會找來一些臨時工,從中挑出一個人,這個人在銀行的賬本里記一筆:某年月日劉備給曹操轉賬一塊,然後把劉備的賬戶里的錢減掉1塊,把曹操的賬戶里的錢加上一塊。然後把這個更新完的賬本在網上廣播,很快銀行的分支點都隨著這個賬本更新自己的賬本,這個轉賬交易就算做完了。

通常來說銀行每隔十分鍾做一次更新賬本數據的工作。更新的賬本,起了個很帶 科技 感的名字,叫 區塊 (block);最新的賬本,會有個鏈接連到上一次更新的賬本上,上一次更新的賬本,又會再連到再上一次的賬本,這樣一直連到這個銀行剛誕生時的第一個賬本,所以這個結構叫 區塊鏈 (blockchain)。

這些臨時工也不是臨時找來的,他們一般都是坐在銀行門口專門等著來搶這個記賬的活。這么多人銀行選誰呢?靠出個難題,誰先把這個難題解決了就選誰。大概類似是這樣的:把這些人帶到一塊空地,偷偷在一個地方埋了個金塊,誰先找到這個金塊就把這記賬的活給誰。一般來說,找到這個金塊靠運氣,但力氣越大,能挖的地方越多,就越有機會找到這個金塊。銀行這個選人的流程稱為「 挖礦 」,這些人自黑自己是「礦工」。

最後銀行挑了一個人來記賬,當然這個人不是雷鋒,銀行會給這個人一點B幣作為礦工費,看起來像是這個人從這塊地里挖到了一點B幣,所以這個人就被稱為「挖到了礦」。當然了,只選一個,沒選上的礦工就沒錢,就白挖礦了。

一開始礦還是挺好挖的,礦工少,銀行大方,礦工都賺了錢。但越來越多人來挖礦,力氣大的人越來越多,而且銀行越來越扣,規定了每四年給的礦工費減半,所以現在挖礦越來越內卷,幾乎沒啥賺頭了。倒是有些機靈的人看到了商機,生產挖掘機,稱為「礦機」賣給礦工,賺了不少錢。

礦工挖到了礦就拿到了一些B幣,一開始銀行的用戶只有這些賺到B幣的礦工,後來有些沒挖礦的人覺得這個B幣挺好的,就在現實生活中給了礦工一些真錢,和礦工換B幣。慢慢的B幣就值錢了。還有人用十幾個B幣和披薩店換了兩個披薩。

B幣只能從挖礦得到的礦工費憑空生成,沒有別的渠道。所以一個人手上的B幣,要麼是挖到了礦得到的,要麼就是別人給他的,但追根溯源都是挖礦得到的。銀行規定了,挖礦能得到的B幣的總額是有上限的,一共是2100萬個,時至今日,已經有1800萬多個已經發出去了。

B幣有上限,而且換了B幣才能用這個銀行的各種牛X功能。越來越多的人拿著現實生活的錢來換B幣,現實生活的錢是慢慢貶值的,而B幣有稀缺性又有需求,所以慢慢的需要B幣能換到現實生活的錢就越來越多,升值了。有些人看到升值的前景就來投機炒賣B幣,也有人為了抵抗通貨膨脹買B幣,導致B幣的需求量指數級躍升,越來越值錢,神奇的10幾年漲了幾千萬倍,讓無數人看走了眼。

嗯,這個B幣,就是比特幣(BTC)。銀行其實是一個基於區塊鏈技術的比特幣演算法程序。

比特幣構思和演算法程序是由一個叫中本聰的人在2009年構造出來的。比特幣流行了之後,同樣的構思和演算法被一些人稍微改了一下,搭建了類似的「銀行」和類似的X幣,比如「以太坊」(ETH)、「瑞波幣」(XRP)等等等等,它們被統稱為加密貨幣(Cryptocurreny)。

熱點內容
trx40有多少個固態硬碟介面 發布:2025-09-11 02:50:01 瀏覽:377
韓國元宇宙娛樂公司 發布:2025-09-11 02:48:44 瀏覽:180
以太坊公有鏈創建 發布:2025-09-11 02:48:43 瀏覽:1000
只有btc密鑰 發布:2025-09-11 02:47:48 瀏覽:825
迅雷區塊鏈落地項目 發布:2025-09-11 02:47:10 瀏覽:945
usdt資產擔保率 發布:2025-09-11 02:45:46 瀏覽:415
宇宙中的二元論 發布:2025-09-11 02:17:03 瀏覽:741
區塊鏈版權應用公司 發布:2025-09-11 02:10:38 瀏覽:70
跑usdt一天收入多少 發布:2025-09-11 02:05:38 瀏覽:389
目前有沒有跟比特幣一樣的 發布:2025-09-11 02:05:36 瀏覽:363