Bitcoin
驗證乙太坊智能合約中的比特幣簽名消息
我想探索在乙太坊智能合約中驗證已在比特幣錢包中籤名的消息的選項。
- 乙太坊智能合約被賦予了比特幣地址列表
- 乙太坊智能合約可以驗證傳入的函式呼叫 msg、v、r、s 是否與之前給定的任何比特幣地址匹配
現在,問題是內置
ecrecover()
只給出了一個結果乙太坊地址,我不知道我該如何從這裡開始。
- 內置的 ecrecover() 可以處理比特幣地址嗎
- 有沒有辦法將比特幣地址映射到乙太坊地址 1:1
- 內置的 ecrecover() 可以提供完整的公鑰輸出嗎?
- 如果內置的 ecrecover() 不起作用,我可以編寫自己的恢復來輸出比特幣地址並花費合理的氣體嗎?
- 我可以以某種方式將比特幣地址(或公鑰)預處理為乙太坊 ecrecover() 兼容格式嗎?
…所有類型都與一個問題有關
- 我需要完整的比特幣公鑰作為起點還是比特幣地址就足夠了?
乙太坊和比特幣都對私鑰 secp256k1 使用相同的橢圓曲線。不同之處在於乙太坊將地址格式為十六進制,比特幣格式為 base58。
可以使ecrecover對兩者都有效,它返回原始的 20 個字節而不進行地址格式化。
一個可能的問題是乙太坊使用 keccak256 進行簽名,而比特幣庫通常使用 sha256,因此您必須使用乙太坊庫進行簽名。