當前位置:首頁 » 比特幣問答 » 如何添加btc節點

如何添加btc節點

發布時間: 2023-03-05 11:01:44

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

原文: 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 文件中看到有沒有成功接收區塊,如果你看到如下的信息:

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

㈡ 比特幣使用教程

比特幣是一種建立在全球網路上的貨幣。
比特幣是一種沒有央行參與發行的,總量固定的數字貨幣
比特幣建立在全球的P2P網路上。
全球無數的P2P節點全天候的在維護著比特幣的網路。
英文:bitcoin 貨幣符號: 英文縮寫:BTC或 XBT。

維基網路對比特幣的介紹:

Bitcoin與傳統貨幣不同,比特幣運行機制不依賴中央銀行、政府、企業的支持或者信用擔保,而是依賴對等網路中種子文件達成的網路協議,去中心化、自我完善的貨幣體制,理論上確保了任何人、機構、或政府都不可能操控比特幣的貨幣總量,或者製造通貨膨脹。它的貨幣總量按照設計預定的速率逐步增加,增加速度逐步放緩,並最終在2140年達到2100萬個的極限。

為什麼要使用比特幣?

全球交易暢通無阻。
比特幣費用低廉。
比特幣易於攜帶,在全球范圍內交易暢通無阻,全世界很多地方都接受比特幣。
去中心化。
比特幣的發行由整個P2P網路完成,不受任何組織和個人控制,是一個完全去中心化的貨幣系統。
比特幣的發行數量是固定的,不會因通脹而貶值,就像黃金一樣。

如何使用比特幣錢包?

我們從三個方面來說明這個問題。

一:什麼是比特幣錢包?

簡單來說,比特幣錢包可以讓你和整個世界進行交易。利用比特幣錢包中生成的比特幣地址你可以接收來自他人的比特幣,你也可以將你帳戶上的比特幣轉到他人的比特幣地址上面。比特幣地址就像銀行卡號一樣,你只有知道別人的比特幣地址才能進行比特幣轉賬。比特幣錢包中保存著你自己的所有比特幣地址和私鑰信息。
二:什麼是比特幣地址和私鑰?

比特幣地址和私鑰是成對出現的,他們的關系就像銀行卡號和密碼。比特幣地址就像銀行卡號一樣用來記錄你在該地址上存有多少比特幣。你可以隨意的生成比特幣地址來存放比特幣。每個比特幣地址在生成時,都會有一個相對應的該地址的私鑰被生成出來。這個私鑰可以證明你對該地址上的比特幣具有所有權。我們可以簡單的把比特幣地址理解成為銀行卡號,該地址的私鑰理解成為所對應銀行卡號的密碼。只有你在知道銀行密碼的情況下才能使用銀行卡號上的錢。所以,在使用比特幣錢包時請保存好你的地址和私鑰。

三:比特幣地址和私鑰的格式

比特幣地址是一段由數學演算法生成的二十七到三十四位長度的字元串,一般以數字「1」或者「3」開頭。每個比特幣地址都對應著一個比特幣私鑰。比特幣私鑰亦是由一串字元組成,一般以數字「5」開頭。私鑰保證了你對該比特幣地址上比特幣的所有權。比特幣私鑰有不同的格式,詳細資料讀者可參見下面的基礎教學內容。

請注意

比特幣的私鑰可以生成該私鑰對應的比特幣地址,但是比特幣地址不能計算出該地址所對應的私鑰。因此,假如你忘記了私鑰而只記得比特幣地址,那麼該地址上的比特幣便不屬於你了。所以,一定要備份好比特幣錢包,保護好私鑰。如何生成比特幣地址和私鑰呢?你可以用比特幣錢包來生成任意數量的地址和私鑰。當然,也有離線生成比特幣地址和私鑰的比特幣錢包工具(關於錢包的概念詳見後面的基礎教學)。
比特幣錢包的種類有哪些?

比特幣常用的錢包有三種:軟體錢包、手機錢包、在線錢包。

