當前位置:首頁 » 挖礦知識 » mass的全節點挖礦

mass的全節點挖礦

發布時間: 2022-09-12 18:10:28

比特幣礦池的協議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協議的配合下,礦池終於可以大聲的對礦工說,讓算力來的更猛烈些吧。

Ⅱ 什麼是挖礦

挖礦就是利用比特幣挖礦機,就是用於賺取比特幣。

用戶用個人計算機下載軟體然後運行特定演算法,與遠方伺服器通訊後可得到相應比特幣,是獲取比特幣的方式之一。

比特幣為一種虛擬的貨幣,比特幣挖礦制度為通過計算機硬體為比特幣網路開展數學運算的過程,提供服務的礦工可以得到一筆報酬,因為網路報酬依據礦工完成的任務來計算,為此挖礦的競爭十分激烈。

挖礦實際是性能的競爭、裝備的競爭,由非常多張顯卡組成的挖礦機,哪怕只是HD6770這種中低端顯卡,「組團」之後的運算能力還是能夠超越大部分用戶的單張顯卡的。

而且這還不是最可怕的,有些挖礦機是更多這樣的顯卡陣列組成的,數十乃至過百的顯卡一起來,顯卡本身也是要錢的,算上硬體價格等各種成本,挖礦存在相當大的支出。

(2)mass的全節點挖礦擴展閱讀:

比特幣挖礦流程:

1、找到礦池

開始挖礦必須要有一個操作方便、產出穩定的礦池,它的作用就是為各個終端細分數據包,可以通過精密的演算法將終端計算好的數據包按照比例,支付相應數量的比特幣。

2、下載比特幣挖礦器(軟體)

其實這種挖礦器也有很多種,大家可以去官方網站下載。

3、設置挖礦軟體

GUIMiner是個綠色軟體,安裝完成後我們可以先設置下語言,以便更方便進一步設置。接下來需要對采礦器設置伺服器、用戶名、密碼、設備等。一般伺服器從BTC guild系列裡面選一個網路較好的就行,用戶名和密碼就是我們之前自己設置的。

4、比特幣挖礦開始

當我們確認都設定無誤後,點「開始挖礦」按鈕之後就開始挖比特幣了,隨之顯卡很快就會進入全速運行狀態,溫度升高、風扇轉速提高,你可以通過GPU-Z或顯卡驅動來監控狀態。

Ⅲ 墨客moac的底層的挖礦收益是怎麼樣的

底層採用POW的挖礦方式,大多數礦工會採用GPU來參與挖礦,參與挖礦的節點成為v-node節點,所有的礦工提供工作量證明,以獲得每個block??2個MOAC的獎勵,挖礦的獎勵會周期性的遞減。預計每2年會減半,同時礦工會獲得每個交易的gas fee。全局合約的調用費用特意的設置地比較高,以鼓勵DAPP合約的調用盡可能的採用子鏈及分片的方式。

Ⅳ 比特幣之挖礦與共識(二)

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

獨立校驗還確保了誠實 的礦工生成的區塊可以被納入到區塊鏈中,從而獲得獎勵。行為不誠實的礦工所產生的區塊將被拒絕,這不但使他們失 去了獎勵,而且也浪費了本來可以去尋找工作量證明解的機會,因而導致其電費虧損。

當一個節點接收到一個新的區塊,它將對照一個長長的標准清單對該區塊進行驗證,若沒有通過驗證,這個區塊將被拒 絕。這些標准可以在比特幣核心客戶端的CheckBlock函數和CheckBlockHead函數中獲得

它包括:

為什麼礦工不為他們自己記錄一筆交易去獲得數以千計的比特幣?

這 是因為每一個節點根據相同的規則對區塊進行校驗。一個無效的coinbase交易將使整個區塊無效,這將導致該區塊被拒 絕,因此,該交易就不會成為總賬的一部分。礦工們必須構建一個完美的區塊,基於所有節點共享的規則,並且根據正 確工作量證明的解決方案進行挖礦,他們要花費大量的電力挖礦才能做到這一點。如果他們作弊,所有的電力和努力都 會浪費。這就是為什麼獨立校驗是去中心化共識的重要組成部分。

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

節點維護三種區塊:第一種是連接到主鏈上的,第二種是從主鏈上產生分支的(備用鏈),最後一種是在已知鏈中沒有 找到已知父區塊的。在驗證過程中,一旦發現有不符合標準的地方,驗證就會失敗,這樣區塊會被節點拒絕,所以也不 會加入到任何一條鏈中。

任何時候,主鏈都是累計了最多難度的區塊鏈。在一般情況下,主鏈也是包含最多區塊的那個鏈,除非有兩個等長的鏈 並且其中一個有更多的工作量證明。主鏈也會有一些分支,這些分支中的區塊與主鏈上的區塊互為「兄弟」區塊。這些區 塊是有效的,但不是主鏈的一部分。 保留這些分支的目的是如果在未來的某個時刻它們中的一個延長了並在難度值上超 過了主鏈,那麼後續的區塊就會引用它們。

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

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

因為區塊鏈是去中心化的數據結構,所以不同副本之間不能總是保持一致。區塊有可能在不同時間到達不同節點,導致節點有不同的區塊鏈全貌。

