導航:首頁 > 比特幣區 > 比特幣散列演算法

比特幣散列演算法

發布時間:2024-07-25 18:43:46

A. 比特幣挖礦是什麼意義在哪

"比特幣挖礦"的概念取自於現實經濟生活中已有的概念,黃金挖礦、白銀挖礦等,因為礦物是有價值的,所以才驅使人們去付出勞動力來挖。

意義:對比特幣網路而言,比特幣挖礦不僅是發幣還是維持比特幣系統運行的基礎保障;每一次比特幣挖礦行為背後,都是在打造一台新型"印鈔機"。

產生原理

從比特幣的本質說起,比特幣的本質其實就是一堆復雜演算法所生成的特解。特解是指方程組所能得到有限個解中的一組。而每一個特解都能解開方程並且是唯一的。

以鈔票來比喻的話,比特幣就是鈔票的冠字型大小碼,知道了某張鈔票上的冠字型大小碼,就擁有了這張鈔票。而挖礦的過程就是通過龐大的計算量不斷的去尋求這個方程組的特解,這個方程組被設計成了只有 2100 萬個特解,所以比特幣的上限就是 2100 萬個。

B. 共識演算法(分布式下的一致性演算法)

共識演算法(分布式下的一致性演算法)

業務場景:

達到的效果:可以保證在過半節點正常的情況下,所有的寫入操作不會丟失。

Zab協議並不保證強一致性,也不是弱一致性,而是在一定限度內的強一致性。

缺點:

缺點:

區塊鏈1.0時代:比特幣,作用就是去中心化的貨幣,無國界的貨幣,並且可以匿名性的洗錢
區塊鏈2.0時代:代表以太坊,引入了智能合約的概念,發揮其 去中心化和不可篡改的特性,可以實現類似於 追溯、拍賣、投票等業務場景。

區塊鏈技術的實用價值:
無國界虛擬貨幣:比如比特幣

模擬一個拍賣(盲拍)的業務場景(發布一個智能合約):
https://solidity.readthedocs.io/en/latest/solidity-by-example.html#simple-open-auction

普通拍賣可能存在的問題:

商家A對一件商品公開自己要拍賣,智能合約在規定的時間會開始接收競拍(參與競拍的人需要支付保證金(以太幣)),在競拍結束之後,價格最高的人會完成支付,其它的買家的保證金會全額退回。
然後成功競拍者可以線下去找賣家,證明自己的身份,然後獲得競拍品

優點:

工作量證明( PoW )通過計算一個數值( nonce ),使得拼揍上交易數據後內容的 Hash 值滿足規定的上限。在節點成功找到滿足的Hash值之後,會馬上對全網進行廣播打包區塊,網路的節點收到廣播打包區塊,會立刻對其進行驗證

舉個例子,給定的一個基本的字元串」Hello, world!」,我們給出的工作量要求是,可以在這個字元串後面添加一個叫做nonce的整數值,對變更後(添加nonce)的字元串進行SHA256哈希運算,
如果得到的哈希結果(以16進制的形式表示)是以」0000」開頭的,則驗證通過。為了達到這個工作量證明的目標。我們需要不停的遞增nonce值,對得到的新字元串進行SHA256哈希運算。
按照這個規則,我們需要經過4251次計算才能找到恰好前4位為0的哈希散列。計算完之後,然後廣播到臨近的節點,臨近的節點會先驗算交易是否合法(金額是否異常),再驗證hash值是否滿足要求,都滿足的話,就會把這個數據塊添加到自己的賬本中。

優點:

缺點:

計算難度值會因為 股東持有的 幣齡而降低,為挖礦無形之中提升了壁壘,股東更容易算出結果值(難度更低),從而避免過度的算力競爭,節省電力,提升系統的穩定性。
因為從人性的角度,股東更不願意讓不安全的現象發生(比如攻擊主鏈),因為會造成信用降低,從而自己的礦幣貶值。讓股東擁有更多的記賬權,讓主鏈更安全。

擴展可以參考我之前寫過的zab專欄博客
https://www.jianshu.com/nb/32551354

C. 什麼是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)))

D. 區塊鏈密碼演算法是怎樣的