軟體錢包:通常指可以在本地機子上運行的比特幣客戶端。使用軟體錢包是最安全的保護你比特幣的方式。
手機錢包:只裝在手機上的比特幣錢包,用手機錢包你可以隨時隨地的使用比特幣。
在線網路錢包:讓你可以在任何地方使用比特幣,在線服務提供商幫助你保護你的比特幣安全。但是值得注意的是,你要仔細謹慎的選擇你的在線錢包提供商。

常用軟體錢包介紹:

①Bitcoin-Qt:
是最早的比特幣客戶端,比特幣初期的骨幹網路就是建立在它上面的。它提供了最高級別的安全性,隱私性和穩定性。然而,它具有的功能並不多。

②Multibit:
是一個輕量級的客戶端。Multibit專注於便捷和易用。它與網路同步是在幾分鍾內就可以使用。Multibit還支持多語言。對於非技術用戶,這是一個不錯的選擇。

③Electrum:
和Multibit類似,Electrum是一款基於SPV原理的比特幣錢包軟體客戶端,它能在幾分鍾之內完成同步。不同的是Electrum採用了和Bitcoin-qt和Multibit不同錢包的找零機制,所有的比特幣私鑰都由安全密碼種子生成,因此他的安全性更高。Electrum適合對比特幣技術原理已經有一定了解的玩家使用。

④Armory:
Armory客戶端是運行於Bitcoin-Qt客戶端之上的高級比特幣客戶端,為高級用戶提供了更多的擴展功能,其中包括了很多關於備份和加密的功能,以及非常安全的線下冷存儲。和Electrum一樣,Armory適合對比特幣有一定了解的用戶使用。

常用的手機錢包介紹:

Bitcoin Wallet:

Bitcoin Wallet可以在Googleandroid商店找到。它是一個輕量級的移動客戶端,支持Android和黑莓系統。這個客戶端並不需要在線才能工作。它支持QR碼(二維碼)掃描和NFC(近距離無線通信)。

常用的在線錢包介紹:

①Blockchain:
Blockchain是最早的比特幣在線錢包提供商,它提供的功能最多,也非常可靠。您可以用它在全球免費付款。它支持在手機上或個電腦上使用。

②P2PBUCKS:
提示:為保證安全,Blockchain.info在線錢包的用戶請使用GoogleAuthenticator或Yubikey等雙因子認證方式登陸。 並定時從Blockchain上下載自己的錢包備份到本地電腦。
我是在 完美生活 衛星號上看到這篇文章哦,詳細的你可以去關注一下:funinusa

㈢ 比特幣的測試網路

Satoshi Nakamoto創建了主要的比特幣區塊鏈,創世區塊所在的主鏈網路,被稱為主網。還有其他測試目的的比特幣鏈:
現存的有testnet,segnet和regtest。

testnet是一個功能齊全的在線P2P網路,包括錢包,測試比特幣(testnet幣),挖礦以及類似主網的所有其他功能。
實際上和主網只有兩個區別:testnet幣是沒人認可其價值的,挖礦難度比較低,這樣可以歡快的使用testnet幣。

那些想跟比特幣主網進行交互的開發軟體,都可以現在testnet上進行測試,這樣好處實在太明顯了。

testnet3是目前的測試網路版本,因為從創世區塊重新開始跑已經出現了三次,這個網路也比較龐大,也有幾十個G。

進行testnet全節點挖礦需要准備好硬碟。如果是啟動testnet,而不是主網啟動,可以使用如下命令:

然後可以使用bitcoin-cli命令行工具,但是要切換到testnet模式:

testnet3支持主網的所有功能,包括在主網路上尚未激活的Segregated Witness,因此testnet3也可以用於測試隔離見證功能。

這樣一個隔離測試網路,用來幫助開發和測試隔離見證(segwit)。該測試區塊鏈稱為segnet,可以通過運行Bitcoin Core的特殊版本來連接。

由於將segwit添加到testnet3中,因此後面不再使用segnet來測試segwit功能。

