區塊鏈nonce大小
Ⅰ 比特幣網路中什麼是「Blocks (區塊)」
每個區塊包含所有最近交易的信息,一個 Nonce (隨機數) 以及上一個區塊的哈希值。 在整個區塊的 SHA-256 哈希值低於當前目標值時,它便被標記為「已解決」 (已發布並通過多個節點驗證)。通常一次哈希很難達到目標,因此 Nonce 必須增加,區塊必須重新哈希上百萬次,才能達到目標。 Bitcoin 比特幣交易通過匯款人廣播到網路中,所有采礦的節點 (客戶端) 收集比特幣並將其添加到他們正在工作的區塊。如果交易額很大,超過了平均交易額,那麼網路將會扣除少量的交易手續費。 每個區塊中的第一個交易是特殊的: 它為第一個採到有效區塊的人創建新的比特幣。其它節點 (客戶端) 在該交易額正確的情況下僅會接受該區塊。每個區塊產生的比特幣的數量為 50,每 210000 個區塊減少一半 (大約為 4 年)。 網路嘗試每小時創建 6 個區塊。每 2016 個區塊 (大約兩周時間),所有的比特幣客戶端都會將這個目標與實際創建的區塊數量相比較,修改區塊採集的難度百分比以維持這一目標。 客戶端認為「最長的」區塊鏈是有效的。整個區塊鏈的「長度」是指難度相加最多的鏈,而不是擁有最多區塊的鏈。這可以避免某人偽造並創建大量低難度的區塊,欺騙網路將其接受為「最長」鏈。 點擊這里查看當前已採集區塊數目 沒有最大數目。區塊會不斷以 10 分鍾一個的速度添加到區塊鏈的末尾 是的。區塊用以證明交易在某個特定的時間存在。在所有比特幣都被採集後,交易仍然會發生。因此只要有人交易比特幣,區塊仍然會被創建。 沒有人可以准確說出。有一個采礦計算器會告訴您可能花去的時間。 沒有進度增加 1% 的說法。每次運算並不會增加進度。計算 24 小時後您獲得比特幣的幾率和您剛開始計算時是相等的。 這和您同時旋轉 37 個硬幣並使它們都正面朝上一樣。每次您嘗試,您成功的機會是相同的。
Ⅱ 詳解區塊頭
最近一直在看技術向的普及讀物,我覺得比看行情有意思。
在剛開始了解比特幣的時候,我就很想要知道一個區塊的數據大概是由哪些部分構成,知道了這些構成對我的理解有著莫大的便利性,還好我找到了。
區塊大小和交易計數器很好理解,區塊頭和交易則稍顯復雜。
區塊頭包括三組數據:
第一、父區塊哈希值的數據。我認為可以理解為基因。
第二、挖礦難度值、區塊時間戳以及Nonce。這一組數據記錄與挖礦有關的內容。
第三、Merkle樹根。這是個神奇的東西,可以先理解為描述區塊中所有交易的數據。
區塊鏈之所以叫鏈,就是因為它的結構是一條從後向前有序連接起來的數據結構,就像是一條尾巴永遠在變長的鏈子。
那是什麼原因導致這條數據這樣井然有序的從後向前的連接呢?這就得靠父區塊哈希值了。
從字面意思理解,這是來自於父親的哈希值。在區塊鏈中,我們稱呼當前區塊的前一個區塊為父區塊,相應的後一個區塊為子區塊。唯獨有一個區塊是特殊的,它沒有父區塊,它是孫悟空~不對,它叫創世區塊!
所謂的父區塊哈希值,就是父區塊的區塊頭哈希值。從表格2中可以看到,區塊頭中包含了各種數據,大小是80位元組,而這80位元組的數據經過哈希運算,會得到一個32位元組的字元串,這個32位元組的字元串就是區塊頭哈希值。
舉個例子(例中數據全是隨機亂輸入的),第198808個區塊的區塊頭哈希值是ade12318fbce...12ade413(32位元組),那麼第198809個區塊的區塊頭數據就是這樣的:
把198809區塊頭中的所有數據經過哈希運算得到一個32位元組的數據:bcf45896aefcd...33cde409(32位元組),那麼第198810個區塊的區塊頭數據就是這樣的:
把兩張圖放到一起,就能得到一個簡單的由2個區塊構成的鏈。而區塊鏈就是以這種方式構成的一條可以隨著時間流逝無限延長的鏈。
為什麼要這樣做呢?
一開始我有說,我認為父區塊哈希值可以理解為基因。如果我們的祖先有8條腿,我們人類可能就不是現在這個長相了,蜘蛛應該會非常可愛!
而父區塊哈希值如果出現變化,那麼把父區塊哈希值作為輸入條件的子區塊哈希值一定會出現變化,緊跟著孫區塊也一定會發生變化,如此這般,這個被改變的區塊之後所有的已有區塊都必須改變。
越是早創造的區塊,更改後需要的工作量越大,越不可能實現,而越新的區塊被改變的難度也就越低。這也是區塊鏈的交易一般需要有6個新區快建立以後才被確認交易完成的原因,因為這個時候,交易被更改的可能性已經基本沒有了。
憑著這個結構,區塊鏈實現了不可逆、不可篡改的特性!
Ⅲ 區塊鏈的區塊是怎麼產生的
第一步:區塊鏈系統里交易雙方發起交易,比如A要轉一筆錢給B;
第二步:系統里參與的節點搶奪記賬權,系統里選擇最具代表性的記賬生成區塊;
第三步:該區塊被廣播給網路里的所有參與者;
第四步:參與者同意交易有效;
第五步:該區塊被添加到鏈上,這條鏈提供永久透明的交易記錄;
第六步:資金從A轉移到B
Ⅳ 區塊鏈之工作量證明,挖礦是什麼
區塊鏈技術的核心概念之一是工作量證明(Proof-of-Work, POW),它作為礦工挖出新區塊的基礎,確保了區塊鏈的安全性。POW的工作機制簡單來說,就是礦工通過解決復雜的數學問題,來證明自己為區塊鏈網路做出了貢獻,從而獲取一定的比特幣獎勵。
工作量證明的概念最初是為了解決垃圾郵件問題,使用POW作為發送電子郵件的認證機制。盡管其在垃圾郵件問題上的實際效果仍有爭議,但在區塊鏈領域,POW的作用是確保網路的安全性和去中心化特性。
在理解工作量證明之前,首先需要了解哈希函數。哈希函數是一種將任意大小的數據轉換為固定大小輸出的函數,具備唯一性和不可逆性。在比特幣加密系統中,使用SHA256演算法作為哈希函數,這種演算法可以產生2^256種不同的輸出,理論上產生碰撞的幾率極其微小。
工作量證明的基本原理是要求礦工對輸入數據進行多次哈希運算,直到找到一個特定格式的哈希值。這個過程需要消耗大量的計算資源,證明了礦工投入了足夠的「工作量」。例如,在比特幣中,礦工需要找到一個哈希值,其前幾位為「0」,這需要大量的試錯和計算。
以「Hello, world!」為例,礦工需要在該字元串後添加一個隨機整數(Nonce),不斷進行SHA256哈希運算,直到得到的哈希值前四位為「0」。這個過程的計算次數就是礦工為了挖出新區塊所投入的工作量,也是POW機制的核心。
比特幣網路中的任何一個節點要生成新區塊,需要完成三個關鍵步驟:工作量證明函數、區塊內容和難度值。工作量證明函數決定了礦工需要進行多少次哈希運算,區塊內容包括輸入數據,而難度值則反映了需要進行的運算次數的難易程度。比特幣使用SHA256演算法作為工作量證明函數,區塊由區塊頭和包含的交易列表組成。
難度值的調整機制保證了新區塊的產生速率穩定在每10分鍾一個。全網的算力變化會觸發難度值的自動調整,以維持這個速率。當網路算力增加時,難度值會增加,反之則降低,確保新區塊的產生速率保持穩定。
工作量證明的目標值是通過計算公式得出的,它與難度值成反比。目標值的大小決定了礦工找到一個有效區塊所需的哈希值前導0的數量。礦工通過不斷嘗試不同的Nonce值,進行哈希運算,直到找到滿足目標值要求的哈希值。這個過程類似於體力勞動,需要大量的計算資源和時間。
因此,工作量證明在區塊鏈中扮演著至關重要的角色,它確保了網路的安全性和去中心化特性,同時也為礦工提供了激勵機制。通過工作量證明,比特幣網路實現了安全、公平的區塊生成機制,為區塊鏈技術的廣泛應用奠定了基礎。
Ⅳ 比特幣區塊里的各個欄位含義(先寫了個nonce)
nonce是個啥意思?根據bitcoin wiki
nonce是一個4-byte大小的區域,nonce的值設定使得該塊的hash是以一串0開頭的。
對於塊數據的一點點改變(比如nonce)都會引起block hash的巨大變化。由於逆向預測hash值相對應的一組bit值(hash原文)是不可行的,在嘗試足夠多的nonce值且計算每個nonce值相對應的block hash之後可以找到一個滿足有指定數量 0 bits (0比特位) 的hash值。而 0 bits的數量值是由difficult設定的。最終產生的hash須得是一個小於當前difficulty值。
因為這個迭代的計算耗費時間和資源,塊的出現也就是得到了正確的nonce值,這構成了 proof of work
關於以太坊里的nonce 網上很多解釋,很多一上來就是 交易計數器 , 然而卻把跟POW有關的丟了嗎?事實上以太坊里的nonce有兩種意思,一個是proof of work nonce,一個是account nonce。
那智能合約呢?合約也算是Account的一種,那也有nonce嗎?
是的,而且合約裡面的nonce也差不多,也是一個counter。在智能合約里,nonce的值代表的是該合約創建的合約數量。只有當一個合約創建另一個合約的時候才會增加nonce的值。但是當一個合約調用另一個合約中的method時 nonce的值是不變的。
在以太坊中nonce的值可以這樣來獲取(其實也就是屬於一個賬戶的交易數量):
但是這個方法只能獲取交易once的值。目前是沒有內置方法來訪問contract中的nonce值的,除了自己定義一個counter來計數...
那好,再來看一下Ethereum Block中的nonce:
以太坊和比特幣區塊鏈一樣,也需要proof of work(計劃轉移到股份證明也早已在做了)。在比特幣區塊鏈中,pow應該是要算出一個符合難度要求的值,通常是以一串0開頭的。這個難度一直在變化。可以查看 比特幣區塊鏈的POW難度變化 。
Ⅵ 區塊鏈有什麼原則(區塊鏈的原理和特徵)
研究前沿|建築中的區塊鏈:它將如何改變行業區塊鏈技術是一種革命性的工具,用於記錄交易並將它們鏈接在一起形成一個「鏈」,即分布式賬本。
建築公司使用區塊鏈來控制供應鏈和合同,即使是非常大的建築項目也將變得更容易管理。
區塊鏈是一系列相互關聯的數據「塊」,它們構成了一個分布式賬本,它可以被認為是一個文字鏈,每個鏈接一個項目中的一個單獨的事務。
如果一個供應商完成交付並履行其合同,則完成的合同將最終確定並添加為新的「塊」或鏈中的鏈接。這為區塊鏈提供了一種在查找信息時易於遵循的自然順序。
區塊鏈的三個原則將其定義為安全、去中心化和可擴展到任何規模的項目。
由於區塊鏈項目是分散的,它們帶走了項目中典型的信息層次結構。這提高了項目透明度,減少了對簡單目標的來回溝通的需要。結果是任何項目都可以通過區塊鏈技術提高效率。
雖然區塊鏈對許多行業都有影響,但在建築行業,它簡化了項目管理。
區塊鏈技術為建築行業提供了六個直接的好處:
區塊鏈帶來的好處是令人興奮的,但實施的成本可能很高,因為它需要參與項目的所有各方進行投資。
行業的懷疑是大規模實施的另一個挑戰,這些挑戰並非不可能克服,安全性、去中心化和可擴展性可以使任何規模的建設項目受益,前景實在誘人。
深入了解區塊鏈的共識機制及演算法原理所謂「共識機制」,是通過特殊節點的投票,在很短的時間內完成對交易的驗證和確認;對一筆交易,如果利益不相乾的若干個節點能夠達成共識,我們就可以認為全網對此也能夠達成共識。再通俗一點來講,如果中國一名微博大V、美國一名虛擬幣玩家、一名非洲留學生和一名歐洲旅行者互不相識,但他們都一致認為你是個好人,那麼基本上就可以斷定你這人還不壞。
要想整個區塊鏈網路節點維持一份相同的數據,同時保證每個參與者的公平性,整個體系的所有參與者必須要有統一的協議,也就是我們這里要將的共識演算法。比特幣所有的節點都遵循統一的協議規范。協議規范(共識演算法)由相關的共識規則組成,這些規則可以分為兩個大的核心:工作量證明與最長鏈機制。所有規則(共識)的最終體現就是比特幣的最長鏈。共識演算法的目的就是保證比特幣不停地在最長鏈條上運轉,從而保證整個記賬系統的一致性和可靠性。
區塊鏈中的用戶進行交易時不需要考慮對方的信用、不需要信任對方,也無需一個可信的中介機構或中央機構,只需要依據區塊鏈協議即可實現交易。這種不需要可信第三方中介就可以順利交易的前提是區塊鏈的共識機制,即在互不了解、信任的市場環境中,參與交易的各節點出於對自身利益考慮,沒有任何違規作弊的動機、行為,因此各節點會主動自覺遵守預先設定的規則,來判斷每一筆交易的真實性和可靠性,並將檢驗通過的記錄寫入到區塊鏈中。各節點的利益各不相同,邏輯上將它們沒有合謀欺騙作弊的動機產生,而當網路中有的節點擁有公共信譽時,這一點尤為明顯。區塊鏈技術運用基於數學原理的共識演算法,在節點之間建立「信任」網路,利用技術手段從而實現一種創新式的信用網路。
目前區款連行業內主流的共識演算法機制包含:工作量證明機制、權益證明機制、股份授權證明機制和Pool驗證池這四大類。
工作量證明機制即對於工作量的證明,是生成要加入到區塊鏈中的一筆新的交易信息(即新區塊)時必須滿足的要求。在基於工作量證明機制構建的區塊鏈網路中,節點通過計算隨機哈希散列的數值解爭奪記賬權,求得正確的數值解以生成區塊的能力是節點算力的具體表現。工作量證明機制具有完全去中心化的優點,在以工作量證明機制為共識的區塊鏈中,節點可以自由進出。大家所熟知的比特幣網路就應用工作量證明機制來生產新的貨幣。然而,由於工作量證明機制在比特幣網路中的應用已經吸引了全球計算機大部分的算力,其他想嘗試使用該機制的區塊鏈應用很難獲得同樣規模的算力來維持自身的安全。同時,基於工作量證明機制的挖礦行為還造成了大量的資源浪費,達成共識所需要的周期也較長,因此該機制並不適合商業應用。
2012年,化名SunnyKing的網友推出了Peercoin,該加密電子貨幣採用工作量證明機制發行新幣,採用權益證明機制維護網路安全,這是權益證明機制在加密電子貨幣中的首次應用。與要求證明人執行一定量的計算工作不同,權益證明要求證明人提供一定數量加密貨幣的所有權即可。權益證明機制的運作方式是,當創造一個新區塊時,礦工需要創建一個「幣權」交易,交易會按照預先設定的比例把一些幣發送給礦工本身。權益證明機制根據每個節點擁有代幣的比例和時間,依據演算法等比例地降低節點的挖礦難度,從而加快了尋找隨機數的速度。這種共識機制可以縮短達成共識所需的時間,但本質上仍然需要網路中的節點進行挖礦運算。因此,PoS機制並沒有從根本上解決PoW機制難以應用於商業領域的問題。
股份授權證明機制是一種新的保障網路安全的共識機制。它在嘗試解決傳統的PoW機制和PoS機制問題的同時,還能通過實施科技式的民主抵消中心化所帶來的負面效應。
股份授權證明機制與董事會投票類似,該機制擁有一個內置的實時股權人投票系統,就像系統隨時都在召開一個永不散場的股東大會,所有股東都在這里投票決定公司決策。基於DPoS機制建立的區塊鏈的去中心化依賴於一定數量的代表,而非全體用戶。在這樣的區塊鏈中,全體節點投票選舉出一定數量的節點代表,由他們來代理全體節點確認區塊、維持系統有序運行。同時,區塊鏈中的全體節點具有隨時罷免和任命代表的權力。如果必要,全體節點可以通過投票讓現任節點代表失去代表資格,重新選舉新的代表,實現實時的民主。
股份授權證明機制可以大大縮小參與驗證和記賬節點的數量,從而達到秒級的共識驗證。然而,該共識機制仍然不能完美解決區塊鏈在商業中的應用問題,因為該共識機制無法擺脫對於代幣的依賴,而在很多商業應用中並不需要代幣的存在。
Pool驗證池基於傳統的分布式一致性技術建立,並輔之以數據驗證機制,是目前區塊鏈中廣泛使用的一種共識機制。
Pool驗證池不需要依賴代幣就可以工作,在成熟的分布式一致性演算法(Pasox、Raft)基礎之上,可以實現秒級共識驗證,更適合有多方參與的多中心商業模式。不過,Pool驗證池也存在一些不足,例如該共識機制能夠實現的分布式程度不如PoW機制等
這里主要講解區塊鏈工作量證明機制的一些演算法原理以及比特幣網路是如何證明自己的工作量的,希望大家能夠對共識演算法有一個基本的認識。
工作量證明系統的主要特徵是客戶端要做一定難度的工作來得到一個結果,驗證方則很容易通過結果來檢查客戶端是不是做了相應的工作。這種方案的一個核心特徵是不對稱性:工作對於請求方是適中中的,對於驗證方是易於驗證的。它與驗證碼不同,驗證碼是易於被人類解決而不是易於被計算機解決。
下圖所示的為工作量證明流程。
舉個例子,給個一個基本的字元創「hello,world!」,我們給出的工作量要求是,可以在這個字元創後面添加一個叫做nonce(隨機數)的整數值,對變更後(添加nonce)的字元創進行SHA-256運算,如果得到的結果(一十六進制的形式表示)以「0000」開頭的,則驗證通過。為了達到這個工作量證明的目標,需要不停地遞增nonce值,對得到的字元創進行SHA-256哈希運算。按照這個規則,需要經過4251次運算,才能找到前導為4個0的哈希散列。
通過這個示例我們對工作量證明機制有了一個初步的理解。有人或許認為如果工作量證明只是這樣一個過程,那是不是只要記住nonce為4521使計算能通過驗證就行了,當然不是了,這只是一個例子。
下面我們將輸入簡單的變更為」Hello,World!+整數值」,整數值取1~1000,也就是說將輸入變成一個1~1000的數組:Hello,World!1;Hello,World!2;...;Hello,World!1000。然後對數組中的每一個輸入依次進行上面的工作量證明—找到前導為4個0的哈希散列。
由於哈希值偽隨機的特性,根據概率論的相關知識容易計算出,預計要進行2的16次方次數的嘗試,才能得到前導為4個0的哈希散列。而統計一下剛剛進行的1000次計算的實際結果會發現,進行計算的平均次數為66958次,十分接近2的16次方(65536)。在這個例子中,數學期望的計算次數實際就是要求的「工作量」,重復進行多次的工作量證明會是一個符合統計學規律的概率事件。
統計輸入的字元創與得到對應目標結果實際使用的計算次數如下:
對於比特幣網路中的任何節點,如果想生成一個新的區塊加入到區塊鏈中,則必須解決出比特幣網路出的這道謎題。這道題的關鍵要素是工作量證明函數、區塊及難度值。工作量證明函數是這道題的計算方法,區塊是這道題的輸入數據,難度值決定了解這道題的所需要的計算量。
比特幣網路中使用的工作量證明函數正是上文提及的SHA-256。區塊其實就是在工作量證明環節產生的。曠工通過不停地構造區塊數據,檢驗每次計算出的結果是否滿足要求的工作量,從而判斷該區塊是不是符合網路難度。區塊頭即比特幣工作量證明函數的輸入數據。
難度值是礦工們挖掘的重要參考指標,它決定了曠工需要經過多少次哈希運算才能產生一個合法的區塊。比特幣網路大約每10分鍾生成一個區塊,如果在不同的全網算力條件下,新區塊的產生基本都保持這個速度,難度值必須根據全網算力的變化進行調整。總的原則即為無論挖礦能力如何,使得網路始終保持10分鍾產生一個新區塊。
難度值的調整是在每個完整節點中獨立自動發生的。每隔2016個區塊,所有節點都會按照統一的格式自動調整難度值,這個公式是由最新產生的2016個區塊的花費時長與期望時長(按每10分鍾產生一個取款,則期望時長為20160分鍾)比較得出來的,根據實際時長一期望時長的比值進行調整。也就是說,如果區塊產生的速度比10分鍾快,則增加難度值;反正,則降低難度值。用公式來表達如下:
新難度值=舊難度值*(20160分鍾/過去2016個區塊花費時長)。
工作量證明需要有一個目標值。比特幣工作量證明的目標值(Target)的計算公式如下:
目標值=最大目標值/難度值,其中最大目標值為一個恆定值
目標值的大小與難度值成反比,比特幣工作量證明的達成就是礦中計算出來的區塊哈希值必須小於目標值。
我們也可以將比特幣工作量的過程簡單的理解成,通過不停變更區塊頭(即嘗試不同nonce值)並將其作為輸入,進行SHA-256哈希運算,找出一個有特定格式哈希值的過程(即要求有一定數量的前導0),而要求的前導0個數越多,難度越大。
可以把比特幣將這道工作量證明謎題的步驟大致歸納如下:
該過程可以用下圖表示:
比特幣的工作量證明,就是我們俗稱「挖礦」所做的主要工作。理解工作量證明機制,將為我們進一步理解比特幣區塊鏈的共識機制奠定基礎。
區塊鏈的技術原理是什麼?
區塊鏈技術涉及的關鍵點包括:去中心化(Decentralized)、去信任(Trustless)、集體維護(Collectivelymaintain)、可靠資料庫(ReliableDatabase)、時間戳(Timestamp)、非對稱加密(AsymmetricCryptography)等。
區塊鏈技術重新定義了網路中信用的生成方式:在系統中,參與者無需了解其他人的背景資料,也不需要藉助第三方機構的擔保或保證,區塊鏈技術保障了系統對價值轉移的活動進行記錄、傳輸、存儲,其最後的結果一定是可信的。
(6)區塊鏈nonce大小擴展閱讀
區塊鏈技術原理的來源可歸納為一個數學問題:拜占庭將軍問題。拜占庭將軍問題延伸到互聯網生活中來,其內涵可概括為:在互聯網大背景下,當需要與不熟悉的對手方進行價值交換活動時,人們如何才能防止不會被其中的惡意破壞者欺騙、迷惑從而做出錯誤的決策。
進一步將拜占庭將軍問題延伸到技術領域中來,其內涵可概括為:在缺少可信任的中央節點和可信任的通道的情況下,分布在網路中的各個節點應如何達成共識。區塊鏈技術解決了聞名已久的拜占庭將軍問題——它提供了一種無需信任單個節點、還能創建共識網路的方法。