區塊鏈作為新興技術受到越來越廣泛的關注,是一種傳統技術在互聯網時代下的新的應用,這其中包括分布式數據存儲技術、共識機制和密碼學等。隨著各種區塊鏈研究聯盟的創建,相關研究得到了越來越多的資金和人員支持。區塊鏈使用的Hash演算法、零知識證明、環簽名等密碼演算法:

Hash演算法

哈希演算法作為區塊鏈基礎技術,Hash函數的本質是將任意長度(有限)的一組數據映射到一組已定義長度的數據流中。若此函數同時滿足:

(1)對任意輸入的一組數據Hash值的計算都特別簡單;

(2)想要找到2個不同的擁有相同Hash值的數據是計算困難的。

滿足上述兩條性質的Hash函數也被稱為加密Hash函數,不引起矛盾的情況下,Hash函數通常指的是加密Hash函數。對於Hash函數,找到使得被稱為一次碰撞。當前流行的Hash函數有MD5,SHA1,SHA2,SHA3。

比特幣使用的是SHA256,大多區塊鏈系統使用的都是SHA256演算法。所以這里先介紹一下SHA256。

1、 SHA256演算法步驟

STEP1:附加填充比特。對報文進行填充使報文長度與448模512同餘(長度=448mod512),填充的比特數范圍是1到512,填充比特串的最高位為1,其餘位為0。

STEP2:附加長度值。將用64-bit表示的初始報文(填充前)的位長度附加在步驟1的結果後(低位位元組優先)。

STEP3:初始化緩存。使用一個256-bit的緩存來存放該散列函數的中間及最終結果。

STEP4:處理512-bit(16個字)報文分組序列。該演算法使用了六種基本邏輯函數,由64 步迭代運算組成。每步都以256-bit緩存值為輸入,然後更新緩存內容。每步使用一個32-bit 常數值Kt和一個32-bit Wt。其中Wt是分組之後的報文,t=1,2,...,16 。

STEP5:所有的512-bit分組處理完畢後,對於SHA256演算法最後一個分組產生的輸出便是256-bit的報文。

2、環簽名

2001年,Rivest, shamir和Tauman三位密碼學家首次提出了環簽名。是一種簡化的群簽名,只有環成員沒有管理者,不需要環成員間的合作。環簽名方案中簽名者首先選定一個臨時的簽名者集合,集合中包括簽名者。然後簽名者利用自己的私鑰和簽名集合中其他人的公鑰就可以獨立的產生簽名,而無需他人的幫助。簽名者集合中的成員可能並不知道自己被包含在其中。

環簽名方案由以下幾部分構成:

(1)密鑰生成。為環中每個成員產生一個密鑰對(公鑰PKi,私鑰SKi)。

(2)簽名。簽名者用自己的私鑰和任意n個環成員(包括自己)的公鑰為消息m生成簽名a。

(3)簽名驗證。驗證者根據環簽名和消息m,驗證簽名是否為環中成員所簽,如果有效就接收,否則丟棄。

環簽名滿足的性質:

(1)無條件匿名性:攻擊者無法確定簽名是由環中哪個成員生成,即使在獲得環成員私鑰的情況下,概率也不超過1/n。

(2)正確性:簽名必需能被所有其他人驗證。

(3)不可偽造性:環中其他成員不能偽造真實簽名者簽名,外部攻擊者即使在獲得某個有效環簽名的基礎上,也不能為消息m偽造一個簽名。

3、環簽名和群簽名的比較

(1)匿名性。都是一種個體代表群體簽名的體制,驗證者能驗證簽名為群體中某個成員所簽,但並不能知道為哪個成員,以達到簽名者匿名的作用。

(2)可追蹤性。群簽名中,群管理員的存在保證了簽名的可追蹤性。群管理員可以撤銷簽名,揭露真正的簽名者。環簽名本身無法揭示簽名者,除非簽名者本身想暴露或者在簽名中添加額外的信息。提出了一個可驗證的環簽名方案,方案中真實簽名者希望驗證者知道自己的身份,此時真實簽名者可以通過透露自己掌握的秘密信息來證實自己的身份。

(3)管理系統。群簽名由群管理員管理,環簽名不需要管理,簽名者只有選擇一個可能的簽名者集合,獲得其公鑰,然後公布這個集合即可,所有成員平等。