解決的辦法是,每一個節點總是選擇並嘗試延長代表累計了最大工作量證明的區塊鏈,也就 是最長的或最大累計工作的鏈(greatest cumulative work chain)。節點通過累加鏈上的每個區塊的工作量,得到建立這個鏈所要付出的工作量證明的總量。只要所有的節點選擇最長累計工作的區塊鏈,整個比特幣網路最終會收斂到一致的狀態。分叉即在不同區塊鏈間發生的臨時差異,當更多的區塊添加到了某個分叉中,這個問題便會迎刃而解。

提示由於全球網路中的傳輸延遲,本節中描述的區塊鏈分叉自動會發生。

然而,倒三角形的區塊不會被丟棄。它被鏈接到星形鏈的父區塊,並形成備用鏈。雖然節點X認為自己已經正確選擇了獲勝鏈,但是它還會保存「丟失」鏈,使得「丟失」鏈如果可能最終「獲勝」,它還具有重新打包的所需的信息。

這是一個鏈的重新共識,因為這些節點被迫修改他們對塊鏈的立場,把自己納入更長的鏈。任何從事延伸星形-倒三角形的礦工現在都將停止這項工作,因為他們的候選人是「孤兒」,因為他們的父母「倒三角形」不再是最長的連鎖。

「倒三角形」內的交易重新插入到內存池中用來包含在下一個塊中,因為它們所在的塊不再位於主鏈中。

整個網路重新回到單一鏈狀態,星形-三角形-菱形,「菱形」成為鏈中的最後一個塊。所有礦工立即開始研究以「菱形」為父區塊的候選塊,以擴展這條星形-三角形-菱形鏈。

從理論上來說,兩個區塊的分叉是有可能的,這種情況發生在因先前分叉而相互對立起來的礦工,又幾乎同時發現了兩個不同區塊的解。

然而,這種情況發生的幾率是很低的。單區塊分叉每周都會發生,而雙塊分叉則非常罕見。比特幣將區塊間隔設計為10分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。

2012年以來,比特幣挖礦發展出一個解決區塊頭基本結構限制的方案。在比特幣的早期,礦工可以通過遍歷隨機數 (Nonce)獲得符合要求的hash來挖出一個塊。

難度增長後,礦工經常在嘗試了40億個值後仍然沒有出塊。然而,這很容 易通過讀取塊的時間戳並計算經過的時間來解決。因為時間戳是區塊頭的一部分,它的變化可以讓礦工用不同的隨機值 再次遍歷。當挖礦硬體的速度達到了4GH/秒,這種方法變得越來越困難,因為隨機數的取值在一秒內就被用盡了。

當出現ASIC礦機並很快達到了TH/秒的hash速率後,挖礦軟體為了找到有效的塊, 需要更多的空間來儲存nonce值 。可以把時間戳延後一點,但將來如果把它移動得太遠,會導致區塊變為無效。

區塊頭需要信息來源的一個新的「變革」。解決方案是使用coinbase交易作為額外的隨機值來源,因為coinbase腳本可以儲存2-100位元組的數據,礦工們開始使用這個空間作為額外隨機值的來源,允許他們去探索一個大得多的區塊頭值范圍來找到有效的塊。這個coinbase交易包含在merkle樹中,這意味著任何coinbase腳本的變化將導致Merkle根的變化。

8個位元組的額外隨機數,加上4個位元組的「標准」隨機數,允許礦工每秒嘗試2^96(8後面跟28個零)種可能性而無需修改時間戳。如果未來礦工穿過了以上所有的可能性,他們還可以通過修改時間戳來解決。同樣,coinbase腳本中也有更多額外的空間可以為將來隨機數的擴展做准備。

比特幣的共識機制指的是,被礦工(或礦池)試圖使用自己的算力實行欺騙或破壞的難度很大,至少理論上是這樣。就像我們前面講的,比特幣的共識機制依賴於這樣一個前提,那就是絕大多數的礦工,出於自己利益最大化的考慮,都會 通過誠實地挖礦來維持整個比特幣系統。然而,當一個或者一群擁有了整個系統中大量算力的礦工出現之後,他們就可以通過攻擊比特幣的共識機制來達到破壞比特幣網路的安全性和可靠性的目的。

值得注意的是,共識攻擊只能影響整個區塊鏈未來的共識,或者說,最多能影響不久的過去幾個區塊的共識(最多影響過去10個塊)。而且隨著時間的推移,整個比特幣塊鏈被篡改的可能性越來越低。

理論上,一個區塊鏈分叉可以變得很長,但實際上,要想實現一個非常長的區塊鏈分叉需要的算力非常非常大,隨著整個比特幣區塊鏈逐漸增長,過去的區塊基本可以認為是無法被分叉篡改的。

同時,共識攻擊也不會影響用戶的私鑰以及加密演算法(ECDSA)。

共識攻擊也 不能從其他的錢包那裡偷到比特幣、不簽名地支付比特幣、重新分配比特幣、改變過去的交易或者改變比特幣持有紀錄。共識攻擊能夠造成的唯一影響是影響最近的區塊(最多10個)並且通過拒絕服務來影響未來區塊的生成。

