第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

eth.sign 與 eth.accounts.sign 創(chuàng)建不同的符號

eth.sign 與 eth.accounts.sign 創(chuàng)建不同的符號

小怪獸愛吃肉 2023-08-18 16:43:58
當(dāng)我使用 web3.eth.sign() 方法和 web3.eth.accounts.sign() 方法簽署字符串時(shí)。兩個(gè)簽名的結(jié)果值不同。我不知道為什么這兩個(gè)結(jié)果不同。我正在使用最新的 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.lengthlet 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)這就是結(jié)果。
查看完整描述

3 回答

?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

源代碼?顯示,區(qū)別在于web3.eth.accounts.sign在簽名之前對消息進(jìn)行前綴和哈希處理。


在您的示例中傳遞msg而不是msgHashto eth.accounts.sign:


所以這個(gè)簽名:


const msg = 'hello world'

const { signature } = await web3.eth.accounts.sign(msg, privateKey)

將產(chǎn)生與散列消息相同的簽名eth.sign:


const msg = 'hello world'

const msgHash = web3.eth.accounts.hashMessage(msg)

const signature = await web3.eth.sign(accounts[0], msgHash)


查看完整回答
反對 回復(fù) 2023-08-18
?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

web3.eth.sign并?web3.eth.accounts.sign在 web3.js v1.3.4 中生成相同的簽名。

如果我錯(cuò)了,請糾正我,似乎在幕后web3.eth.sign調(diào)用,web3.eth.accounts.sign


查看完整回答
反對 回復(fù) 2023-08-18
?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

簡而言之,這是設(shè)計(jì)使然(據(jù)我所知),以防止將簽名的以太坊交易解釋為其他數(shù)據(jù)(例如元交易,由智能合約邏輯驗(yàn)證)。


查看完整回答
反對 回復(fù) 2023-08-18
  • 3 回答
  • 0 關(guān)注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號