鏈喬教育在線旗下學碩創新區塊鏈技術工作站是中國教育部學校規劃建設發展中心開展的「智慧學習工場2020-學碩創新工作站 」唯一獲準的「區塊鏈技術專業」試點工作站。專業站立足為學生提供多樣化成長路徑,推進專業學位研究生產學研結合培養模式改革,構建應用型、復合型人才培養體系。

E. 虛擬貨幣和什麼演算法有關

Litecoin

Litecoin(LTC)發布於2011年10月7日,是目前市值最高的山寨幣,約為 BTC 市值的2%。目前單價為2.31美元,總幣值 3800 萬美元。

這同樣是一種分布式(去中心化)的數字貨幣。不同於比特幣使用的 SHA256 挖礦演算法,LTC 採用 scrypt 演算法。獨特的演算法也是從山寨幣中脫穎而出的關鍵,scrypt 演算法使用 SHA256 作為其子程序,而 scrypt 自身需要大量的內存,每個散列作為輸入的種子使用的,然後與需要大量的內存存儲另一種子偽隨機序列,共同生成序列的偽隨機點而輸出哈希值。在 BTC(Bitcoin)的開采依靠單純的顯卡挖礦已經力不從心(利用一般配置顯卡挖到一個 BTC 大概需要十幾到數十天),各種價格不菲挖礦機的出現提高了普通人通過挖礦獲得 BTC 的門檻,而 LTC 在使用 PC 顯卡挖礦上具有一定優勢。(本段來源於知乎。)

Litecoin 對比 BTC 在技術上做了一點的改進,如果現在 BTC 是金,那 LTC 暫時是銀。

Litecoin 的最大優點是能更快確認真偽,該虛擬貨幣由 Charles Lee 設計和維護。比特幣的交易需要驗證,驗證的時間平均在10分鍾以上,大多數交易網站驗證需要1個小時。Litecoin 交易確認平均為2.5分鍾,開發者聲稱縮短驗證增加了虛擬貨幣的實用性。定製機器和 AMD GPU 的比特幣采礦效率最高,令使用 CPU 采礦的礦工幾乎無利可圖。Litecoin 的采礦排除了 GPU 和定製處理器,因此不過於依賴少量專業礦工。

PPCoin

PPCoin(PPC) 發布於2012年8月19,在 BTC 原有技術上有所提升。使用 proof-of-stake,並加入 coin age 概念。

PPCoin 是 Bitcoin 的分叉項目,目標是實現能源效率,並盡可能保持原 Bitcoin 的最好性能。PPCoin 單價0.22美元,總幣值 400 萬美元。

PPCoin 沒有一個固定的貨幣供應量上限,但這並不意味著 PPCoin 比 Bitcoin 有明顯通脹。可以將 Bitcoin 比做黃金,黃金每年的通脹是1-3%左右,雖然黃金並沒有已知的貨幣供應量上限,但我們仍知道它是可靠的稀缺品。

PPCoin 的鑄造有兩種類型,工作證明及股權證明。工作證明的鑄幣率受摩爾定律影響,這取決於我們的工作證明能力的成倍增長。而大家都知道的是摩爾定律最終會結束,到那時通脹的 PPCoin 可能已經接近黃金的水平。而股權證明鑄造每年最多通脹 1%。與此同時,PPCoin 的交易費用被銷毀以抗衡通脹。所以整體來說, PPCoin 的鑄幣設計仍是未來一個非常低的通脹設計,可以達到和 Bitcoin 相媲美的程度。

PPCoin 的獎勵方式類似彩票,會根據礦工持有的 PPCoin 數量決定獲勝幾率,創始人之一的 Sunny King 說,他們的設計是基於長期能量效率的新概念。

Terracoin

Terracoin(TRC)發布於2012年10月26,總幣量 4200 萬。每塊速度為2分鍾,比 LTC 稍快一些。技術上沒有太多特別之處,類似 BTC 每4年產量減半。

不過運營團隊似乎有較強商業背景,可能會在流通上優於其他比特幣。虛擬貨幣現在的發展越來越得到重視,現在一些有商業背景的團隊進入,會加速虛擬貨幣的發展。

Namecoin

Namecoin 是一個基於比特幣技術的分布式域名系統,其原理和 Bitcoin 一樣, 這個開源軟體首次發布的日期是2011年4月18日。

