Signature
{vrs} 簽名到字元串
我正在使用 rarible API,對於一個請求,需要將簽名作為字元串提供。
我有一個簽名對象{“V”:28,“R”:“0xda4429a9e8e6b54cb101b2df002039f2879ab4ca0e8fae64134942cb81f3e581”,“S”:“0x3b90a37dc078a82dfc418695b1d4473661aa4d24dd874ac68678894ff44a6b27”}
如何將此對象轉換為簽名字元串?
您可以通過查看乙太坊黃皮書中的 RLP 編碼來獲取此資訊以及更多資訊,如此處所述。要直接回答您的問題:
簽名格式為 v ++ (length(r) + 0x80 ) ++ r ++ (length(s) + 0x80) ++ s,其中 + 表示加法,++ 表示串聯。請注意,此處的長度表示字節數,因此表示十六進制的符號數除以二。
在您的情況下,這將導致
0x28 ++ (0x20 + 0x80) ++ 0xda4429a9e8e6b54cb101b2df002039f2879ab4ca0e8fae64134942cb81f3e581 ++ (0x20 + 0x80) ++ 0x3b90a37dc078a82dfc418695b1d4473661aa4d24dd874ac68678894ff44a6b27
並產生以下簽名字元串:
0x28a0da4429a9e8e6b54cb101b2df002039f2879ab4ca0e8fae64134942cb81f3e581a03b90a37dc078a82dfc418695b1d4473661aa4d24dd874ac68678894ff44a6b27
請注意我是如何隱含地假設您提供的 v 已經是十六進制格式,儘管它不是以 0x 開頭的。如果此結果與您的預期不同,請嘗試將 v 轉換為其十六進製表示,並按照我剛剛描述的轉換值的相同過程進行操作。