共識攻擊的一個典型場景就是「51%攻擊」。想像這么一個場景,一群礦工控制了整個比特幣網路51%的算力,他們聯合起來打算攻擊整個比特幣系統。由於這群礦工可以生成絕大多數的塊,他們就可以通過故意製造塊鏈分叉來實現「雙重支 付」或者通過拒絕服務的方式來阻止特定的交易或者攻擊特定的錢包地址。

區塊鏈分叉/雙重支付攻擊指的是攻擊者通過 不承認最近的某個交易,並在這個交易之前重構新的塊,從而生成新的分叉,繼而實現雙重支付。有了充足算力的保證,一個攻擊者可以一次性篡改最近的6個或者更多的區塊,從而使得這些區塊包含的本應無法篡改的交易消失。

值得注意的是,雙重支付只能在攻擊者擁有的錢包所發生的交易上進行,因為只有錢包的擁有者才能生成一個合法的簽名用於雙重支付交易。攻擊者在自己的交易上進行雙重支付攻擊,如果可以通過使交易無效而實現對於不可逆轉的購買行為不予付款, 這種攻擊就是有利可圖的。

攻擊者Mallory在Carol的畫廊買了描繪偉大的中本聰的三聯組畫(The Great Fire),Mallory通過轉賬價值25萬美金的比特幣 與Carol進行交易。在等到一個而不是六個交易確認之後,Carol放心地將這幅組畫包好,交給了Mallory。這時,Mallory 的一個同夥,一個擁有大量算力的礦池的人Paul,在這筆交易寫進區塊鏈的時候,開始了51%攻擊。

首先,Paul利用自己礦池的算力重新計算包含這筆交易的塊,並且在新塊里將原來的交易替換成了另外一筆交易(比如直接轉給了Mallory 的另一個錢包而不是Carol的),從而實現了「雙重支付」。這筆「雙重支付」交易使用了跟原有交易一致的UTXO,但收款人被替換成了Mallory的錢包地址。

然後,Paul利用礦池在偽造的塊的基礎上,又計算出一個更新的塊,這樣,包含這 筆「雙重支付」交易的塊鏈比原有的塊鏈高出了一個塊。到此,高度更高的分叉區塊鏈取代了原有的區塊鏈,「雙重支付」交 易取代了原來給Carol的交易,Carol既沒有收到價值25萬美金的比特幣,原本擁有的三幅價值連城的畫也被Mallory白白 拿走了。

在整個過程中,Paul礦池裡的其他礦工可能自始至終都沒有覺察到這筆「雙重支付」交易有什麼異樣,因為挖礦程序都是自動在運行,並且不會時時監控每一個區塊中的每一筆交易。

為了避免這類攻擊,售賣大宗商品的商家應該在交易得到全網的6個確認之後再交付商品。或者,商家應該使用第三方 的多方簽名的賬戶進行交易,並且也要等到交易賬戶獲得全網多個確認之後再交付商品。一條交易的確認數越多,越難 被攻擊者通過51%攻擊篡改。

對於大宗商品的交易,即使在付款24小時之後再發貨,對買賣雙方來說使用比特幣支付也 是方便並且有效率的。而24小時之後,這筆交易的全網確認數將達到至少144個(能有效降低被51%攻擊的可能性)。

需要注意的是,51%攻擊並不是像它的命名里說的那樣,攻擊者需要至少51%的算力才能發起,實際上,即使其擁有不 到51%的系統算力,依然可以嘗試發起這種攻擊。之所以命名為51%攻擊,只是因為在攻擊者的算力達到51%這個閾值 的時候,其發起的攻擊嘗試幾乎肯定會成功。

本質上來看,共識攻擊,就像是系統中所有礦工的算力被分成了兩組,一 組為誠實算力,一組為攻擊者算力,兩組人都在爭先恐後地計算塊鏈上的新塊,只是攻擊者算力算出來的是精心構造 的、包含或者剔除了某些交易的塊。因此,攻擊者擁有的算力越少,在這場決逐中獲勝的可能性就越小。

從另一個角度 講,一個攻擊者擁有的算力越多,其故意創造的分叉塊鏈就可能越長,可能被篡改的最近的塊或者或者受其控制的未來 的塊就會越多。一些安全研究組織利用統計模型得出的結論是,算力達到全網的30%就足以發動51%攻擊了。全網算力的急劇增長已經使得比特幣系統不再可能被某一個礦工攻擊,因為一個礦工已經不可能占據全網哪怕的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分鍾,是在更快速的交易確認和更低的分叉概率間作出的妥協。更短的區塊產生間隔會讓交易清算更快地完成,也會導致更加頻繁地區塊鏈分叉。與之相對地,更長的間隔會減少分叉數量,卻會導致更長的清算時間。

Ⅵ FileStorm檢索挖礦來了,人類將進入全民挖礦時代

區塊鏈,挖礦,分布式存儲,對很多人來說都是一個個很陌生的字眼。有些人想參與,卻被私鑰,加密錢包,區塊瀏覽器等一堆更多的新名詞沖昏了頭腦。都說區塊鏈是改變世界的前沿科技,可是它到底解決了什麼問題,不得而之。