Regtest代表回歸測試,是一種比特幣核心功能,允許用戶創建本地區塊鏈以進行測試。
與testnet3不同,regtest區塊鏈旨在作為本地測試的封閉系統運行。所以可以從創世區塊開始,啟動regtest鏈,創建一個本地的創世區塊。

可以將其他節點添加到網路中,或者使用單個節點運行來測試Bitcoin Core軟體。

要在regtest模式下啟動Bitcoin Core,可以使用regtest標志:

可以在開發比特幣核心,全節點共識客戶端,錢包,交易所等,甚至是智能合約和復雜的腳本等,都可以用測試網路進行開發。

㈣ 比特幣節點是什麼

那麼在說說節點是什麼?
節點是區塊鏈分布式賬本系統中的網路節點,通過網路連接伺服器、計算機等設備,不同性質的區塊鏈,成為節點的方式也不同,比如,比特幣是參與交易和挖礦,EOS是參與競選成為節點。
下面要說的就是什麼是比特幣全節點。
比特幣全節點就是通過載入比特幣比特幣客戶端(包括 BitcoinUnlimited版和bitcoincore版等), 下載並保全完整區塊鏈數據的節點。
因為區塊鏈交易網路的擁堵,作者通過調整廣播通信、信息加密解密、共識機制、交易驗證機制來解決問題,在整個比特幣的網路中,從礦工到普通用戶都可以看作是比特幣網路中的一個節點,但是因為比特幣具有多中心化的特點,在整個網路中其重要作用的是「比特幣全節點。」

㈤ btc-lighting怎麼用

BTC-lighting是一種先進的比特幣交易方法,可用於構建去中心化比特幣應用。它可以提供更快的、低成本的比特幣交易。它利用了Lightning Network的可擴展性和靈活性來實現安全並且節約成本的比特幣交易網路。使用btc lightning,用戶可以快速傳輸較小比特幣金額,而不必受到傳統比特幣網路的高費用和慢速交易的限制。 要使用BTC Lighting,用戶必須首先安裝支持Lightning網路的比特幣錢包。然後,用戶可以連接到Lightning網路,並且可以收發比特幣。要啟動Lightning Network,用戶需要新建一個支付通道,在兩個節點之間處理比特幣交易,以此來建立可信賴的支付通道。隨後,用戶可以使用Lightning Network來進行比特幣交易,並獲得更快的、低成本的比特幣交易服務。

㈥ 求教,比特幣錢包怎麼與php建立連接

節點軟體bitcoind除了完整實現比特幣的核心協議,還包含了一個可選但是重要 的功能模塊 —— 錢包:

可以把錢包視為保存著你所有密鑰與地址的保險箱,同時也封裝了比特幣很多 偏技術性的概念與細節,使其可以被極客之外的人群所理解和接受。因此在默認 配置下,bitcoind會啟用節點錢包。如果你希望禁止錢包功能,例如你准備自己 管理密鑰與地址,那麼可以在配置文件中設置disablewallet選項:

disablewallet=1

錢包模塊會跟蹤其管理的所有地址相關的交易,因此可以及時地更新錢包的余額信息。 這一功能非常重要,因為比特幣中沒有賬戶的概念,比特幣是散落在一個個交易 中的電子現金,如果沒有錢包幫助跟蹤與我們地址相關的交易,那麼想算清楚自己 總共持有多少個比特幣都很困難。

節點提供的很多RPC調用都是由錢包模塊來實現的。例如,當我們調用getnewaddress命令時,就是由錢包模塊來生成密鑰和地址並自動加入到錢包中, 因此其相關的交易也會自動地影響錢包的余額。同樣,當我們調用getbalance時, 也是由錢包模塊來匯總所有地址上的比特幣並返回總金額。

以上內容摘抄自:比特幣開發教程

㈦ 比特幣挖礦如何提高效率