Namecoin 產生於一個不同於 Bitcoin 主交易區塊的起源塊, 使用一個新的區塊鏈(blockchain),獨立於 Bitcoin 的區塊鏈之外,因為是基於 Bitcoin,域名的安全性, 分布性, 魯棒性, 加密性, 遷移都有數學保證。可以用挖 Bitcoin 的方式,同時挖 Namecoin。

F. 比特幣———一個幣值8萬多元人民幣

接觸過數字貨幣的人對比特幣都不陌生,它是數字貨幣的祖宗,如果你在2010年的時候用三美元買1萬個比特幣留到現在,那麼現在你的身價是8億多人民幣,是不是不可思議

區塊鏈技術被稱為是繼,蒸汽機,電,互聯網,之後的一個劃時代的標志,

比特幣的底層技術是什麼呢?

是區塊鏈技術,那麼區塊鏈技術又是什麼呢,舉個通俗易懂的例子,你去招商銀行存錢,存了100萬,有一天招商銀行的銀行系統被黑客攻擊了,並且把你的賬戶的錢轉走了50萬,你的存款單也丟了,這時候銀行不想把你丟了的錢補給你,你是不是要抓狂。區塊鏈就是有無數的存儲系統,而且裡面都存有相同的內容,沒有人可以修改已經生產的賬單,就像以前只有一個賬本,但是用了區塊鏈之後就有無數的記賬賬本,而且分布在各個地方。更專業一點說,區塊鏈技術是由利用塊鏈式數據結構來驗證和存儲數據,利用分布式節點共識演算法來生成和更新數據,利用密碼學的方式來保證數據傳輸和訪問的安全,利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分布式基礎架構與計算方式。

但是現在是數字貨幣泛濫的年代,各種新的數字貨幣發行進行洗錢跑路,最後一地雞毛,對於目前國家提倡的區塊鏈技術和企業鏈改如果落到實地,這樣的數字貨幣還是可以持有的,我們知道只有大公司才能上市,但是所以公司都能上鏈

如果你對某個數字貨幣非常了解,並且知道它的運營情況,有沒有落地到實地幫助公司進行鏈改,技術支撐等,不然盡量不要去買。

回到BTC,BTC公鏈被稱為區塊鏈的1.0時代,採用的是POW共識機制,也就是工作量證明,你獲得多少貨幣,取決於你挖礦貢獻的有效工作,電腦性能越好,分給你的礦就越多,POW機制解決了拜占庭將軍問題,就是在互相不信任的情況下,只要多少人都信任,那麼就能保證系統的正確運作,但是也有一定的缺陷,就是處理交易的速度太慢,礦工們需要不斷的通過計算來碰撞哈希值,這是勞民傷財且效率低下的。TPS系統吞吐量(用戶並發量)7筆/秒。ETH這條公鏈被稱為區塊鏈的2.0時代,ETH提出了新的共識機制POW+POS(權益證明)簡單來說就是你持有的幣越多,你的權益就越高,因為你持有的幣越多,持有幣的時間越久,你的計算難度就會降低,挖礦會容易一些,TPS為21筆/秒。EOS被成為3.0的公鏈,DPOS共識機制(拜占庭容錯的委託權益證明)對於POS機制的加密貨幣,每個節點都可以創建區塊,並按照個人的持股比例獲得「利息」,出塊時間3秒,TPS為5000筆/秒。

一、從比特幣看區塊鏈技術

(一)比特幣(Bitcoin)是一種數字加密貨幣比特幣是一種數字加密貨幣,由中本聰(SatoshiNakamoto)2009 年1 月25 日設計上線。比特幣的產生、發行和交易機制與傳統貨幣不同。傳統貨幣的產生、發行和交易依託於中央銀行、商業銀行等中心化的二元模式;而比特幣的發行不需要中心化的金融中介,比特幣社區用戶可通過比特幣區塊鏈網路發行和管理數字加密貨幣。比特幣是以黃金模式發行,人們形象地將該過程稱為「挖礦(Mining)」,並將所有提供計算力的節點稱為「礦工(Miner)」。目前,比特幣挖礦的發行方式使每位礦工都可以從中獲取6.25 個比特幣的收益。實際上,比特幣的發行過程是求解多重哈希值解方程(Hash Function)的過程。節點挖礦獲得比特幣的過程,是通過計算機進行大量計算求出合理的哈希值來實現的。簡而言之,這個過程的主要目標是求解交易雙方的公鑰。每次求出的解都會作為下次計算的初始條件,節點在此基礎計算新結果。當一個節點解出一組之前未解出的哈希值時,系統向全網路發布,各節點查驗本地資料庫。如果各節點發現該解正確,並且資料庫中沒有此解記錄,將確認並記錄該解的合法性。當所有節點都確認並記錄完畢時,求出該解的節點便被獎勵一定數量的比特幣。作為比特幣最底層的核心技術,區塊鏈技術來源於2014 年10 月大英圖書館的一次研討會。比特幣是區塊鏈技術最成功的金融應用,它以公開賬本的形式在全網記錄所有交易信息。隨著比特幣的普及和應用,區塊鏈技術日益受到金融 科技 界的關注。