FileStorm,做為一個基於區塊鏈實現的分布式存儲平台,只有把區塊鏈概念的傳播和價值的傳遞送到千家萬戶,才能實現這個成為全民共享共有的大數據平台的偉大理想。

首先讓我們對一些基本概念做一些簡單的解釋:

區塊鏈是一個超級賬本,由很多的節點共同維護,用來記錄數據。參與的節點通過某種共識來保證賬本的唯一性。所以寫到區塊鏈上的數字交易公開透明且不可篡改。

挖礦就是節點維護共識保證賬本的唯一性的一個手段。一個賬本是有很多頁的。每一頁就是一個區塊。這個區塊的記賬權只能屬於一個節點,然後其他節點對這個區塊進行驗證和復制。得到記賬權的節點可以得到區塊鏈給出的獎勵,這個獎勵就是「礦」。所以節點獲得記賬權的行為就叫挖礦。

根據共識的不同,挖礦的方式有很多種,比如比特幣是用算力挖礦。所有節點必須通過大量的計算來搶奪記賬權,每次只有一個節點能搶到並獲取收益。這個共識叫POW。工作量證明。還有一種挖礦方式叫POS,權益質押證明。通過將代幣質押的方式得到記賬權。你質押得越多,得到記賬權的機會就越高,從而收益也越多。這就像在銀行存錢獲得利息一樣。

使用POS共識有很多好處,第一就是不消耗資源,它不像POW那樣要浪費大量的電力。第二,POS的一個變種叫dPOS,委託權益證明讓所有做了質押的節點投票選出有限個出塊節點,讓它們負責出塊,這樣會大大提高區塊鏈的性能,同時也體現了民主集中制的優越性。

存儲挖礦是最近兩年出現的一個新概念。節點需要提供硬碟來做存用戶的文件。然後通過周期性的對存儲的文件進行驗證(這就是時空復制證明)來確保文件被存儲。如果被存,就要給於節點收益。如果沒有被存,就要得到懲罰。所以,存儲挖礦往往要跟POS合用,通過代幣的處罰,來保證存儲節點一直保持在線可用。

FileStorm,就是這樣一個通過各種共識實現的平台。大家可以把它理解成存儲界的「滴滴打車」。FileStorm自己沒有存儲設備,它通過區塊鏈實現了一個公開透明不可篡改的獎勵平台,讓大量的存儲設備自己接進來,然後統一給用戶提供存儲服務,再把收益獎給所有存儲設備的主人,即礦工。當平台需求量變大的時候,會有更多的礦工接進來。需求量減少,礦工可以自由離開。當然平台會通過冗餘存儲和加密機制確保用戶數據不被丟失和不被泄露。這種存儲平台跟傳統的雲存儲比起來,投入的重資產少,且在未來滿負荷使用後,閑置的存儲空間也會少。這樣勢必會大大降低用戶的存儲開銷。

關於文件的存儲方式,FileStorm使用了IPFS協議,這是一個基於P2P點對點的網路之上的一個數據存儲和分享的協議。所以我們稱之為分布式存儲。點多點網路不同於中心化的網路,用戶只能從一個中心伺服器拿數據,在點對點的網路中,數據被切成小塊,分散到多個節點上,讓用戶可以迅速從多個節點拿取數據。這樣,熱門數據就可以病毒式的快速傳播,(當然我們不是傳播病毒)。

FileStorm於2019年4月30日上線,截止今天已經接入7000多個存儲節點,總存儲量達到51PB。數據存儲其實對設備有很高的要求,必須不斷網不斷電,設備不輕易出故障,所以現在的FileStorm節點大部分都是企業級礦機,放在全球各地的IDC機房中。而且因為用戶數據的重要性,所有的節點都必須為設備做一個比較高的質押。所以現在FileStorm的參與成本是比較高的。

但是數據的存儲就是為了使用。有價值的數據,必然是會被大量分享傳播。數據的大量傳播,勢必需要更多的節點,最好是分散到千家萬戶。這些節點不需要太多的存儲空間,對在線要求也不會太高。它主要是做數據的傳播,所以主要是有一個對網路帶寬的要求。在線時間越長,帶寬配置越高,分發的數據內容就越多,得到的收益就越多。

隨著5G時代的到來,移動互聯網路將會有更高帶寬,更多連接和更低延時的需求。海量的終端設備將會接入互聯網。這迫使人類對網路架構進行變革。同時大量數據帶來的大量計算也會給中心化伺服器帶來巨大壓力,傳統的伺服器/客戶端這種雲計算網路架構已經遠遠達不到整個網路需要提升的性能。這時候,就必須在伺服器和客戶端中間加入一個邊緣層。這個邊緣層可以是一個有一定計算能力的通過點對點網路連接起來的節點,在地域上有一定的分散性。它有如下幾個好處。

