是否有可能存在無法解決的塊?
是否有證據表明散列總是會產生結果?或者證明存在無法解決的塊?
我的理解是,即使我們遇到了一個無法解決的區塊,最終區塊中的交易也會發生變化,所以被散列的內容也會發生變化。當然,後續數據也可能無法解決……等等。
我只是好奇我們對塊的可解性做了什麼或不知道什麼。
這取決於你的意思。(評論:https ://en.bitcoin.it/wiki/Block_hashing_algorithm )
在今天的難度目標下,礦工是否有可能在不“解決”區塊的情況下耗盡區塊頭中的 32 位隨機數空間?是的。但是隨後礦工可以更改 coinbase 交易中的位(包括一個非官方稱為 的欄位
extraNonce
),更改 中的一些位version
,增加timestamp
,然後像您提到的那樣,從候選塊的主體中重新排列/添加/刪除交易。因此,根據您對問題的限製程度,礦工永遠不會真正用盡輸入來嘗試。但是輸出呢?當一個塊被解釋為一個 32 字節整數的雜湊值小於一個目標值(也是一個 32 字節整數)時,它就被“解決”了。所以我們當時正在尋找的是:
SHA256(data) < Target
這意味著在任何給定時間,一個塊都有許多潛在的解決方案(所有 20 字節左右的整數值都小於目前目標值)。如果無法在該集合中找到一個單一的解決方案,則意味著 SHA256 已損壞並且沒有我們認為的隨機、均勻分佈的輸出。
(在目前難度下)大部分積木都是無解的,但你的問題讓我思考你是如何看待積木的
散列總是會產生結果?
散列總是產生結果。大多數時候,由於困難,它不是協議正在尋找的結果。本質上,你有一些數據 X,你把它散列到一個數字 Y,如果 Y 小於全球公認的數字難度 Z,那麼你的塊就解決了;您可以宣布該區塊,其他人對其進行驗證,您的解決方案將成為鏈的一部分。比賽開始了!
如果將難度設置為最簡單的可能因素,那麼每次都會第一次找到解決方案。難度變化,總是努力確保解決一個塊排列(雜湊小於難度),平均每十分鐘一次。
我們遇到了一個無法解決的問題
“我們”不打區塊——對於“這是每個人都會處理的下一個區塊,去嘗試為它找到一個小於 X 的雜湊值”並沒有達成某種全球共識——每個礦工都可以自由地建構一個區塊但是牠喜歡並散列它,就像您和朋友可以自由選擇不同的彩票號碼並各自嘗試中獎一樣。
回到我的第一點,礦工建構一個塊並對其進行雜湊處理。它要麼會解決,要麼不會,如果碰巧它打包了那些交易,不管它做了什麼,它都會解決或不會,抽籤的運氣,並選擇它所做的任何事情的隨機數,並對它進行散列並得到小於的結果困難然後它是一個解決方案。快,宣布它並領取獎勵。
如果它隨機選擇組裝塊的方式有一點點偏差,它就無法解決;在目前難度下,以這種方式打包的那個區塊沒有解決方案。
礦工所要做的就是不斷改變區塊,並且每次找不到解決方案時都會這樣做。您可以進行一些小調整,例如對隨機數進行調整,然後重新散列。您可以遍歷每一個隨機數 - 每個隨機數都與其他隨機數一樣有可能獲勝。你可以耗盡所有的 nonce,更改時間戳,然後再次耗盡所有的 nonce。您可以如此快速地探勘,您可能會在時間戳之前用完隨機數,因此您必須更改有關該塊的其他內容以充分利用您的散列能力,但最終像 X 這樣建構的塊將以相同的方式散列,所以如果您建構它,散列它並且它不起作用你必須做一些事情來改變它所以你得到一個不同的散列..即你已經製作了另一個/不同的塊。
因此,對於任何給定的全球商定的難度,大多數區塊都是無法解決的,必須更改——交易 A 和時間戳 B 與 nonce C 的區塊與交易 A、時間戳 B 和 nonce D 的區塊不同——這可能與您對塊的看法不同。