(二)區塊鏈是弱中心化的分布式賬本協議區塊鏈技術提供了一份公共的分布式安全賬本,是一種開放式的價值傳遞協議。實際上,區塊鏈是一個由使用密碼學方法相關聯產生的數據塊構成的弱中心化的資料庫,任何發生在此區塊鏈網路上的交易,均會以約定的演算法記錄到區塊鏈系統上。所有節點都保存一份完整的數據備份,包含自該區塊鏈系統形成以來的所有交易記錄。區塊鏈由一個個區塊組成。區塊是區塊鏈的基本存儲單元,記錄了10 分鍾內各節點的全部交易信息。每一個數據區塊中包含一次交易信息,用於驗證信息的有效性,並為下一個區塊的生成做准備。區塊由三部分組成:本區塊的地址、交易單和前一個區塊的地址。當區塊鏈上一個節點發起一筆交易時,該節點需要將信息向其他節點進行公告。該節點用私鑰加密信息,從而可有效防止信息偽造。由於了解 歷史 交易信息,收到信息的節點利用備份信息能夠判斷交易是否真實。各節點驗證成功後,將最後一個區塊的地址與交易信息結合,形成一個新區塊,並打上時間戳(Timestamp)連接到區塊鏈上,完成交易的全過程。由於每個區塊都擁有前一個區塊的地址,人們可以通過後一區塊地址找到前一區塊,直至初始區塊。因此,區塊鏈就是由根據時間順序相連接的區塊構成的完整交易信息鏈條。

(三)區塊鏈的特點

區塊鏈是一個全新的資料庫系統,具有弱中心化、不可篡改、包容性等特點。其中,弱中心化、不可篡改是區塊鏈技術區別於傳統技術的核心特徵。這兩個特徵使得由區塊鏈技術構建的系統能夠通過系統機制設置,實現「自信任」。

1. 弱中心化。區塊鏈系統的每個節點都保存著一份完整數據備份,能夠有效預防中央伺服器發生故障而導致的網路癱瘓和數據丟失,以及黑客對單個節點的惡意攻擊,從而保證數據的安全。除非有人能同時控制系統中超過51% 的節點,否則對於單個節點的攻擊不能影響其他節點數據的內容。

2. 不可篡改。區塊鏈系統是一個公共的總賬本,系統全部數據都公開、透明地記錄在該賬本上。所有數據通過網路共識演算法記錄,每筆基於區塊鏈交易的新信息都會向全網發布,經各個節點逐一確認、保存後,將收到的交易信息形成新區塊,確保區塊鏈系統信息不可篡改、無法作假、可以追溯。同時,區塊鏈技術使用隨機散列演算法和時間戳技術,節點在驗證時會蓋上時間戳,提供交易時間證明,保證同筆交易的唯一性。如果要修改某個區塊的交易信息,必須要完成該區塊及之後區塊的所有信息。由於修改後會造成哈希值與原來的哈希值不同,無法通過其他節點確認,將使得修改無效,大大提高了篡改信息的難度。因此,區塊鏈技術可以為交易提供可靠的信用保證。其不可篡改的特性為解決合同沖突提供了有效方案,可以應用於存儲並公證永久性記錄和需要確保信息真實性的領域。如,財產所有權的公證。

3. 包容性。區塊鏈技術以演算法為基礎,摒棄了不同國家文化和經濟差異,使各國機構可以建立統一的信用體系。此外,區塊鏈技術是對外開源和共享的:任何進入區塊鏈的機構和個人,不僅能提交記錄,還能得到完整的系統 歷史 交易記錄,並對信息所有者確權;同時,由於區塊鏈系統運行於互聯網,符合要求的任何機構和個人都能以節點的方式加入該系統。

