比特幣sha256難度
比特幣挖礦是消耗計算資源來處理交易,確保網路安全以及保持網路中每個人的信息同步的過程。它可以理解為是比特幣的數據中心,區別在於其完全去中心化的設計,礦工在世界各國進行操作,沒有人可以對網路具有控制權。這個過程因為同淘金類似而被稱為「挖礦」,因為它也是一種用於發行新比特幣的臨時機制。然而,與淘金不同的是,比特幣挖礦對那些確保安全支付網路運行的服務提供獎勵。在最後一個比特幣發行之後,挖礦仍然是必須的。
簡而言之,比特幣挖礦計算的是基於SHA256演算法的數學難題,確認網路交易,比特幣網路會根據礦工貢獻算力的大小給予的等分的比特幣獎勵。目前,比特幣挖礦經歷了三個階段,CPU、GPU、ASIC,目前,以ASIC礦機挖礦一家獨大,其中,阿瓦隆礦機尤其突出,阿瓦隆礦機一直走在礦機行業的前列,是比特幣挖礦行業的領頭羊,目前,搭乘三代晶元的礦機已進入市場,第四代晶元據說正在研發中。
【拓展資料】
任何人均可以在專門的硬體上運行軟體而成為比特幣礦工。挖礦軟體通過P2P網路監聽交易廣播,執行恰當的任務以處理並確認這些交易。比特幣礦工完成這些工作能賺取用戶支付的用於加速交易處理的交易手續費以及按固定公式增發的比特幣。
新的交易需要被包含在一個具有數學工作量證明的區塊中才能被確認。這種證明很難生成因為它只能通過每秒嘗試數十億次的計算來產生。礦工們需要在他們的區塊被接受並拿到獎勵前運行這些計算。隨著更多的人開始挖礦,尋找有效區塊的難度就會由網路自動增加以確保找到區塊的平均時間保持在10分鍾。因此,挖礦的競爭非常激烈,沒有一個個體礦工能夠控制塊鏈里所包含的內容。
工作量證明還被設計成必須依賴以往的區塊,這樣便強制了塊鏈的時間順序。這種設計使得撤銷以往的交易變得極其困難,因為需要重新計算所有後續區塊的工作量證明。當兩個區塊同時被找到,礦工會處理接收到的*9個區塊,一旦找到下一個區塊便將其轉至最長的塊鏈。這樣就確保采礦過程維持一個基於處理能力的全局一致性。
比特幣礦工既不能通過作弊增加自己的報酬,也不能處理那些破壞比特幣網路的欺詐交易,因為所有的比特幣節點都會拒絕含有違反比特幣協議規則的無效數據的區塊。因此,即使不是所有比特幣礦工都可以信任,比特幣網路仍然是安全的。
❷ SHA256是什麼
SHA-256是比特幣一些列數字貨幣使用的加密演算法。然而,它使用了大量的計算能力和處理時間,迫使礦工組建采礦池以獲取收益。
❸ 比特幣 原理 sha256 多少次
比特幣是一個共識網路,促成了一個全新的支付系統和一種完全數字化的貨幣。它是第一個去中心化的對等支付網路,由其用戶自己掌控而無須中央管理機構或中間人。從用戶的角度來看,比特幣很像互聯網的現金。比特幣也可以看作是目前最傑出的三式簿記系統。
任何人均可以在專門的硬體上運行軟體而成為比特幣礦工。挖礦軟體通過P2P網路監聽交易廣播,執行恰當的任務以處理並確認這些交易。比特幣礦工完成這些工作能賺取用戶支付的用於加速交易處理的交易手續費以及按固定公式增發的比特幣。
新的交易需要被包含在一個具有數學工作量證明的區塊中才能被確認。這種證明很難生成因為它只能通過每秒嘗試數十億次的計算來產生。礦工們需要在他們的區塊被接受並拿到獎勵前運行這些計算。隨著更多的人開始挖礦,尋找有效區塊的難度就會由網路自動增加以確保找到區塊的平均時間保持在10分鍾。因此,挖礦的競爭非常激烈,沒有一個個體礦工能夠控制塊鏈里所包含的內容。
工作量證明還被設計成必須依賴以往的區塊,這樣便強制了塊鏈的時間順序。這種設計使得撤銷以往的交易變得極其困難,因為需要重新計算所有後續區塊的工作量證明。當兩個區塊同時被找到,礦工會處理接收到的第一個區塊,一旦找到下一個區塊便將其轉至最長的塊鏈。這樣就確保采礦過程維持一個基於處理能力的全局一致性。
比特幣礦工既不能通過作弊增加自己的報酬,也不能處理那些破壞比特幣網路的欺詐交易,因為所有的比特幣節點都會拒絕含有違反比特幣協議規則的無效數據的區塊。因此,即使不是所有比特幣礦工都可以信任,比特幣網路仍然是安全的。
sha256是一種加密演算法。
❹ 關於比特幣以及相關數字貨幣的幾個嚴重疑問
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可以根據當前難度求出的。除了x之外,你還可以嘗試改動merkle_root和ntime。由於hash的特性,找這樣一個x只能暴力搜索。
一旦你找到了x,你就可以廣播一個新的block,其他客戶端會驗證你的block是否合法。如果你的block被接受,由於每個block中的第一筆交易必須是將新產生25個比特幣發送到某個地址,當然你會把這個地址設為你所擁有的地址來得到這25個比特幣。
---------------------------------------------------------------
比特幣從開始到現在的每一筆交易記錄都保存在網路上,整個比特幣網路維護的一個巨大的交易記錄文件(現在大約12G)。 這個文件的更新周期平均是10分鍾,新加入的交易記錄叫做一個block,而這個碩大的文件由一串block組成,叫做block chain.
為什麼是25個比特幣?
這是規定。最初是50個比特幣,每產生剩下比特幣的一半,這個所得就會減半,這樣最終能產生的比特幣總量趨近於2100萬。如果你現在仍然聲稱挖到了50個比特幣,這是不會被其他客戶端接受的,這個block就算白挖了。
怎麼保證更新周期平均是10分鍾?
TARGET越小,解出x的難度就越大,每產生2016個block(約14天),網路會根據這段時間產生新block的平均間隔調整之後的TARGET。
是不是計算速度最快的人總是先解出來?
不是。你總是想把挖礦所得據為己有,所以每個人在計算時,發送挖礦所得的地址是不一樣的,這樣merkle_root就不同,也就是說每個人是從不同的初始狀態開始求解的。
同時解出來怎麼辦?
block chain會出現分叉,部分客戶端接受了A,部分接受了B,直到某個分支變得更長,所有人就會選擇這個更長的分支。如果你挖出來的不幸沒有被選中,你的挖礦所得就無效了。
既然選更長的分支,那我用很低的難度去求解怎麼辦?
客戶端在眾多分支中找到符合當前難度且最長的。
這些計算浪費了嗎?
如果你要把一筆錢花兩次,你需要這么做。挖到一個新的block,但是藏著不廣播,並繼續挖礦。找到商家A,支付比特幣,讓網路上的其他人挖到block並寫入這筆交易記錄。找到商家B,支付比特幣,寫入自己挖的block。如果你能搶先挖到兩個block並廣播出去,所有人會以你這個更長的分支為當前的block chain,商家A收到的比特幣就不被承認了。這樣攻擊成功的概率取決於你計算hash的速度。整個網路的計算力足夠高的話,這樣的攻擊或者成功率極低,或者成本極大。
❺ 什麼是SHA256
SHA 家族
SHA (Secure Hash Algorithm,譯作安全散列演算法) 是美國國家安全局 (NSA) 設計,美國國家標准與技術研究院 (NIST) 發布的一系列密碼散列函數。正式名稱為 SHA 的家族第一個成員發布於 1993年。然而現在的人們給它取了一個非正式的名稱 SHA-0 以避免與它的後繼者混淆。兩年之後, SHA-1,第一個 SHA 的後繼者發布了。 另外還有四種變體,曾經發布以提升輸出的范圍和變更一些細微設計: SHA-224, SHA-256, SHA-384 和 SHA-512 (這些有時候也被稱做 SHA-2)。
SHA-0 和 SHA-1
最初載明的演算法於 1993年發布,稱做安全散列標准 (Secure Hash Standard),FIPS PUB 180。這個版本現在常被稱為 "SHA-0"。它在發布之後很快就被 NSA 撤回,並且以 1995年發布的修訂版本 FIPS PUB 180-1 (通常稱為 "SHA-1") 取代。根據 NSA 的說法,它修正了一個在原始演算法中會降低密碼安全性的錯誤。然而 NSA 並沒有提供任何進一步的解釋或證明該錯誤已被修正。1998年,在一次對 SHA-0 的攻擊中發現這次攻擊並不能適用於 SHA-1 — 我們不知道這是否就是 NSA 所發現的錯誤,但這或許暗示我們這次修正已經提升了安全性。SHA-1 已經被公眾密碼社群做了非常嚴密的檢驗而還沒發現到有不安全的地方,它現在被認為是安全的。
SHA-0 和 SHA-1 會從一個最大 2^64 位元的訊息中產生一串 160 位元的摘要然後以設計 MD4 及 MD5 訊息摘要演算法的 MIT 教授 Ronald L. Rivest 類似的原理為基礎來加密。
SHA-0 的密碼分析
在 CRYPTO 98 上,兩位法國研究者展示了一次對 SHA-0 的攻擊 (Chabaud and Joux, 1998): 散列碰撞可以復雜到 2^61 時被發現;小於 2^80 是理想的相同大小散列函數。
2004年時,Biham 和 Chen 發現了 SHA-0 的近似碰撞 — 兩個訊息可以散列出相同的數值;在這種情況之下,142 和 160 位元是一樣的。他們也發現了 SHA-0 在 80 次之後減少到 62 位元的完整碰撞。
2004年8月12日,Joux, Carribault, Lemuet 和 Jalby 宣布了完整 SHA-0 演算法的散列碰撞。這是歸納 Chabaud 和 Joux 的攻擊所完成的結果。發現這個碰撞要復雜到 2^51, 並且用一台有 256 顆 Itanium2 處理器的超級電腦耗時大約 80,000 CPU 工作時 。
2004年8月17日,在 CRYPTO 2004 的 Rump 會議上,Wang, Feng, Lai, 和 Yu 宣布了攻擊 MD5、SHA-0 和其他散列函數的初步結果。他們對 SHA-0 攻擊復雜到 2^40,這意味著他們攻擊的成果比 Joux 還有其他人所做的更好。該次 Rump 會議的簡短摘要可以在 這里找到,而他們在 sci.crypt 的討論,例如: 這些結果建議計劃使用 SHA-1 作為新的密碼系統的人需要重新考慮。
更長的變種
NIST 發布了三個額外的 SHA 變體,每個都有更長的訊息摘要。以它們的摘要長度 (以位元計算) 加在原名後面來命名:"SHA-256", "SHA-384" 和 "SHA-512"。它們發布於 2001年的 FIPS PUB 180-2 草稿中,隨即通過審查和評論。包含 SHA-1 的 FIPS PUB 180-2,於 2002年以官方標准發布。這些新的散列函數並沒有接受像 SHA-1 一樣的公眾密碼社群做詳細的檢驗,所以它們的密碼安全性還不被大家廣泛的信任。2004年2月,發布了一次 FIPS PUB 180-2 的變更通知,加入了一個額外的變種 "SHA-224",定義了符合雙金鑰 3DES 所需的金鑰長度。
Gilbert 和 Handschuh (2003) 研究了新的變種並且沒有發現弱點。
SHAd
SHAd 函數是一個簡單的相同 SHA 函數的重述:
SHAd-256(m)=SHA-256(SHA-256(m))。它會克服有關延伸長度攻擊的問題。
應用
SHA-1, SHA-224, SHA-256, SHA-384 和 SHA-512 都被需要安全散列演算法的美國聯邦政府所應用,他們也使用其他的密碼演算法和協定來保護敏感的未保密資料。FIPS PUB 180-1 也鼓勵私人或商業組織使用 SHA-1 加密。Fritz-chip 將很可能使用 SHA-1 散列函數來實現個人電腦上的數位版權管理。
首先推動安全散列演算法出版的是已合並的數位簽章標准。
SHA 散列函數已被做為 SHACAL 分組密碼演算法的基礎。
SHA-1 的描述
以下是 SHA-1 演算法的偽代碼:
(Initialize variables:)
a = h0 = 0x67452301
b = h1 = 0xEFCDAB89
c = h2 = 0x98BADCFE
d = h3 = 0x10325476
e = h4 = 0xC3D2E1F0
(Pre-processing:)
paddedmessage = (message) append 1
while length(paddedmessage) mod 512 > 448:
paddedmessage = paddedmessage append 0
paddedmessage = paddedmessage append (length(message) in 64-bit format)
(Process the message in successive 512-bit chunks:)
while 512-bit chunk(s) remain(s):
break the current chunk into sixteen 32-bit words w(i), 0 <= i <= 15
(Extend the sixteen 32-bit words into eighty 32-bit words:)
for i from 16 to 79:
w(i) = (w(i-3) xor w(i-8) xor w(i-14) xor w(i-16)) leftrotate 1
(Main loop:)
for i from 0 to 79:
temp = (a leftrotate 5) + f(b,c,d) + e + k + w(i) (note: all addition is mod 2^32)
where:
(0 <= i <= 19): f(b,c,d) = (b and c) or ((not b) and d), k = 0x5A827999
(20 <= i <= 39): f(b,c,d) = (b xor c xor d), k = 0x6ED9EBA1
(40 <= i <= 59): f(b,c,d) = (b and c) or (b and d) or (c and d), k = 0x8F1BBCDC
(60 <= i <= 79): f(b,c,d) = (b xor c xor d), k = 0xCA62C1D6
e = d
d = c
c = b leftrotate 30
b = a
a = temp
h0 = h0 + a
h1 = h1 + b
h2 = h2 + c
h3 = h3 + d
h4 = h4 + e
digest = hash = h0 append h1 append h2 append h3 append h4
注意:FIPS PUB 180-1 展示的構想,用以下的公式替代可以增進效能:
(0 <= i <= 19): f(b,c,d) = (d xor (b and (c xor d)))
(40 <= i <= 59): f(b,c,d) = (b and c) or (d and (b or c)))
❻ 比特幣演算法原理
比特幣演算法主要有兩種,分別是橢圓曲線數字簽名演算法和SHA256哈希演算法。
橢圓曲線數字簽名演算法主要運用在比特幣公鑰和私鑰的生成過程中,該演算法是構成比特幣系統的基石。SHA-256哈希演算法主要是運用在比特幣的工作量證明機制中。
比特幣產生的原理是經過復雜的運演算法產生的特解,挖礦就是尋找特解的過程。不過比特幣的總數量只有2100萬個,而且隨著比特幣不斷被挖掘,越往後產生比特幣的難度會增加,可能獲得比特幣的成本要比比特幣本身的價格高。
比特幣的區塊由區塊頭及該區塊所包含的交易列表組成,區塊頭的大小為80位元組,由4位元組的版本號、32位元組的上一個區塊的散列值、32位元組的 Merkle Root Hash、4位元組的時間戳(當前時間)、4位元組的當前難度值、4位元組的隨機數組成。擁有80位元組固定長度的區塊頭,就是用於比特幣工作量證明的輸入字元串。不停的變更區塊頭中的隨機數即 nonce 的數值,並對每次變更後的的區塊頭做雙重 SHA256運算,將結果值與當前網路的目標值做對比,如果小於目標值,則解題成功,工作量證明完成。
比特幣的本質其實是一堆復雜演算法所生成的一組方程組的特解(該解具有唯一性)。比特幣是世界上第一種分布式的虛擬貨幣,其沒有特定的發行中心,比特幣的網路由所有用戶構成,因為沒有中心的存在能夠保證了數據的安全性。
❼ 比特幣計算
比特幣計算需要以下參數:
1、block的版本 version
2、上一個block的hash值: prev_hash
3、需要寫入的交易記錄的hash樹的值: merkle_root
4、更新時間: ntime
5、當前難度: nbits
挖礦的過程就是找到x使得
SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET
上式的x的范圍是0~2^32, TARGET可以根據當前難度求出的。除了x之外,還可以嘗試改動merkle_root和ntime。由於hash的特性,找這樣一個x只能暴力搜索。
一旦計算者A找到了x,就可以廣播一個新的block,其他客戶端會驗證計算者A發布的block是否合法。
如果發布的block被接受,由於每個block中的第一筆交易必須是將新產生25個比特幣發送到某個地址,當然計算者A會把這個地址設為計算者A所擁有的地址來得到這25個比特幣。
❽ 比特幣挖礦是解決什麼問題的
題主你好:
在很早期,比特幣算力難度非常低時,還可以使用計算機依照演算法進行大量的運算來「開采」比特幣。
在用戶「開采」比特幣時,需要用電腦搜尋64位的數字就行,然後通過反 復解謎與其他淘金者相互競爭,為比特幣網路提供所需的數字,如果用戶的電腦成功地創造出一組數字,那麼就將會獲得區塊所獎勵的比特幣。但是由於比特幣價值不斷升高,目前比特幣挖礦的用戶數量非常龐大,有上百萬的專業礦機在同時挖礦,而每10分鍾產出的比特幣又十分有限,形成了千萬人搶1個區塊的情況出現,所以,如果你用個人電腦單獨挖礦,有可能一整年也搶不到一個區塊,在這種情況下,人們就想出了一種組隊挖礦的方法,於是礦池(mining pool)誕生了。在中幣上有很多的用戶就是在挖礦後玩的。
望題主採納。