Bitcoin-Core

為什麼原始比特幣交易是十六進制格式?

  • May 9, 2020

為什麼比特幣原始交易採用十六進制格式?我正在尋找關於這個主題的科學文章/書籍,但我找不到任何東西,所以我的問題是:為什麼它們是十六進制的,有沒有關於這個主題的文章?

因為與地址不同,十六進制原始交易並不意味著最終使用者可以看到或使用。十六進制很容易編碼和解碼(十六進制中的每兩個字元代表一個字節*,而在 base64 中,一個字元是 3/4 字節,Base58 是 log(58)/log(256) = 0.7322476244 字節)所以如果你很方便想調試你的實現。

*:這意味著如果您可以在事務中找到錯誤的字節,您可以在序列化的十六進制事務中為該字節 CTRL+F 並更改它,因為與 Base58 或 Base64 不同,編碼字元僅取決於一個字節的一部分,而不是兩個相鄰字節。Hex是具有該屬性的最高基礎。二進制(1 位除 8 位)、四進制(2 位除 8 位)、非八進制(3 位不除 8 位)和十六進制(4 位是 8 的最大除數,不是 8)是其他具有該屬性的基礎,因此十六進制是其中最有效的一種。

或者簡單地說,它是作為一種內部工具創建的,它不需要提供空間效率或避免類似字元(或校驗和,即使十六進制不依賴於校驗和)的新格式的複雜性,這是使用者友好的。

來自比特幣 QT 0.7.0 發行說明

添加了原始交易 API。見<https://gist.github.com/2839617>

Gavin Andresen創建並送出了十六進制交易編碼程式碼到 Bitcoin Core/QT寫道

我考慮過為原始事務解析/寫入 BIP 10 格式,但決定讀取/寫入 BIP 10 格式應該發生在更高級別而不是低級別 RPC 呼叫中。因此,“原始事務”只是簡單地以十六進制編碼為 JSON 字元串,編碼/解碼它們只是幾行已經編寫和調試過的程式碼。

引用自:https://bitcoin.stackexchange.com/questions/95814