目前全網P2POOL節點礦池算力是20T左右,但是實際利用率僅有10-15T算力,浪費了很多算力。
全網的算力以及出塊情況在這里看http://www.taobtc.net/
算力被浪費了很多,造成這個原因還的從P2POOL礦池的結構說起,P2POOL節點礦池會根據工人挖礦設備的算力自動調節礦池的難度,而這個過程是相當快的,幾分鍾就會調整一次難度,導致挖礦的設備很容易報錯,就是產生大量的R,效率降低。而P2POOL礦池是PPLNS模式,需要提交一個有效的SHARE,才會有有收益,提交有效SHARE後,24小時內產生的塊你都可以分到。有效SHARE的難度比較大,在我的池子里反應出來的是1G的算力根本挖不到有效SHARE。
如何提高P2POOL礦池的效率呢?

1.首先作為節點礦池,礦池建設的本身需要添加節點文件,顯示在比特幣錢包下方的連接數,增加節點後連接數能達到幾十個連接甚至更多,要看你添加的節點有多少,有效減少無效的SHARE。
2.礦工需要固定挖礦設備的算力難度,要怎麼做呢?在你的挖礦設備啟動bat裡面設置即可。
比如你的單個挖礦設備是10G,你就在bat文件里,用戶名(既錢包地址)後面加
/1000+10。比如我的bat里
-u
/1000+10
-p
1,這是什麼意思呢?意思就是說你的這個設備是10G算力,你在P2POOL礦池挖礦使用固定難度10G的難度。如果你是1G的設備就在後面寫/1000+1,這樣難度就固定了,有效提高了設備效率。

㈧ 詳解比特幣挖礦原理

可以將區塊鏈看作一本記錄所有交易的公開總帳簿(列表),比特幣網路中的每個參與者都把它看作一本所有權的權威記錄。

比特幣沒有中心機構,幾乎所有的完整節點都有一份公共總帳的備份,這份總帳可以被視為認證過的記錄。

至今為止,在主幹區塊鏈上,沒有發生一起成功的攻擊,一次都沒有。

通過創造出新區塊,比特幣以一個確定的但不斷減慢的速率被鑄造出來。大約每十分鍾產生一個新區塊,每一個新區塊都伴隨著一定數量從無到有的全新比特幣。每開采210,000個塊,大約耗時4年,貨幣發行速率降低50%。

在2016年的某個時刻,在第420,000個區塊被「挖掘」出來之後降低到12.5比特幣/區塊。在第13,230,000個區塊(大概在2137年被挖出)之前,新幣的發行速度會以指數形式進行64次「二等分」。到那時每區塊發行比特幣數量變為比特幣的最小貨幣單位——1聰。最終,在經過1,344萬個區塊之後,所有的共20,999,999.9769億聰比特幣將全部發行完畢。換句話說, 到2140年左右,會存在接近2,100萬比特幣。在那之後,新的區塊不再包含比特幣獎勵,礦工的收益全部來自交易費。

在收到交易後,每一個節點都會在全網廣播前對這些交易進行校驗,並以接收時的相應順序,為有效的新交易建立一個池(交易池)。

每一個節點在校驗每一筆交易時,都需要對照一個長長的標准列表:

交易的語法和數據結構必須正確。

輸入與輸出列表都不能為空。

交易的位元組大小是小於MAX_BLOCK_SIZE的。

每一個輸出值,以及總量,必須在規定值的范圍內 (小於2,100萬個幣,大於0)。

沒有哈希等於0,N等於-1的輸入(coinbase交易不應當被中繼)。

nLockTime是小於或等於INT_MAX的。

交易的位元組大小是大於或等於100的。

交易中的簽名數量應小於簽名操作數量上限。

解鎖腳本(Sig)只能夠將數字壓入棧中,並且鎖定腳本(Pubkey)必須要符合isStandard的格式 (該格式將會拒絕非標准交易)。

池中或位於主分支區塊中的一個匹配交易必須是存在的。

對於每一個輸入,如果引用的輸出存在於池中任何的交易,該交易將被拒絕。

對於每一個輸入,在主分支和交易池中尋找引用的輸出交易。如果輸出交易缺少任何一個輸入,該交易將成為一個孤立的交易。如果與其匹配的交易還沒有出現在池中,那麼將被加入到孤立交易池中。

