Client
在 Bitcoin Core 0.13.1 (OSX) 中籤名並驗證消息?
作為對這裡的跟進:
使用 OpenSSL 在 Unix cmd 行上驗證比特幣 trx?
和這裡:
我使用比薩餅 trx,並在命令行(使用 openssl)進行驗證,這會產生預期的結果。當我想簽入圖形 BITCOIN QT 0.13.1 客戶端時,s.th。失敗。到目前為止我做了什麼:
我在文件中有這些值:
pizza.sighex 30450221009908144ca6539e09512b9295c8a27050d478fbb96f8addbc3d075544dc41328702201aa528be2b907d316d2da068dd9eb1e23243d97e444d59290d2fddf25269ee0e pizza.keyhex 3056301006072a8648ce3d020106052b8104000a034200 042e930f39ba62c6534ee98ed20ca98959d34aa9e057cda01cfd422c6bab3667b76426529382c23f42b9b08d7832d4fee1d6b437a8526e59667ce9c4e9dcebcabb pizza.hash2 c2d48f45d7fbeff644ddb72b0f60df6c275f0943444d7df8cc851b3d55782669
(注意:在原始網頁中,雙重雜湊是由 amaclin 以相反的順序給出的!)
$ xxd -r -p <pizza.sighex >pizza.sigraw $ xxd -r -p <pizza.keyhex | openssl pkey -pubin -inform der >pizza.keypem $ xxd -r -p <pizza.hashhex >pizza.hash2 $ openssl pkeyutl <pizza.hash2 -verify -pubin -inkey pizza.keypem -sigfile pizza.sigraw
–> 簽名驗證成功
現在嘗試在比特幣核心中,未壓縮的公鑰雜湊到這個比特幣地址:
17SkEw2md5avVNyYgj6RiXuQKNwkXaxFyQ
簽名為 base64 編碼字元串:
$ echo 30450221009908144ca6539e09512b9295c8a27050d478fbb96f8addbc3d075544dc41328702201aa528be2b907d316d2da068dd9eb1e23243d97e444d59290d2fddf25269ee0e | base64 -
MzA0NTAyMjEwMDk5MDgxNDRjYTY1MzllMDk1MTJiOTI5NWM4YTI3MDUwZDQ3OGZiYjk2ZjhhZGRiYzNkMDc1NTQ0ZGM0MTMyODcwMjIwMWFhNTI4YmUyYjkwN2QzMTZkMmRhMDY4ZGQ5ZWIxZTIzMjQzZDk3ZTQ0NGQ1OTI5MGQyZmRkZjI1MjY5ZWUwZQo =
進入QT客戶端,老是提示“消息驗證失敗”。所以我從頭開始嘗試,我轉到“簽名消息”選項卡,然後輸入:pubkey hash:
1DHG9SbeW3SXNpvbRUG3txXm1yDZTPKY9X
雜湊值:
56cc00a443f7b457ac3ec4bf1cc10ab3fa0c97fb173c27465b35766d313cd18c
並點擊“簽名”,以接收 base64 (?) 編碼字元串:
IKWqGIVDCcpTBgFNushFeOlDj/08B4LEzYl4LDrWLLKnPQrqaSjjFYrdeWGXH9eIgHw7F7bkRtPpwC6jOur+R8k=
現在我應該能夠在驗證選項卡中輸入這三個值,所以我將它們剪切並粘貼到欄位中,它們也失敗了。我找不到任何有關如何使用 Bitcoin Core 13.1 客戶端的相關資訊。我正在尋找一些描述或參考,以解釋基本邏輯。任何幫助表示讚賞:-)
Bitcoin Core 中的消息簽名功能使用不同的額外緊湊格式來編碼簽名。該算法還故意與交易中使用的算法不兼容(通過額外的雜湊步驟),以避免人們被欺騙簽署交易。