FileStorm通過搭建分布式存儲網路,已經把中心化的雲存儲服務在向邊緣網路靠近。可是存儲的一個最大需求是集中穩定,所以基於這個需求搭建的存儲網路必然會變成多個分布式的中心集群,地域上也遠遠不夠擴散。數據離終端用戶還是不夠近。這個網路里還需要更多的節點把存儲的數據根據用戶的需求提取出來,進行分發。這就是FileStorm不可或缺的邊緣層。在點對點的網路里,數據從存儲設備到用戶那裡需要經過邊緣層的多個節點,這個過程我們稱之為檢索。所有參與的節點,就參與了檢索挖礦。

檢索挖礦跟存儲挖礦不同,它對設備要求不高,很多功能只需在軟體層面上實現。在早期,FileStorm將推出一款簡單實用的檢索程序StormChaser,支持主流操作系統及各種硬體平台。用戶可以在自己的家用電腦上安裝使用,接入靈活,運維簡單。而且節點無需永久在線,就可以獲取收益。收益的一部分跟在線時間和帶寬配置成正比,一部分來自於真實使用的計算和流量的分賬獎勵。FileStorm將來還會跟國際頂級硬體製造商共同開發專業檢索礦機,增加邊緣計算功能,就可以與各種合作商一起生產和推廣與終端硬體合二為一的各種智能終端。

有了檢索挖礦,存在存儲節點上的冷數據就有了溫度。FileStorm就更加能吸引用戶來我們的平台存儲和傳播數據。將來的FileStorm網路可以在視頻加速,物聯網,無人駕駛,VR/AR等多個領域發揮作用。

為了將檢索節點大量推廣,參與FileStorm檢索挖礦的門檻會設置得很低,對質押的要求也非常低。檢索節點只有布局到一定規模才有效,所以推廣時間會相對要長。所以FileStorm將會很快推出檢索挖礦試運行,在試運行期間同樣會有FST的激勵。

羅馬絕非一夜造就。但是我們會一直朝著我們的方向努力。在可預見的未來,FileStorm的檢索礦機將為各種視頻網站提供服務。很快就會有一天,當你躺在自己的床上,追著喜愛的電視連續劇的時候,有一個小盒子,在你的電視機下面靜靜地也為千萬人傳播數據,為你獲取收益。獲取的收益可以用來點播最新的電影,或者支付下個月的視頻網站月費。全民挖礦就要實現了!FileStorm必將引領一個新的區塊鏈時代,促進區塊鏈經濟朝著更深更遠的方向傳播。

Ⅶ 什麼是挖礦就是那個數字加密貨幣,以前還叫虛擬貨幣,還有什麼雲算力挖礦比特幣,能賺錢不

挖礦,是指利用電腦硬體計算出比特幣的位置並獲取的過程稱之為挖礦。每隔一個時間點,比特幣系統會在系統節點上生成一個隨機代碼,互聯網中的所有計算機都可以去尋找此代碼,誰找到此代碼,就會產生一個區塊,然後就會得到一個比特幣,而這一個過程就稱為挖礦。

計算這個隨機代碼需要大量的GPU運算,於是礦工們采購海量顯卡用以更快速的獲得比特幣並以此獲利。
而比特幣有個四年一減的減半效應,也就是說每隔四年,比特幣的數量就會減少一半,這樣一來,比特幣的算力會增加,也就是說挖礦的難度就會增加。正常情況下挖礦一般指用礦機去挖,就是電腦去挖,這些都是指單獨運作的,或者說整個礦場運作的。而雲算力挖礦,指的是多人一起挖礦,你只要投入小部分,就能參與挖礦。
比特幣挖礦的通常步驟是「購買礦機-部署礦機-設置挖礦-獲取收益」,但部署礦機這步受多因素影響,比如電價、場地、溫度、噪音、運維等。這些門檻需要一定的條件和知識來消除,因此催生了挖礦行業下的一個子模塊——雲算力。
雲算力是一種遠程挖礦模式。用戶通過平台購買雲算力合約,租賃算力挖礦,定時獲取收益。雲挖礦的優點是用戶不需要深入了解挖礦原理和各種軟硬體,或購買昂貴的礦機,也無需自己24小時維護,只要下單購買就能參與挖礦,類似購買收益權產品。
對於礦場主而言,以略低於自營挖礦收益的價格將一段時間內的算力使用權租售給客戶,可以快速迴流現金、預購最新礦機、擴大生產規模、爭取到遠期市場中獲利的可能,某種程度上也能在幣價低位保留礦機、轉移風險,對沖挖礦自營業務的單一性風險。
但相比直接參與挖礦,雲算力也體現出以下劣勢:
即便平台充分展示礦場、礦機、合作、團隊等相關信息,用戶依然很難判斷平台背後的算力質量、實時運營狀況(比如是否停電、場地臨檢)或真實收益數據。
炒比特幣(短線買賣賺取價差)的風險高於屯比特幣(長期看漲),但大多屯幣者往往缺乏對短期價格變化的判斷,「提前下車」。雲算力每日為投資者帶來少量比特幣收入,也是在變相控制投資者「頻繁操作」。因此對於很多愛好比特幣的人來說,會有這樣一句話「炒幣不如挖幣」
雲算力的市場機會在於,為個人提供更中和的投資方式,門檻低於自建礦場,風險低於短線操作,成本低於市價購買啊,也讓礦場分攤成本與風險,獲得更寬裕的現金流。
雲算力的主要風險在於合約背後算力的真實性和穩定性。我們在與礦業的長期接觸中,聽到的高頻詞彙是「坑」:常理之外的停電理由、礦機運輸途中的各種插曲、病毒和勒索的不斷干擾、期貨的波動和遲來的現貨、跨國貿易的層層阻礙、防不勝防的團隊內鬼……所以,真實穩定的算力有一定的稀缺性,背後往往是多年的踩坑經驗。作為信息中介的雲算力平台如何幫助用戶篩選優質的合作礦場合作,設計友好又有吸引力的產品,制定專業、透明的行業標准,建立應對各類風險的災備方案,提供貫穿投資全程的優質服務,都將成為其核心競爭力。
當然挖礦是一個長期發展的行業,回本也是需要一定的周期的,所以能否賺錢,主要還是看你能否堅持。

