Signature
你如何在 javascript 中籤署驗證消息以證明你擁有乙太坊地址?
是否有一個 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)