對於每一個輸入,如果引用的輸出交易是一個coinbase輸出,該輸入必須至少獲得COINBASE_MATURITY (100)個確認。

對於每一個輸入,引用的輸出是必須存在的,並且沒有被花費。

使用引用的輸出交易獲得輸入值,並檢查每一個輸入值和總值是否在規定值的范圍內 (小於2100萬個幣,大於0)。

如果輸入值的總和小於輸出值的總和,交易將被中止。

如果交易費用太低以至於無法進入一個空的區塊,交易將被拒絕。

每一個輸入的解鎖腳本必須依據相應輸出的鎖定腳本來驗證。

以下挖礦節點取名為 A挖礦節點

挖礦節點時刻監聽著傳播到比特幣網路的新區塊。而這些新加入的區塊對挖礦節點有著特殊的意義。礦工間的競爭以新區塊的傳播而結束,如同宣布誰是最後的贏家。對於礦工們來說,獲得一個新區塊意味著某個參與者贏了,而他們則輸了這場競爭。然而,一輪競爭的結束也代表著下一輪競爭的開始。

驗證交易後,比特幣節點會將這些交易添加到自己的內存池中。內存池也稱作交易池,用來暫存尚未被加入到區塊的交易記錄。

A節點需要為內存池中的每筆交易分配一個優先順序,並選擇較高優先順序的交易記錄來構建候選區塊。

一個交易想要成為「較高優先順序」,需滿足的條件:優先值大於57,600,000,這個值的生成依賴於3個參數:一個比特幣(即1億聰),年齡為一天(144個區塊),交易的大小為250個位元組:

High Priority > 100,000,000 satoshis * 144 blocks / 250 bytes = 57,600,000

區塊中用來存儲交易的前50K位元組是保留給較高優先順序交易的。 節點在填充這50K位元組的時候,會優先考慮這些最高優先順序的交易,不管它們是否包含了礦工費。這種機制使得高優先順序交易即便是零礦工費,也可以優先被處理。

然後,A挖礦節點會選出那些包含最小礦工費的交易,並按照「每千位元組礦工費」進行排序,優先選擇礦工費高的交易來填充剩下的區塊。

如區塊中仍有剩餘空間,A挖礦節點可以選擇那些不含礦工費的交易。有些礦工會竭盡全力將那些不含礦工費的交易整合到區塊中,而其他礦工也許會選擇忽略這些交易。

在區塊被填滿後,內存池中的剩餘交易會成為下一個區塊的候選交易。因為這些交易還留在內存池中,所以隨著新的區塊被加到鏈上,這些交易輸入時所引用UTXO的深度(即交易「塊齡」)也會隨著變大。由於交易的優先值取決於它交易輸入的「塊齡」,所以這個交易的優先值也就隨之增長了。最後,一個零礦工費交易的優先值就有可能會滿足高優先順序的門檻,被免費地打包進區塊。

UTXO(Unspent Transaction Output) : 每筆交易都有若干交易輸入,也就是資金來源,也都有若干筆交易輸出,也就是資金去向。一般來說,每一筆交易都要花費(spend)一筆輸入,產生一筆輸出,而其所產生的輸出,就是「未花費過的交易輸出」,也就是 UTXO。

塊齡:UTXO的「塊齡」是自該UTXO被記錄到區塊鏈為止所經歷過的區塊數,即這個UTXO在區塊鏈中的深度。

區塊中的第一筆交易是筆特殊交易,稱為創幣交易或者coinbase交易。這個交易是由挖礦節點構造並用來獎勵礦工們所做的貢獻的。假設此時一個區塊的獎勵是25比特幣,A挖礦的節點會創建「向A的地址支付25.1個比特幣(包含礦工費0.1個比特幣)」這樣一個交易,把生成交易的獎勵發送到自己的錢包。A挖出區塊獲得的獎勵金額是coinbase獎勵(25個全新的比特幣)和區塊中全部交易礦工費的總和。

A節點已經構建了一個候選區塊,那麼就輪到A的礦機對這個新區塊進行「挖掘」,求解工作量證明演算法以使這個區塊有效。比特幣挖礦過程使用的是SHA256哈希函數。

