read.cash Log in
@liwi more from that month

WIF 與 legacy address 生成 一般講起來就是公鑰跟私鑰,很好理解,但實作上如前面幾篇說的,蠻多瑣碎的編碼細節。目前這部分算是搞定了,不過就僅止於公私鑰的部分。 主要參考 https://reference.cash/protocol/blockchain/encoding/base58check https://en.bitcoin.it/wiki/Base58Check_encoding http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html https://bitcoin.stackexchange.com/questions/67795/how-to-generate-scriptpubkey 然後可以用 http://gobittest.appspot.com/Address 來檢查程式正確性 過程筆記如附圖 程式碼方面不管用什麼語言大概都要先把下列函式 / library 先準備起來 - 大整數處理(big integer) - Hexadecimal 顯示 <--> 餵給雜湊跟編碼函式的轉換介面 - Base58 編碼(這邊須注意是否確實採用中本聰選擇的那 58個字元) - SHA-256 - RIPMD-160 - ECDSA(我是用 openssl;這邊格式跟編碼也是另一個瑣碎事) 比想像中的還麻煩得多。不過有了這些函式骨幹接下來要做簽署的部分希望可以順一些。 雖然是已知用火,還是丟上來,看有沒有要一起補課玩玩的。 玩了這一遭 WIF / Legacy Address,當然也就也會想了解一下 CashAddr (以至於 SegWit)的實作。這就且待後話了。 比較有趣的想法跟發現大概是 HD 的機制。如果我想的沒錯,HD 機制用的好,import 的時候都只用 WIF 的話(如果錢包支援),其實一個人一輩子可能只需要背一組助記詞就夠了。 是的我最近在嘗試背助記詞。12個還蠻可以的。24 稍有難度還在努力(可能也因為沒有很認真背)。 補充:Base58 是雙向的,圖裡少了一個箭頭;說一下,就不重發了。 更新:附圖裡對 0x04 的解說或許是片面有誤的,待查證。見 https://noise.cash/post/lrxm2x79

4 comments

Log in to join in Reading is open to everyone. Replying needs an account.