4.溯源,公開透明。

因為區塊鏈或者說是數字貨幣涉及的知識與比應用比較多,感興趣的朋友可以點關注,我會整理和發布更多的區塊鏈和數字貨幣的知識

G. 挖礦是什麼意思,要用高端顯卡

挖礦意思是虛擬貨幣的生產過程。要用高端顯卡。

虛擬貨幣的生產過程被稱為「挖礦」,最重要的是「礦機」。比特幣挖礦機就是用於賺取比特幣的計算機。這類計算機一般有專業的挖礦晶元,多採用安裝大量顯卡的方式工作,耗電量較大。計算機下載挖礦軟體然後運行特定演算法,與遠方伺服器通訊後可得到相應比特幣。

原理:

比特幣礦工通過解決具有一定工作量的工作量證明機制問題,來管理比特幣網路—確認交易並且防止雙重支付。由於散列運算是不可逆的,查找到匹配要求的隨機調整數非常困難,需要一個可以預計總次數的不斷試錯過程。

這時,工作量證明機制就發揮作用了。當一個節點找到了匹配要求的解,那麼它就可以向全網廣播自己的結果。其他節點就可以接收這個新解出來的數據塊,並檢驗其是否匹配規則。如果其他節點通過計算散列值發現確實滿足要求,那麼該數據塊有效,其他的節點就會接受該數據塊。

H. 區塊鏈的密碼技術有

密碼學技術是區塊鏈技術的核心。區塊鏈的密碼技術有數字簽名演算法和哈希演算法。
數字簽名演算法
數字簽名演算法是數字簽名標準的一個子集,表示了只用作數字簽名的一個特定的公鑰演算法。密鑰運行在由SHA-1產生的消息哈希:為了驗證一個簽名,要重新計算消息的哈希,使用公鑰解密簽名然後比較結果。縮寫為DSA。

數字簽名是電子簽名的特殊形式。到目前為止,至少已經有 20 多個國家通過法律 認可電子簽名,其中包括歐盟和美國,我國的電子簽名法於 2004 年 8 月 28 日第十屆全 國人民代表大會常務委員會第十一次會議通過。數字簽名在 ISO 7498-2 標准中定義為: 「附加在數據單元上的一些數據,或是對數據單元所作的密碼變換,這種數據和變換允許數據單元的接收者用以確認數據單元來源和數據單元的完整性,並保護數據,防止被人(例如接收者)進行偽造」。數字簽名機制提供了一種鑒別方法,以解決偽造、抵賴、冒充和篡改等問題,利用數據加密技術、數據變換技術,使收發數據雙方能夠滿足兩個條件:接收方能夠鑒別發送方所宣稱的身份;發送方以後不能否認其發送過該數據這一 事實。
數字簽名是密碼學理論中的一個重要分支。它的提出是為了對電子文檔進行簽名,以 替代傳統紙質文檔上的手寫簽名,因此它必須具備 5 個特性。
(1)簽名是可信的。
(2)簽名是不可偽造的。
(3)簽名是不可重用的。
(4)簽名的文件是不可改變的。
(5)簽名是不可抵賴的。
哈希(hash)演算法
Hash,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,其中散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,但是不可逆向推導出輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
哈希(Hash)演算法,它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。同時,哈希函數可以將任意長度的輸入經過變化以後得到固定長度的輸出。哈希函數的這種單向特徵和輸出數據長度固定的特徵使得它可以生成消息或者數據。
以比特幣區塊鏈為代表,其中工作量證明和密鑰編碼過程中多次使用了二次哈希,如SHA(SHA256(k))或者RIPEMD160(SHA256(K)),這種方式帶來的好處是增加了工作量或者在不清楚協議的情況下增加破解難度。
以比特幣區塊鏈為代表,主要使用的兩個哈希函數分別是:
1.SHA-256,主要用於完成PoW(工作量證明)計算;
2.RIPEMD160,主要用於生成比特幣地址。如下圖1所示,為比特幣從公鑰生成地址的流程。

I. 什麼是哈希

散列是指從可變大小的輸入生成固定大小的輸出的過程。這是通過使用稱為散列函數(作為散列演算法實現)的數學公式來完成的。