用最簡單的術語來說, 挖礦節點不斷重復進行嘗試,直到它找到的隨機調整數使得產生的哈希值低於某個特定的目標。 哈希函數的結果無法提前得知,也沒有能得到一個特定哈希值的模式。舉個例子,你一個人在屋裡打檯球,白球從A點到達B點,但是一個人推門進來看到白球在B點,卻無論如何是不知道如何從A到B的。哈希函數的這個特性意味著:得到哈希值的唯一方法是不斷的嘗試,每次隨機修改輸入,直到出現適當的哈希值。

需要以下參數

• block的版本 version

• 上一個block的hash值: prev_hash

• 需要寫入的交易記錄的hash樹的值: merkle_root

• 更新時間: ntime

• 當前難度: nbits

挖礦的過程就是找到x使得

SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET

上式的x的范圍是0~2^32, TARGET可以根據當前難度求出的。

簡單打個比方,想像人們不斷扔一對色子以得到小於一個特定點數的游戲。第一局,目標是12。只要你不扔出兩個6,你就會贏。然後下一局目標為11。玩家只能扔10或更小的點數才能贏,不過也很簡單。假如幾局之後目標降低為了5。現在有一半機率以上扔出來的色子加起來點數會超過5,因此無效。隨著目標越來越小,要想贏的話,扔色子的次數會指數級的上升。最終當目標為2時(最小可能點數),只有一個人平均扔36次或2%扔的次數中,他才能贏。

如前所述,目標決定了難度,進而影響求解工作量證明演算法所需要的時間。那麼問題來了:為什麼這個難度值是可調整的?由誰來調整?如何調整?

比特幣的區塊平均每10分鍾生成一個。這就是比特幣的心跳,是貨幣發行速率和交易達成速度的基礎。不僅是在短期內,而是在幾十年內它都必須要保持恆定。在此期間,計算機性能將飛速提升。此外,參與挖礦的人和計算機也會不斷變化。為了能讓新區塊的保持10分鍾一個的產生速率,挖礦的難度必須根據這些變化進行調整。事實上,難度是一個動態的參數,會定期調整以達到每10分鍾一個新區塊的目標。簡單地說,難度被設定在,無論挖礦能力如何,新區塊產生速率都保持在10分鍾一個。

那麼,在一個完全去中心化的網路中,這樣的調整是如何做到的呢?難度的調整是在每個完整節點中獨立自動發生的。每2,016個區塊(2周產生的區塊)中的所有節點都會調整難度。難度的調整公式是由最新2,016個區塊的花費時長與20,160分鍾(兩周,即這些區塊以10分鍾一個速率所期望花費的時長)比較得出的。難度是根據實際時長與期望時長的比值進行相應調整的(或變難或變易)。簡單來說,如果網路發現區塊產生速率比10分鍾要快時會增加難度。如果發現比10分鍾慢時則降低難度。

為了防止難度的變化過快,每個周期的調整幅度必須小於一個因子(值為4)。如果要調整的幅度大於4倍,則按4倍調整。由於在下一個2,016區塊的周期不平衡的情況會繼續存在,所以進一步的難度調整會在下一周期進行。因此平衡哈希計算能力和難度的巨大差異有可能需要花費幾個2,016區塊周期才會完成。

舉個例子,當前A節點在挖277,316個區塊,A挖礦節點一旦完成計算,立刻將這個區塊發給它的所有相鄰節點。這些節點在接收並驗證這個新區塊後,也會繼續傳播此區塊。當這個新區塊在網路中擴散時,每個節點都會將它作為第277,316個區塊(父區塊為277,315)加到自身節點的區塊鏈副本中。當挖礦節點收到並驗證了這個新區塊後,它們會放棄之前對構建這個相同高度區塊的計算,並立即開始計算區塊鏈中下一個區塊的工作。

比特幣共識機制的第三步是通過網路中的每個節點獨立校驗每個新區塊。當新區塊在網路中傳播時,每一個節點在將它轉發到其節點之前,會進行一系列的測試去驗證它。這確保了只有有效的區塊會在網路中傳播。

