Signature

你如何在 javascript 中籤署驗證消息以證明你擁有乙太坊地址?

  • October 26, 2021

是否有一個 js 庫,甚至只是純 js,我可以在其中籤名並驗證我是否擁有乙太坊地址?

您可以使用web3.eth.sign

您使用的地址需要解鎖,您可以像這樣簽署文本:

> web3.eth.sign(<your address>, web3.sha3("Some text"))

0x32f689696d855dd79c73acd94b2374461261b6f3d00e758fa23d35607c0be3175cbc7a7ea02c7f23cd7ef9334b4718a3363dfe12c1c1de24da5f94eb68a67b6000"

返回的 130 字節字元串是連接的 r,s,v ECDSA 值與映射:

r = signature[0:64]
s = signature[64:128]
v = signature[128:130]

雖然 web3.js 沒有驗證功能,但 Solidity 有ecrecover以下形式的呼叫:

ecrecover([sha3 hash of data], v, r, s)

這個問題探討了ecrecover.

此外,論壇上有另一個文章,其中 OP 使用 Python 比特幣模組來驗證簽名數據。


更新:從 v1.0 web3.js 開始有驗證功能。在此處查看其他答案(例如 web3.eth.accounts.recover)

引用自:https://ethereum.stackexchange.com/questions/13652