盡管並非所有哈希函數都涉及密碼學的使用 ,但所謂的密碼哈希函數是加密貨幣的核心。多虧了它們,區塊鏈和其他分布式系統能夠實現顯著水平的 數據完整性和安全性。

傳統和加密散列函數都是確定性的。確定性意味著只要輸入不變,散列演算法將始終產生相同的輸出(也稱為摘要或散列)。

通常,加密貨幣的散列演算法被設計為單向函數,這意味著如果沒有大量的計算時間和資源,它們就無法輕易恢復。換句話說,從輸入創建輸出非常容易,但在相反的方向(僅從輸出生成輸入)相對困難。一般來說,越難找到輸入,哈希演算法被認為越安全。

不同的散列函數將產生不同大小的輸出,但每種散列演算法可能的輸出大小始終是恆定的。例如,SHA-256 演算法只能生成 256 位的輸出,而 SHA-1 將始終生成 160 位的摘要。

為了說明這一點,讓我們通過 SHA-256 哈希演算法(比特幣中使用的演算法)運行「Bitcoin」和「bitcoin」這兩個詞。

請注意,微小的更改(第一個字母的大小寫)會導致完全不同的哈希值。但由於我們使用 SHA-256,輸出將始終具有 256 位(或 64 個字元)的固定大小 - 無論輸入大小如何。此外,無論我們通過演算法運行這兩個單詞多少次,兩個輸出都將保持不變。

相反,如果我們通過 SHA-1 哈希演算法運行相同的輸入,我們將得到以下結果:

值得注意的是,首字母縮略詞 SHA 代表安全哈希演算法。它指的是一組加密哈希函數,包括 SHA-0 和 SHA-1 演算法以及 SHA-2 和 SHA-3 組。SHA-256 是 SHA-2 組的一部分,還有 SHA-512 和其他變體。目前,只有 SHA-2 和 SHA-3 組被認為是安全的。

傳統的哈希函數具有廣泛的用例,包括資料庫查找、大文件分析和數據管理。另一方面,加密散列函數廣泛用於信息安全應用,例如消息認證和數字指紋。就比特幣而言,加密哈希函數是挖礦過程的重要組成部分, 也在新地址和密鑰的生成中發揮作用。

散列的真正威力在於處理大量信息時。例如,可以通過哈希函數運行一個大文件或數據集,然後使用其輸出來快速驗證數據的准確性和完整性。由於散列函數的確定性,這是可能的:輸入將始終產生簡化的、壓縮的輸出(散列)。這種技術消除了存儲和「記住」大量數據的需要。

散列在區塊鏈技術的背景下特別有用。比特幣區塊鏈有幾個涉及散列的操作,其中大部分在挖掘過程中。事實上,幾乎所有的加密貨幣協議都依賴散列來將交易組鏈接和壓縮成塊,並在每個塊之間產生加密鏈接,從而有效地創建區塊鏈。

同樣,部署密碼技術的散列函數可以定義為密碼散列函數。一般來說,破解密碼哈希函數需要無數次的蠻力嘗試。對於「還原」加密哈希函數的人來說,他們需要通過反復試驗來猜測輸入是什麼,直到產生相應的輸出。然而,也有可能不同的輸入產生完全相同的輸出,在這種情況下會發生「沖突」。

從技術上講,加密哈希函數需要遵循三個屬性才能被視為有效安全。我們可以將這些描述為抗碰撞性、抗原像性和抗二次原像性。

在討論每個屬性之前,讓我們用三個簡短的句子總結它們的邏輯。

如前所述,當不同的輸入產生完全相同的散列時,就會發生沖突。因此,哈希函數被認為是抗沖突的,直到有人發現沖突為止。請注意,任何散列函數都將始終存在沖突,因為可能的輸入是無限的,而可能的輸出是有限的。

換句話說,當發現碰撞的可能性非常低以至於需要數百萬年的計算時,哈希函數是抗碰撞的。因此,盡管沒有無沖突的哈希函數,但其 中一些函數足夠強大,可以被視為具有抵抗力(例如,SHA-256)。

在各種 SHA 演算法中,SHA-0 和 SHA-1 組不再安全,因為已經發現沖突。目前,SHA-2 和 SHA-3組被認為是抗沖突的。

