Bech32 是如何基於 BCH 碼的?
Bech32 BIP 聲明 Bech32 “基於 BCH 程式碼”。但是,如果您查看有關 BCH 程式碼的 wikipedia 頁面,您會看到很多數學方程式,但這些方程式似乎都與計算 bech32 校驗和的程式碼相似。
有人能解釋一下 bech32 基於 BCH 程式碼的哪些部分嗎?
維基百科文章中的數學主要與生成 BCH 程式碼有關——這是為 Bech32 的設計所做的,但顯然不是實現本身的一部分——以及糾正 Bech32 未完成的錯誤. 文章關於編碼的部分是空白的,這太糟糕了,因為這是在 Bech32 程式碼中完成的一件事。即使是 bech32 驗證也只能通過重新編碼並檢查新編碼是否匹配來工作。
Bech32 是由特徵 2 欄位構成的 BCH 程式碼。這允許它的符號是整數位長(在 bech32 的情況下為 5)。在這種類型的欄位中,數字被視為二進制多項式的係數,加法通過 xor 完成,乘法通過移位 xor 減少 mod a 多項式完成。因此,其工作方式看起來與您從代數描述中所期望的完全不同。
找到錯誤位置的花哨的 bech32 解碼器最終看起來也不太像維基百科中的代數解碼器,因為 bech32 的性能優於 BCH 程式碼這一事實所保證的性能,但要利用你必須超越普通代數解碼器。當我們設計 bech32 時,我們還發現了一個非 BCH 循環碼,它具有更好的錯誤檢測能力——並且會使用具有不同常數的相同編碼/驗證碼——但更喜歡堅持使用 BCH 碼,因為它證明了它的性能要簡單得多,並且有更多用於建構花哨的解碼器的選項,因為 BCH 碼可以代數解碼(如 Wikipedia 中所述)。
bech32的比特幣程式碼中的實現對它的數學以及數學與實現的關係進行了廣泛的描述。
我的理解是,一些研究涉及為 BCH 程式碼選擇最佳生成多項式,然後將其硬編碼到 bech32 標準中。
Pieter Wuille的本次演講中的更多資訊