FPGA比特幣礦機源碼
礦機挖礦是通過計算機硬體,依託於比特幣網路,多張顯卡集中來進行數學計算,從而產生大量的礦幣。挖礦其實主要依賴於計算機硬體的性能,數十張顯卡組成陣列,將可以大大增強挖礦的速度和能力。礦機的配置不同,算力也是不同的。
比特幣簡介
比特幣是由中本聰在 2008年提出來的加密貨幣的概念,正式誕生於2009年。比特幣是基於開源軟體和P2P網路而產生的一種虛擬的數字加密貨幣。這是一個點對點的支付系統,實現了去中心化的構建形式。比特幣不依靠任何貨幣發行機構,它是依據特定的計算方法,通過大量的計算,在虛擬網路中產出。比特幣適用於分布式資料庫的交易模式,同時在各個流通的環節都根據密碼學設置了對應的加密,從而加強了比特幣的安全性和真實性,便於轉移和支付。
『貳』 Fpga哪顆晶元做礦機算力
Fpga礦機晶元做礦機算力
主要功能
1、可遠程升級算力:具有更強的動態編程能力,以容納不斷完善的協議制度
2、超大算力:1700M/台,最高可升級5100M
3、可再編輯、靈活行強
4、標准伺服器外觀
5、低功耗
『叄』 比特幣挖礦機都用的什麼晶元
比特幣挖礦機所使用的顯卡。
比特幣挖礦機 ,就是用於賺取比特幣的電腦,這類電腦一般有專業的挖礦晶元,多採用燒顯卡的方式工作,耗電量較大。用戶用個人計算機下載軟體然後運
行特定悄羨毀襲演算法,與遠方伺服器通訊後可得到相應比特幣,啟余拍是獲取比特幣的方式之一。2013年流行的數字貨幣有,比特幣、萊特幣、澤塔幣、便士幣(外網)、隱形金條、紅幣、極點幣、燒烤幣、質數幣。目前全世界發行有上百種數字貨幣。
(3)FPGA比特幣礦機源碼擴展閱讀:
其實這種挖礦器也有很多種,作為新人我們推薦小巧易用的GUIminer,它能夠支持CPU、OepnCL、CUDA等多種計算模式,這樣你的設備包括CPU和顯卡都能發揮出最大性能,進而相對更快速的獲取比特幣。
『肆』 解釋礦機晶元的主要工作原理
解讀礦機硬體元器件及主流礦機電路及BOM表
礦機結構
看完了機器的外觀,我們一起看看機器的原理結構。目前市場上的比特幣挖礦機基本是這種原理框圖,有三部分構成:電源板,控制板,算力板。大家可以看看這個框圖:
再看主控搭載的幾顆外圍晶元,DDR和NAND FLASH。這幾顆晶元是存儲晶元,功能就好比我們人類的大腦,現在市場價格比較高。其它網卡晶元就好比我們剛才提到得人的耳朵和嘴巴,用來和外部通信,網路收發晶元,目前市場常用的是RETELK和博通,代表型號有8021和8211。這兩顆晶元在路由器和機頂盒裡面也用的比較多。
『伍』 比特幣礦池的協議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協議的配合下,礦池終於可以大聲的對礦工說,讓算力來的更猛烈些吧。
『陸』 挖礦機是具體是怎麼運行,挖出比特幣需要怎麼變現
去交易所交易,先把錢包里的比特幣充值到交易所帳號上去,然後在市場里賣出去就得到USDT了
『柒』 什麼類型的礦機為挖幣專門定製淘汰後幾乎毫無價值
ASIC礦機ASIC礦機是指使用ASIC晶元作為核心運算零件的礦機。ASIC晶元是一種專門為某種特定用途設計的晶元,必須說明的是它並不只用於挖礦,還有更廣泛的應用領域。這種晶元的特點是簡單而高效,例如比特幣採用SHA256演算法,那麼比特幣ASIC礦機晶元就被設計為僅能計算SHA256,所以就挖礦而言,ASIC礦機晶元的性能超過當前頂級的電腦CPU。因為ASIC礦機在算力上有絕對的優勢,所以電腦、顯卡礦機開始逐漸被淘汰。
GPU礦機GPU礦機,簡單的解釋就是通過顯卡(GPU)挖礦的數字貨幣挖礦機。在比特幣之後,陸續出現了一些其他數字資產,比如以太坊、達世幣、萊特幣等等,其中一些幣所用的演算法與比特幣並不相同,為了達到更高的挖礦效率,礦工們做了不同的測試,最後發現SHA256演算法的數字貨幣使用ASIC挖礦效率最高。而Scrypt 等其他演算法的數字貨幣用GPU顯卡挖礦效率最高,於是催生出了專門的GPU礦機。
IPFS礦機IPFS類似於http,是一種文件傳輸協議。IPFS要想運行,需要網路中有許許多多的計算機(存儲設備)作為節點,廣義的說所有參與的計算機,都可以稱作IPFS礦機。而IPFS網路為了吸引更多的用戶加入成為節點,為網路做貢獻,設計了一種名叫filecoin的加密貨幣,根據貢獻存儲空間與帶寬的多少,派發給參與者(節點)作為獎勵。狹義的說,專門以獲取filecoin獎勵為目的而設計的計算機,稱為IPFS礦機。由於IPFS網路需要的是存儲空間以及網路帶寬,所以為了獲得最高的收益比,IPFS礦機通常會強化存儲空間、降低整機功耗等方面。比如裝備10塊以上大容量硬碟,配備千兆或更高速度的網卡,使用超低功耗的架構處理器等等。
FPGA礦機FPGA礦機,既使用FPGA晶元作為算力核心的礦機。FPGA礦機是早期礦機之一,首次出現在2011年末,在當時一度被看好,但活躍期並不長,後逐漸被ASIC礦機與GPU礦機取代。FPGA(Field-Programmable Gate Array),中文名叫現場可編程門陣列。比較通俗的理解是,FPGA就是把一大堆邏輯器件(比如與門、非門、或門、選擇器)封裝在一個盒子里,盒子里的邏輯元件如何連接,全部由使用者(編寫程序)來決定。 如果FPGA裡面寫的是挖礦程序,那麼造出來的就是FPGA礦機,而且由於FPGA靈活度高,所以不只是可以支持比特幣的SHA256演算法,也可以支持GPU礦機擅長的Scrypt演算法。FPGA礦機活躍的時期,相比同時代的CPU、GPU礦機,FPGA雖然算力性能不佔優,但功耗要低很多,綜合功耗比很高。
『捌』 比特幣挖礦機原理介紹 幾個方面來講解
1、最初的時候,用CPU就可以挖到比特幣,中本聰就是用他的電腦CPU挖出了世界上第一個創世區塊。然而,CPU挖礦的時代早已過去,現在的比特幣挖礦是ASIC挖礦和大規模集群挖礦的時代。
2、挖礦速度,專業的說法叫算力,就是計算機每秒產生哈希碰撞的能力。也就是說,我們手裡的礦機每秒能做的哈希碰撞次數,就是算力。
3、比特幣在宏觀上的原理,就如同黃金一樣。黃金在地球上的總量是一定的,而且比較稀少,可以作為一般等價物來使用,在紙幣大面積發行之前,一直作為貨幣的形式來使用。比特幣也是一個道理,之所以比特幣可以用來作為貨幣的形式來進行買賣,也是因為其總量是一定的,而且挖礦需要花費很大的成本,主要表現就是電力上的消耗。
4、工作量證明,簡單理解就是一份證明,用來確認你做過一定量的工作。監測工作的整個過程通常是極為低效的,而通過對工作的結果進行認證來證明完成了相應的工作量,則是一種非常高效的方式。
5、比特幣的背後是一個公共賬本,這個賬本每十分鍾需要重新記錄一遍,而成功記賬者會獲得一定數量比特幣的獎勵。在比特幣誕生之初,這個獎勵是50個比特幣,這一數字大約每4年減半。