Ⅷ 如何挖礦比特幣

說起比特幣,最近可以火熱了。到處互聯網都在討論,甚至在經濟學報在也討論這個神秘的幣種,報紙也在討論可行性,比特幣流行在電腦極客中,這些人都是對自由的嚮往,話說當年中本聰發表論文,到現在比特幣已經逐漸火熱起來。許多國外的網站甚至購物都已經接受了比特幣的付款,國內的比較少。比特幣現在的價值比較高,一個比特產就值三百幾美刀,值人民幣上一千多塊,多麼吸引人呀,但是它就是一個股票,一下漲一貶。比特產有風險,入行請小心。
今天我就把在比特幣探礦的體會和工具寫下來,我也是一個新手,跟喜愛比特幣的人一同分享一下。
1、先下載你的比特幣電子錢包,網路一下Bitcoin客戶端就有,不用注冊的,它是默認綁定你的電腦的,下載安裝好,它就會更你的網路數據塊,這個夠坑爹,聽說是下載所有網路節點的信息,是全世界的,這該有多大,我更新了好幾天都下載完數據塊。
Bitcoin客戶端界面:
2.界面還是比較簡單的,有了這個客戶端,你這可以實現比特幣的付款和收款了。點下圖圈圈處就可以看到下方有一串的數字和字母的字元串,你可以把這串東東復制下來,發給別人,相等你把銀行卡帳號給別人,別人就可以付款了,你點「發送貨幣」,把別人發來的帳號粘貼下就可以輕松給對方付款比特幣,這個過程完全沒有第三方的存在,所以安全放心。

3.介紹一下如何挖礦,也是比特幣產生的重要方式。挖礦工具是guiminer,它是個綠色包,也就文件夾,不用安全,下載下來直接解壓就可以用了,找到下方圖標,雙擊運行。
界面:
4.有了工具就要用到,就要找到一個好地方生產礦產,也是就是礦池,在現在比特幣產量越來越少了,如果個人挖不知何年何月才挖得出比特幣來,如果你是銀河系列超級計算機就另談,個人電腦可以忽略掉,礦池有很多,但號稱比特幣全球最大礦池deepbit,它是網址是
https://deepbit.net/ 登陸網站注冊帳號。點我的帳戶
5、進入我的帳戶信息,這里看到你的礦工信息,帳戶有多少比特幣的分成,c貢獻

6、我的帳戶的具體設置。
1、<你的比特幣地址,用來接收報酬:>在框里內輸入你接受比特幣的地址,不要寫錯了,不然就白挖礦了,上面圖文說過了。
2、《自動支付最小值:》 自己設置,當你在礦池有這么多錢後,這個網站就會自動把錢打到你的上面設置的比特幣帳戶地址。你看所以上面設置重要吧
3設置礦工了,點creat new vorker,中文是創建新的礦工,礦工就可以幫你的挖礦的工人,你可以設置多個,然後在很多電腦一塊開挖,效果更明顯,收入更豐厚
名稱上就隨便寫,要寫英文,外國的東西最好寫英文。
密碼自己寫,不要寫得長,簡單就行了重要性不大
失敗檢測閥值 (1-3600 分鍾): 寫上60就行了,
當礦工不工作時發送郵件通知?* :果斷不選,拒絕垃圾郵件,
礦工支付方式:果斷選按比例拉,多勞多得,這才是符合人類發展。
最後點 sava setting ,就可以保存你的礦工了,返回可以看到你礦工的信息。
7.把礦工信息填入到挖礦工具guiminer,

file->new opencl miner->填入你喜愛的名字-》sever處選擇deepbit-》username填入礦工的,記得要連你的注冊帳號一起形式的你的郵箱加礦工,上面有,密碼你懂的,device 是選擇你用什麼硬體來工作,一般是用顯卡來的,選擇你要用的顯卡,如果找不到,記得更新一下顯卡驅動就可以用了,然後start mining了.就可以坐等收礦了。具體速度要看你電腦配置。
註:礦池還有許多的,工具也有,具體我就不介紹了,只因為我是用我上面的說,誰用誰知道,用了才有發言處,其它的我可能不懂。小心的電費都不夠本,如果真的有了就可以上中國比特幣網買賣比特幣,把它換的真金,對不。

