小编juu*_*Jay的帖子

eth.sign 与 eth.accounts.sign 创建不同的符号

当我使用 web3.eth.sign() 方法和 web3.eth.accounts.sign() 方法签署字符串时。两个签名的结果值不同。我不知道为什么这两个结果不同。

我正在使用最新的 web3.js。私钥来自metamask。

这是我的代码

await ethereum.enable();
web3 = new Web3(web3.currentProvider);

let accounts = await web3.eth.getAccounts();
let msg = "sign this message"
let prefix = "\x19Ethereum Signed Message:\n" + msg.length
let msgHash1 = web3.utils.sha3(prefix+msg)

let sig1 = await web3.eth.sign(msgHash1, accounts[0]);
let privateKey = "0xcfb51f3737044cb4bfb49cbb10ae67d79ee81523d7065e95972cc23ed914e95e"
let sigObj = await web3.eth.accounts.sign(msgHash1, privateKey)
let sig2 = sigObj.signature;

console.log(sig1)
console.log(sig2)
Run Code Online (Sandbox Code Playgroud)

这就是结果。 在此输入图像描述

javascript ethereum web3js

5
推荐指数
1
解决办法
4265
查看次数

标签 统计

ethereum ×1

javascript ×1

web3js ×1