每一個節點對每一個新區塊的獨立校驗,確保了礦工無法欺詐。在前面的章節中,我們看到了礦工們如何去記錄一筆交易,以獲得在此區塊中創造的新比特幣和交易費。為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?這是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒絕,因此,該交易就不會成為總賬的一部分。

比特幣去中心化的共識機制的最後一步是將區塊集合至有最大工作量證明的鏈中。一旦一個節點驗證了一個新的區塊,它將嘗試將新的區塊連接到到現存的區塊鏈,將它們組裝起來。

節點維護三種區塊:

· 第一種是連接到主鏈上的,

· 第二種是從主鏈上產生分支的(備用鏈),

· 第三種是在已知鏈中沒有找到已知父區塊的。

有時候,新區塊所延長的區塊鏈並不是主鏈,這一點我們將在下面「 區塊鏈分叉」中看到。

如果節點收到了一個有效的區塊,而在現有的區塊鏈中卻未找到它的父區塊,那麼這個區塊被認為是「孤塊」。孤塊會被保存在孤塊池中,直到它們的父區塊被節點收到。一旦收到了父區塊並且將其連接到現有區塊鏈上,節點就會將孤塊從孤塊池中取出,並且連接到它的父區塊,讓它作為區塊鏈的一部分。當兩個區塊在很短的時間間隔內被挖出來,節點有可能會以相反的順序接收到它們,這個時候孤塊現象就會出現。

選擇了最大難度的區塊鏈後,所有的節點最終在全網范圍內達成共識。隨著更多的工作量證明被添加到鏈中,鏈的暫時性差異最終會得到解決。挖礦節點通過「投票」來選擇它們想要延長的區塊鏈,當它們挖出一個新塊並且延長了一個鏈,新塊本身就代表它們的投票。

因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈視角。解決的辦法是, 每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就是最長的或最大累計難度的鏈。

當有兩個候選區塊同時想要延長最長區塊鏈時,分叉事件就會發生。正常情況下,分叉發生在兩名礦工在較短的時間內,各自都算得了工作量證明解的時候。兩個礦工在各自的候選區塊一發現解,便立即傳播自己的「獲勝」區塊到網路中,先是傳播給鄰近的節點而後傳播到整個網路。每個收到有效區塊的節點都會將其並入並延長區塊鏈。如果該節點在隨後又收到了另一個候選區塊,而這個區塊又擁有同樣父區塊,那麼節點會將這個區塊連接到候選鏈上。其結果是,一些節點收到了一個候選區塊,而另一些節點收到了另一個候選區塊,這時兩個不同版本的區塊鏈就出現了。

分叉之前

分叉開始

我們看到兩個礦工幾乎同時挖到了兩個不同的區塊。為了便於跟蹤這個分叉事件,我們設定有一個被標記為紅色的、來自加拿大的區塊,還有一個被標記為綠色的、來自澳大利亞的區塊。

假設有這樣一種情況,一個在加拿大的礦工發現了「紅色」區塊的工作量證明解,在「藍色」的父區塊上延長了塊鏈。幾乎同一時刻,一個澳大利亞的礦工找到了「綠色」區塊的解,也延長了「藍色」區塊。那麼現在我們就有了兩個區塊:一個是源於加拿大的「紅色」區塊;另一個是源於澳大利亞的「綠色」。這兩個區塊都是有效的,均包含有效的工作量證明解並延長同一個父區塊。這個兩個區塊可能包含了幾乎相同的交易,只是在交易的排序上有些許不同。

比特幣網路中鄰近(網路拓撲上的鄰近,而非地理上的)加拿大的節點會首先收到「紅色」區塊,並建立一個最大累計難度的區塊,「紅色」區塊為這個鏈的最後一個區塊(藍色-紅色),同時忽略晚一些到達的「綠色」區塊。相比之下,離澳大利亞更近的節點會判定「綠色」區塊勝出,並以它為最後一個區塊來延長區塊鏈(藍色-綠色),忽略晚幾秒到達的「紅色」區塊。那些首先收到「紅色」區塊的節點,會即刻以這個區塊為父區塊來產生新的候選區塊,並嘗試尋找這個候選區塊的工作量證明解。同樣地,接受「綠色」區塊的節點會以這個區塊為鏈的頂點開始生成新塊,延長這個鏈。