Ⅸ 什麼是區塊鏈挖礦是做什麼詳細介紹區塊鏈和虛擬貨幣

在比特幣剛發行的時候人們發現了,它去中心化,不受任何中心管制;它完全開放,除了交易信息加密之外整個系統信息高度透明,技術都是開源的;安全性,只要不能控制全部節點的%51,就無法肆意修改數據,這使得它相對安全;獨立性,整個模式和比特幣不依賴任何第三方,所有節點都在系統內驗證、交換數據,不受任何干預

我們這里詳細解釋什麼是區塊鏈技術,說白了就是區塊+鏈,那什麼是 「區塊」 ?什麼又是 「鏈」 呢?

區塊就是一個賬本交易記賬由分布在不同地方的多個節點共同完成,而且每一個節點記錄的是完整的賬目,因此它們都可以參與監督交易合法性,同時也可以共同為其作證

每一個區塊包含了前一個區塊的加密散列、相應時間戳記以及交易資料(通常用默克爾樹(Merkle tree)演算法計算的散列值表示),這樣的設計使得區塊內容具有難以篡改的特性。用區塊鏈技術所串接的分布式賬本能讓兩方有效記錄交易,且可永久查驗此交易。

哈希函數h()的作用:將任意長度的字元串,轉換成固定長度(例如256位)的輸出。輸出也被稱為 哈希值 ,這個輸出不可逆

很難找到兩個不同的x和y,使得h(x) = h(y),也就是說兩個不同的輸入,會有不同的輸出。理論上說兩個不同的輸入可能會有不同的輸出,但這幾乎不可能,比方說一個無限的空間映射到一個有限的空間,肯定存在多對一的情況,理論存在,但沒有任何規律,保證你無法通過數學上的任何推斷來找到這個結果,為什麼這里是256位呢?不是更長的呢?因為256位已經足夠安全。

將賬本拆分成塊,比如一個本子的一張紙就是一個區塊,每個區塊記錄一段時間內的交易,列如10分鍾

我們把每張紙比作一個一個 區塊 ,在每個區塊的上面增加一部分內容我們把它叫做 區塊頭 ,其中記錄父區塊的哈希值,通過每個區塊儲存父區塊的哈希值,將所有區塊按順利連接起來,形成區塊鏈

1區塊 的哈希值記錄到 2區塊 的區塊頭上,如此操作每個區塊的區塊頭都記錄父區塊的哈希值,每個區塊都按照順序鏈接起來了,這就叫做區塊鏈。第一個區塊沒有區塊頭,又被稱之為創世區塊

區塊鏈是一個賬本,在賬本上只有發生了交易你的賬戶上的錢才會變多和變少,需要進行交易那麼首先需要一個賬號和密碼,就像你的銀行卡有賬號和密碼別人就可以對你進行一個轉賬,在區塊賬本上這個賬號密碼就是公鑰和私鑰

老王(已有私鑰,公鑰),想轉給張10個BTC,需要一些操作

證明是老王本人發出轉賬 簽名函數Sign (老王的私鑰 + 轉賬信息:老王轉給張三10 BTC)=本次專賬簽名
驗證是老王本人發出轉賬 驗證函數Verify (老王的地址 + 轉賬詳細:老王轉給張三10 BTC + 本次轉賬簽名)=true
一旦轉賬記錄到區塊從此誰也不能改變它,張三增加10 BTC,老王則相應減少10 BTC,整個操作都是自動的,比如你的錢包app它會幫你去做這樣的事情,app知道你的私鑰,你告訴錢包交易內容,錢包簽名向全網公布,等待其他人來驗證這筆交易

中心化記賬效率會更高,銀行、政府或者支付寶幫你記賬,都很可靠,因為他們都無法動你的錢,除非它們有你的私鑰

中心化記賬存在一些缺點

去中心化人人都可以記賬,每個人可以保留一個完整的賬本。任何人都可以下載開源程序,參與比特幣的p2p網路,監聽來自全世界發送的交易,成為記賬節點,參與記賬,假設小逸發布了一筆交易向全網廣播,A記賬節點監聽到了這筆交易,A驗證了這筆交易位true之後放入交易池繼續向其它節點傳播,因為是網路傳播,同一時間不同記賬節點的交易池不一定相同,每10分鍾,從所有記賬節點當中,按照某個方式抽取一名,驗證這個節點的交易為true之後,之後將這個選中的節點交易池中的交易記錄與自己(A)節點的交易池中的交易記錄對比一下,對比完之後會將自己交易池中已經被選中記賬節點記錄的交易刪掉,別的不動繼續記賬等待下一次被選中,每隔10分鍾就是一個循環,這個10分鍾所有記賬節點正常記賬,10分鍾之後再選出一個節點把它交易池當中的交易作為一個新的區塊,這個區塊來自所有記賬節點中我任意選擇的一個記賬節點的交易池,如此不斷循環往復

交易並不是被記錄就完成,只有當這筆交易變成了某一個區塊,這筆交易才算是真正的完成。這就是去中心化的一個記賬的完整的流程,你的交易並不會第一時間被記錄,因為p2p網路傳播需要時間,如果被選中區塊的節點還沒有接受到你的交易,交易就沒有完成。每10分鍾產生一個區塊,但不是所有在10分鍾內的交易都能記錄。10分鍾只是一個平均值