原像電阻的特性與單向函數的概念有關。當有人找到生成特定輸出的輸入的可能性非常低時,哈希函數被認為是抗原像的。

請注意,此屬性與前一個屬性不同,因為攻擊者會試圖通過查看給定的輸出來猜測輸入是什麼。另一方面,當有人發現產生相同輸出的兩個不同輸入時,就會發生沖突,但使用哪個輸入並不重要。

原像抗性的特性對於保護數據很有價值,因為消息的簡單散列可以證明其真實性,而無需披露信息。在實踐中,許多服務提供商和 Web 應用程序存儲和使用從密碼生成的哈希值,而不是明文密碼。

為簡化起見,我們可以說第二原像電阻介於其他兩個屬性之間。當有人能夠找到一個特定的輸入,該輸入生成與他們已經知道的另一個輸入相同的輸出時,就會發生二次原像攻擊。

換句話說,第二原像攻擊涉及尋找碰撞,但不是搜索生成相同散列的兩個隨機輸入,而是搜索生成由另一個特定輸入生成的相同散列的輸入。

因此,任何抗碰撞的哈希函數也能抗第二原像攻擊,因為後者總是意味著碰撞。然而,人們仍然可以對抗碰撞函數執行原像攻擊,因為它意味著從單個輸出中找到單個輸入。

比特幣挖礦有很多步驟 涉及哈希函數,例如檢查余額、鏈接交易輸入和輸出,以及對區塊內的交易進行哈希處理以形成 默克爾樹。但比特幣區塊鏈安全的主要原因之一 是礦工需要執行無數的散列操作,以便最終為下一個區塊找到有效的解決方案。

具體來說,礦工在為其候選塊創建哈希值時必須嘗試幾種不同的輸入。本質上,如果他們生成以一定數量的零開頭的輸出哈希,他們將只能驗證他們的塊。零的數量決定了挖礦難度,它根據網路的哈希率而變化。

在這種情況下,哈希率表示在比特幣挖礦中投入了多少計算機能力。如果網路的哈希率增加,比特幣協議會自動調整挖礦難度,使挖出一個區塊所需的平均時間保持在接近 10 分鍾。相反,如果幾個礦工決定停止挖礦,導致算力大幅下降,則會調整挖礦難度,使其更容易挖礦(直到平均出塊時間回到10分鍾)。

請注意,礦工不必發現沖突,因為他們可以生成多個散列作為有效輸出(從一定數量的零開始)。所以對於某個區塊有幾種可能的解決方案,礦工只需要找到其中一種——根據挖礦難度確定的閾值。

由於比特幣挖礦是一項成本密集型任務,礦工沒有理由欺騙系統,因為這會導致重大的經濟損失。加入區塊鏈的礦工越多,它就變得越大越強大。(國內禁止參與挖礦)

毫無疑問,哈希函數是計算機科學中必不可少的工具,尤其是在處理大量數據時。當與密碼學結合時,散列演算法可以非常通用,以多種不同的方式提供安全性和身份驗證。因此,加密哈希函數對幾乎所有加密貨幣網路都至關重要,因此了解它們的屬性和工作機制對於任何對區塊鏈技術感興趣的人肯定會有所幫助。

閱讀全文

與比特幣散列演算法相關的資料

熱點內容
上海發數字貨幣 瀏覽:424
注冊礦池時為什麼老說錯誤 瀏覽:598
相城區數字貨幣去哪裡去申請 瀏覽:929
數字貨幣存在的問題有哪些 瀏覽:985
比特幣周日有交易嗎 瀏覽:576
數字貨幣和紙幣有什麼不同 瀏覽:734
柚子幣比特幣以太坊的優勢 瀏覽:533
比特幣去向記錄 瀏覽:993
礦機和比特幣的關系 瀏覽:562
中國禁的了比特幣嗎 瀏覽:337
比特幣抗通脹 瀏覽:733
比特幣挖礦難度圖標 瀏覽:265
btcusd漲跌 瀏覽:391
比特幣什麼時候恢復提幣 瀏覽:173
以太坊eos模式 瀏覽:2
比特幣每天都可以提收益嗎 瀏覽:55
btc合約百分百倉位 瀏覽:425
會計中虛擬貨幣 瀏覽:142
比特幣如何做合約 瀏覽:351
比特幣相關論文總結 瀏覽:474