哈希派礦機
❶ 一致性哈希 java實現 怎麼映射到圓環上
一致性哈希提出了在動態變化的Cache環境中,哈希演算法應該滿足的4個適應條件:單調性是指如果已經有一些內容通過哈希分派到了相應的緩沖中,又有新的緩沖區加入到系統中,那麼哈希的結果應能夠保證原有已分配的內容可以被映射到新的緩沖區中去,而不會被映射到舊的緩沖集合中的其他緩沖區。(這段翻譯信息有負面價值的,當緩沖區大小變化時一致性哈希(Consistenthashing)盡量保護已分配的內容不會被重新映射到新緩沖區。)簡單的哈希演算法往往不能滿足單調性的要求,如最簡單的線性哈希:x→ax+bmod(P)在上式中,P表示全部緩沖的大小。不難看出,當緩沖大小發生變化時(從P1到P2),原來所有的哈希結果均會發生變化,從而不滿足單調性的要求。哈希結果的變化意味著當緩沖空間發生變化時,所有的映射關系需要在系統內全部更新。而在P2P系統內,緩沖的變化等價於Peer加入或退出系統,這一情況在P2P系統中會頻繁發生,因此會帶來極大計算和傳輸負荷。單調性就是要求哈希演算法能夠應對這種情況。負載問題實際上是從另一個角度看待分散性問題。既然不同的終端可能將相同的內容映射到不同的緩沖區中,那麼對於一個特定的緩沖區而言,也可能被不同的用戶映射為不同的內容。與分散性一樣,這種情況也是應當避免的,因此好的哈希演算法應能夠盡量降低緩沖的負荷。從表面上看,一致性哈希針對的是分布式緩沖的問題,但是如果將緩沖看作P2P系統中的Peer,將映射的內容看作各種共享的資源(數據,文件,媒體流等),就會發現兩者實際上是在描述同一問題。路由演算法在一致性哈希演算法中,每個節點(對應P2P系統中的Peer)都有隨機分配的ID。在將內容映射到節點時,使用內容的關鍵字和節點的ID進行一致性哈希運算並獲得鍵值。一致性哈希要求鍵值和節點ID處於同一值域。最簡單的鍵值和ID可以是一維的,比如從0000到9999的整數集合。根據鍵值存儲內容時,內容將被存儲到具有與其鍵值最接近的ID的節點上。例如鍵值為1001的內容,系統中有ID為1000,1010,1100的節點,該內容將被映射到1000節點。為了構建查詢所需的路由,一致性哈希要求每個節點存儲其上行節點(ID值大於自身的節點中最小的)和下行節點(ID值小於自身的節點中最大的)的位置信息(IP地址)。當節點需要查找內容時,就可以根據內容的鍵值決定向上行或下行節點發起查詢請求。收到查詢請求的節點如果發現自己擁有被請求的目標,可以直接向發起查詢請求的節點返回確認;如果發現不屬於自身的范圍,可以轉發請求到自己的上行/下行節點。為了維護上述路由信息,在節點加入/退出系統時,相鄰的節點必須及時更新路由信息。這就要求節點不僅存儲直接相連的下行節點位置信息,還要知道一定深度(n跳)的間接下行節點信息,並且動態地維護節點列表。當節點退出系統時,它的上行節點將嘗試直接連接到最近的下行節點,連接成功後,從新的下行節點獲得下行節點列表並更新自身的節點列表。同樣的,當新的節點加入到系統中時,首先根據自身的ID找到下行節點並獲得下行節點列表,然後要求上行節點修改其下行節點列表,這樣就恢復了路由關系。
❷ 比特幣挖機如何挖到比特幣
一、挖礦原理
最初的時候,我們用電腦CPU就可以挖到比特幣,比特幣的創始人中本聰就是用他的電腦CPU挖出了世界上第一個創世區塊。然而,CPU挖礦的時代早已過去,現在的比特幣挖礦是ASIC挖礦和大規模集群挖礦的時代。
回顧挖礦歷史,比特幣挖礦總共經歷了以下五個時代:
CPU挖礦→GPU挖礦→FPGA挖礦→ASIC挖礦→大規模集群挖礦
挖礦晶元更新換代的同時,帶來的挖礦速度的變化是:
CPU(20MHash/s)→GPU(400MHash/s)→FPGA(25GHash/s)→ASIC(3.5THash/s)→大規模集群挖礦(3.5THash/s*X)
挖礦速度,專業的說法叫算力,就是計算機每秒產生hash碰撞的能力。也就是說,我們手裡的礦機每秒能做多少次hash碰撞,就是算力。算力就是挖比特幣的能力,算力越高,挖得比特幣越多,回報越高。
在比特幣的世界裡,大約每10分鍾會記錄一個數據塊。所有的挖礦計算機都在嘗試打包這個數據塊提交,而最終成功生成這個數據塊的人,就可以得到一筆比特幣報酬。最初,大約每10分鍾就可以產生50個比特幣的比特幣報酬。但是該報酬每4年減半,現在每10分鍾比特幣網路就可以產生25個比特幣。
而要成功生成數據塊,就需要礦工需要找到那個有效的哈希值,而要得到正確的哈希值,沒有捷徑可以走,只能靠猜,猜的過程就是計算機隨機hash碰撞的過程,猜中了,你就得到了比特幣。
二、挖礦方法
1、挖礦方式:從一台礦機到大規模礦場
如果你開始嘗試挖礦,你需要准備一台礦機、一台能聯網的電腦、一個AUC、一個樹莓派、電源及各種連接線等。各種設備的連接順序為網線->樹莓派->MicroUSB線->AUC->4PIN連接線->礦機和電源。
圖3:礦場圖(成千上萬台礦機規模)
如今,抱一台礦機回家或者部署一個家庭小作坊挖礦(幾十台礦機)的中小曠工盈利空間非常有限,挖礦行業也正逐漸向有廉價電資源、有專業化部署能力的企業和團隊集中。
影響挖礦收益的因素有很多,比如礦機的性能和功耗、全網的算力和難度、礦場的部署和運維能力、有沒有廉價電的資源、以及幣價和政策的導向等等。目前優秀的礦企,他們擁有晶元研發的能力、大量的算力、專業的礦場部署和運營經驗等,在未來,資源、算力會越來越向這些礦企集中。
2、礦池
除了上面的裝備,你還需要一個必備的工具——礦池。礦池的作用是集合大量礦機算力,增大你得到比特幣的幾率,同時將你未來能得到的比特幣收益提前平均分配到你的賬戶里。
簡單的解釋如下:現在比特幣全網每10分鍾產生一個區塊,這個區塊包含25個比特幣。假設全球有1W人參與挖礦,那麼在這10分鍾內,只有1個幸運兒拿走了這25個比特幣,其它人則顆粒無收。而礦池的原理是大家組隊開采,並按約定的分配方式分配,使得礦工的比特幣收益趨於穩定,減少礦工的風險。在此以最常用的PPS分配方式為例,假設你的算力是10T,而整個礦池的算力是100T,你的算力占礦池算力的1/10,假設礦池一天能產生10個比特幣,那你每天就能拿到1個比特幣。
3、雲算力
在現實情況下,挖礦礦機常常供不應求,同時,礦機發貨需要很長的等待期。礦機安裝、調試、維護等流程非常復雜,需要耗費大量的精力,礦工們還要忍受礦機的噪音和熱量。對礦工來說,最大的成本還不是這些,是挖礦所消耗的高昂的電費,中小礦工的盈利空間越來越小甚至為負。
三、挖礦收益與風險
挖礦收益可以通過以下公式來計算:
挖礦收益=產生的比特幣*幣價-礦機成本-電費-託管費
如果你只是一個小礦工,一般情況只要扣除礦機成本和電費即可。
挖礦風險如下:
比特幣數量目前不足450萬枚 用不增發
比特幣幣價波動,價格回調就會導致回本周期延長。
挖礦難度的提升 目前我們的機子是可以滿足市場的需求
斷電 斷網的風險