web3j - 从签名交易中获取交易详情(金额、gas 价格、gas 限制)

Posted

技术标签:

【中文标题】web3j - 从签名交易中获取交易详情(金额、gas 价格、gas 限制)【英文标题】:web3j - Get transaction details (amount, gas price, gas limit) from signed transaction 【发布时间】:2019-11-13 05:19:59 【问题描述】:

我有一个 javascript 前端和一个 Java 后端。 我让用户在前端使用 web3js 用他的私钥签署原始交易。然后将签名的交易返回给 Java 后端,后端通过奇偶校验实例广播交易。

我的问题: 我害怕黑客,他们可以在签署之前在浏览器中用 javascript 操纵原始交易。通过这种方式,他们可以更改正在发送的金额。有没有办法提取将从与 web3j 签署的交易中发送的金额? 如果是,我可以在广播签名交易之前再次检查该值。

顺便说一句:如果它在某种程度上很重要,那就是代币交易,而不是 ETH 交易。

谢谢!

【问题讨论】:

【参考方案1】:

这需要一点密码学的理解。

在私钥/公钥对加密中,“签名”基本上是您使用私钥加密并使用公钥解密的唯一情况。如果您设法解密,则意味着签名是有效的,因为无论该 pub 密钥属于谁,都肯定是谁签署了内容。

因此,如果您拥有 pub 密钥,则可以解密“签名”交易。

现在,如果您担心黑客和安全性,将密钥保存在客户端和内存中并不是一个好习惯。因此,如果这是一个严肃的项目,您可能需要重新审视您的方法。

【讨论】:

感谢您的回复。在我的项目中,我不想控制用户的钱包。用户应该是唯一控制它的人。这就是我生成高质量盐并将其存储在我的数据库中的原因。用户在他的浏览器中生成一个强密码。之后,用户可以从 API 中获取 salt,将其在浏览器中与 salt 结合起来,从而生成私钥。他的密码永远不会通过网络传输。如果数据库被黑客入侵,攻击者将无法获得用户的私钥。我认为这样做是不错的做法,不是吗?

以上是关于web3j - 从签名交易中获取交易详情(金额、gas 价格、gas 限制)的主要内容,如果未能解决你的问题,请参考以下文章

本地链使用web3js发送签名交易

Web3j:获取使用交易哈希传输的交易令牌的价值

使用 Trezor(硬件钱包)将签名交易发送到 Ropsten 或 Truffle 开发网络

通过贝宝付款完成后如何获取交易详情

将签名的交易发送到 Ropsten

Paypal 从 php 中的支付密钥获取交易详情