鑑於目前的散列能力,礦池在實踐中實際上做了什麼?
鑑於目前的散列能力,礦池在實踐中實際上會做什麼來找到一個塊?
好的,這是我的想法,如果我在任何地方錯了,請糾正我:
- 這是塊頭的格式,實際上是散列的東西:
版本 (4b) + prevBlockHash (32b) + merkleHash (32b) + ctimestamp (4b) + ctarget (4b) + nonce (4b);
- 因此,按照規範,礦工所做的是檢查最後一個 NONCE(4 個字節)的所有可能值。
- 如果我們將其視為無符號整數,則範圍為 0-4294967295。
- 現在,您可以以 < 100 美元的價格購買 2Ghs 礦機。
- 鑑於您有可以散列 2GHs 的東西(非常便宜的解決方案,我什至不是在談論據報導池具有的 THs 系統),您可以在不到 3 秒的時間內暴力破解 0:4294967295 的範圍。
所以,問題是,是什麼在這大約 10 分鐘的時間內繼續挖礦?
我的懷疑是,找到一個 nonce 已經不是什麼大問題了,找到一個真正有 nonce 的合適的塊更是一個問題。
如果這是真的:
a) 礦工在實踐中做了什麼,玩弄時間戳,或者生成一些交易來改變默克爾根?
b) 是否有任何數學證據表明會找到這樣的塊?我的意思是,比特幣沒有被卡住,因為一些不幸的塊有如此糟糕的比特重合,最終會阻止結果最終獲得足夠的零來適應目標(我在問數學證明這是不可能的) .
對於給定的組合
版本 (4b) + prevBlockHash (32b) + merkleHash (32b) + ctimestamp (4b) + ctarget (4b),
不能保證會有一個有效的隨機數。通常沒有 - 有的機率是 1 除以難度,目前是 90 億。因此礦工嘗試不同的組合,嘗試每種組合的隨機數範圍,直到找到有效的解決方案。
a) 最通用的方法是改變生成交易中的無關數據來改變 Merkle 根。目前,為了減少礦池與礦工之間的通信成本,使用GBT等方法,礦工獲取塊模板,可以自己填寫生成交易。
b) 否;像許多核心密碼原語一樣,散列是一種“黑暗藝術” - 幾乎沒有證據證明這一切都有效。假設您只修復了 prevBlockHash,沒有證據表明您可以填寫其他詳細資訊以獲得有效的雜湊。但是,如果散列函式的行為或多或少與我們認為的一樣,則極不可能沒有解決方案。