Address

ELI5:什麼是 Base58Check 編碼?

  • May 24, 2018

我已經看過關於如何做的文章,並且我已經閱讀了關於它是什麼的 wiki ,但是這些解釋太複雜了。有人可以解釋它是什麼以及為什麼它被稱為 Base58Check 編碼嗎?不經過這些步驟而生成的地址在比特幣中仍然有效嗎?

這是base58.h中原始bitcoind客戶端提供的解釋

// Why base-58 instead of standard base-64 encoding?
// - Don't want 0OIl characters that look the same in some fonts and
//      could be used to create visually identical looking account numbers.
// - A string with non-alphanumeric characters is not as easily accepted as an account number.
// - E-mail usually won't line-break if there's no punctuation to break at.
// - Doubleclicking selects the whole number as one word if it's all alphanumeric.

為了進一步解決這個問題,像bs58check這樣的 npm 包究竟做了什麼?描述是這樣的

在 bs58 上擴展的 base58check 的直接實現。

有人可以解釋它是什麼以及為什麼它被稱為 Base58Check 編碼嗎?

“Base58Check”這個名稱有兩個部分。第一部分是“ Base58 ”。這是相當不言自明的,編碼使用 Base 58。這意味著有 58 個數字由 58 個字元表示。一個數字是 0 到 57 之間的數字,就像十進制系統(或以 10 為底)中的數字一樣,它是 0 到 9 之間的數字。由於每個數字都應該是一個字元,因此我們需要有一個不同的“每個數字的字母“。對於基數 58,我們使用字母表123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz,其中數字 0 由字元1表示,數字 57 由字元 表示z。為了比較,十進製字母表是0123456789用字元表示的數字00和字元表示的數字9 9

名稱的第二部分是“檢查”。這指的是校驗和。計算出我們要編碼的數據的 SHA256 雙精度,並將該雜湊的前四個字節用作校驗和。這是一種錯誤檢測方法,有助於確保我們收到的數據正確且未損壞。在我們執行基本轉換以生成基本 58 字元串之前,這四個字節被附加到我們正在編碼的數據中。

與電腦中的任何數據一樣,整個 pre-base58 字節字元串可以解釋為一個非常大的整數。從那裡,很容易執行到 base 58 的基本轉換,從而生成最終的 base 58 字元串。

不經過這些步驟而生成的地址在比特幣中仍然有效嗎?

不經過這些步驟就無法生成地址,因此不可能不經過這些步驟來生成地址。

為了進一步解決這個問題,像 bs58check 這樣的 npm 包究竟做了什麼?描述是這樣的

它們實現了從字節到 Base58Check 編碼字元串的整個轉換。

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