首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解码事务以验证其在Javascript中的签名?

如何解码事务以验证其在Javascript中的签名?
EN

Ethereum用户
提问于 2020-03-12 02:16:17
回答 2查看 1K关注 0票数 2

我注意到用错误的私钥签交易是可能的。我采用了在https://github.com/ethereumjs/ethereumjs-tx中找到的以下示例

代码语言:javascript
复制
const EthereumTx = require('ethereumjs-tx').Transaction
const privateKey = Buffer.from(
  'e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109',
  'hex',
)

const txParams = {
  nonce: '0x00',
  gasPrice: '0x09184e72a000',
  gasLimit: '0x2710',
  to: '0x0000000000000000000000000000000000000000',
  value: '0x00',
  data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057',
}

// The second parameter is not necessary if these values are used
const tx = new EthereumTx(txParams, { chain: 'mainnet', hardfork: 'petersburg' })
tx.sign(privateKey)
const serializedTx = tx.serialize()

此代码确实对事务进行签名,但如何验证事务已正确签名?

如何使用或解码serializedTx并验证签名是否正确?

EN

回答 2

Ethereum用户

发布于 2020-03-12 05:31:07

此代码确实对事务进行签名,但如何验证事务已正确签名?如何才能验证签名是否正确?

web3有一个estimateGas方法,您可以使用它来估计事务所需的气体,如果签名不正确,这意味着事务将失败,那么它只会抛出一个错误。

另外,是否有可能以编程的方式获取与登录地址相关联的私钥(使用Metamask)?

由于安全性考虑,privateKey显然不可用。如果您能够以这种方式访问元a帐户,这将是一个严重的安全漏洞。

票数 0
EN

Ethereum用户

发布于 2020-03-12 06:04:19

当然,您可以使用您想要的任何私钥来签署事务。

但是,当您最终执行它时,此事务所需的气体(以及您在value字段中设置的乙醚的数量)将从与该键相对应的帐户中提取。

如果您只是选择一个随机密钥,那么这个帐户将有0,几乎100%的概率,这意味着交易将随后失败,因为余额不足。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/80545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档