分叉問題幾乎總是在一個區塊內就被解決了。網路中的一部分算力專注於「紅色」區塊為父區塊,在其之上建立新的區塊;另一部分算力則專注在「綠色」區塊上。即便算力在這兩個陣營中平均分配,也總有一個陣營搶在另一個陣營前發現工作量證明解並將其傳播出去。在這個例子中我們可以打個比方,假如工作在「綠色」區塊上的礦工找到了一個「粉色」區塊延長了區塊鏈(藍色-綠色-粉色),他們會立刻傳播這個新區塊,整個網路會都會認為這個區塊是有效的,如上圖所示。

所有在上一輪選擇「綠色」區塊為勝出者的節點會直接將這條鏈延長一個區塊。然而,那些選擇「紅色」區塊為勝出者的節點現在會看到兩個鏈: 「藍色-綠色-粉色」和「藍色-紅色」。 如上圖所示,這些節點會根據結果將 「藍色-綠色-粉色」 這條鏈設置為主鏈,將 「藍色-紅色」 這條鏈設置為備用鏈。 這些節點接納了新的更長的鏈,被迫改變了原有對區塊鏈的觀點,這就叫做鏈的重新共識 。因為「紅」區塊做為父區塊已經不在最長鏈上,導致了他們的候選區塊已經成為了「孤塊」,所以現在任何原本想要在「藍色-紅色」鏈上延長區塊鏈的礦工都會停下來。全網將 「藍色-綠色-粉色」 這條鏈識別為主鏈,「粉色」區塊為這條鏈的最後一個區塊。全部礦工立刻將他們產生的候選區塊的父區塊切換為「粉色」,來延長「藍色-綠色-粉色」這條鏈。

從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。

比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。

㈨ 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

㈩ 比特幣普通電腦挖礦不要經過礦池要怎麼挖

全網的算力以及出塊情況可以到淘比特http://www.taobtc.net/看
1.首先作為節點礦池,礦池建設的本身需要添加節點文件,顯示在比特幣錢包下方的連接數,增加節點後連接數能達到幾十個連接甚至更多,要看你添加的節點有多少,有效減少無效的share。
2.礦工需要固定挖礦設備的算力難度,要怎麼做呢?在你的挖礦設備啟動bat裡面設置即可。
比如你的單個挖礦設備是10g,你就在bat文件里,用戶名(既錢包地址)後面加/1000+10。比如我的bat里-/1000+10-p1,這是什麼意思呢?意思就是說你的這個設備是10g算力,你在p2pool礦池挖礦使用固定難度10g的難度。如果你是1g的設備就在後面寫/1000+1,這樣難度就固定了,有效提高了設備效率。

熱點內容
區塊鏈虛擬幣開發者怎麼賺錢 發布:2025-06-16 08:30:44 瀏覽:308
usdtomni與trc20有什麼區別 發布:2025-06-16 08:04:27 瀏覽:54
區塊鏈多空一手多少錢 發布:2025-06-16 08:03:00 瀏覽:23
區塊鏈大數據可視化 發布:2025-06-16 07:44:05 瀏覽:475
今年的幣圈還可以玩嗎 發布:2025-06-16 07:39:27 瀏覽:733
比特幣分析師0失誤 發布:2025-06-16 07:33:43 瀏覽:813
以太區塊鏈養成游戲 發布:2025-06-16 07:19:03 瀏覽:643
比特幣8年暴漲 發布:2025-06-16 07:04:30 瀏覽:10
比特幣會有多值錢 發布:2025-06-16 06:34:20 瀏覽:343
博鰲亞洲區塊鏈組委會 發布:2025-06-16 06:26:29 瀏覽:113