去中心化記賬的特點,有記賬權的記賬節點,每十分鍾被選中的節點它會獲得50BTC獎勵,每21萬個區塊差不多4年,獎勵減半,比特幣自發行已經兩次減半,那麼每十分鍾產生一個新的區塊這個記賬節點得到的獎勵是10.5BTC,每隔4年減半那麼可以算出BTC的總量大約為2100萬枚,預計2040年開采完,記錄一個區塊的獎勵也是比特幣唯一的發行方式,當BTC開采完之後,記賬節點可以獲得的收益就只有交易的手續費了

記賬節點通過題目來爭奪記賬權,

找到某位隨機數使得等式不成立
SHA256哈希函數 (隨機數 + 父區塊哈希值 + 交易池中的交易) 某一指定值)
從0開始遍歷隨機數碰運氣之外,沒有其它解法,解題的過程,又叫做 挖礦 ,所以解這個題目的記賬節點又被稱之為 礦工 ,你遍歷隨機數越快你拿到這個記賬權的可能性就越大,這個遍歷速度就被礦老闆們稱之為 算力 ,為了得到這個算力,礦老闆們就會購買更多且更高算力的礦機

誰先解對,誰就得到記賬權。A記賬節點率先找到解,即向全網公布,其他節點驗證無誤之後,A節點就獲得了這個區塊,獲得12.5個BTC的收益,在新區塊之後重新開始新一輪計算。這個方式被稱之為(POW)分配記賬權

一般大約10分鍾解出這個隨機數,10並不絕對,因為解開這個題目的過程本就是個碰運氣的過程,未來應對算力的變化,比特幣每隔2016個區塊,大約兩周,會加大或減小難度,使得平均產生區塊的時間是十分鍾

每一個區塊包含了前一個區塊的加密散列、相應時間戳記以及交易資料(通常用默克爾樹(Merkle tree)演算法計算的散列值表示),這樣的設計使得區塊內容具有難以篡改的特性。用區塊鏈技術所串接的分布式賬本能讓兩方有效記錄交易,且可永久查驗此交易。

和傳統存儲的數據不同的是,區塊鏈每個節點都按照塊鏈式結構存儲完整的數據,區塊鏈每個節點存儲都是獨立的、地位等同的,依靠共識機制保證存儲的一致性,而傳統分布式存儲一般是通過中心節點往其他備份節點同步數據。

麻將作為中國傳統的區塊鏈項目,四個礦工一組,先碰撞出13個數字正確哈希值的礦工可以獲得記賬權並得到獎勵。

很多人講區塊鏈是騙局比特幣是騙局,這也許是個騙局,但是這個技術已經被廣泛地承認和應用,區塊鏈涉及的密碼學知識一般人再借幾個腦子給你你也搞不懂,在一個相對理性的角度看待問題最重要,千萬別聽風就是雨。

這門技術有著不可思議的地方 在一個沒有中心沒有監管的情況下保持著絕對的秩序 這個只需由大家的共識建立的信任,比特幣創造了這個共識,在區塊鏈的世界裡每個人都是公平平等的。

Ⅹ 怎麼辨別礦商提供的節點是不是他自己的

首先,看上傳寬頻:較高的上傳帶寬,使得你的上傳數據超過下載數據。然後,固定IP,使得連接過你的節點還能再次連接上你。
挖礦節點不一定是全節點,一般是看礦池架構了,以魚池為一個例子,魚池全球部署了很多全節點,用來接收和分發區塊的,然後所有區塊信息快速傳輸到挖礦的伺服器。一般來說,挖礦節點創建好預備區塊後,將預備區塊的區塊頭數據發送給礦工,礦工收到挖礦任務後,會遞增區塊頭中的隨機數,而當礦工找到可以使預備區塊頭哈希值小於目標哈希的隨機數時,會立即向挖礦節點上報挖礦結果,挖礦節點接收到信息後,立刻按照礦工上報信息重組區塊,並驗證區塊,驗證無誤後,挖礦節點將新區塊保存到節點本地資料庫,並添加到節點本地區塊鏈上。

熱點內容
幣圈重要位置 發布:2024-12-21 05:21:46 瀏覽:141
優質的礦池 發布:2024-12-21 04:58:06 瀏覽:850
現實生產比特幣 發布:2024-12-21 04:50:00 瀏覽:971
2018第三屆世界區塊鏈技術 發布:2024-12-21 04:44:21 瀏覽:724
如何提問區塊鏈 發布:2024-12-21 04:30:06 瀏覽:593
德國日本已經把比特幣合法化 發布:2024-12-21 04:14:19 瀏覽:907
360安全防挖礦 發布:2024-12-21 04:06:11 瀏覽:140
冒險與挖礦先爆流貼吧 發布:2024-12-21 04:04:50 瀏覽:579
hp8300usdt內存型號 發布:2024-12-21 04:00:55 瀏覽:525
比特幣標簽屬於誰 發布:2024-12-21 03:53:46 瀏覽:791