发送以太坊交易,Web3.js 没有源地址,但有源私钥?

Posted

技术标签:

【中文标题】发送以太坊交易,Web3.js 没有源地址,但有源私钥?【英文标题】:Send Ethereum transaction, Web3.js without source address, but with source private key? 【发布时间】:2018-09-22 16:11:43 【问题描述】:

我刚刚开始使用带有节点 v8.10 的 Web3.js,我想检查一个特定的用例是否完全可行(作为新手,我可能还没有意识到该怎么做还没有):

是否可以仅使用源地址的私钥和目标地址将交易从源地址发送到目标地址?而不是源地址本身?还是只有源地址和目标地址才有可能进行任何交易,RAW 或 SIGNED? (在签名交易的情况下,私钥是可选的)?

提前致谢!

【问题讨论】:

你永远不需要源地址。也许您可以分享您的代码并具体说明您遇到的问题。 感谢@smarx!如下所述,我能够使用 ethereumjs-util 库成功地从私钥中获取地址。 没关系,但没必要,因为你不需要地址。 是的;实际上,在阅读了 sendSignedTransaction 方法之后,我最终意识到了这一点;但是,在该方法中,nonce 最终会使用:web3.utils.toHex(web3.eth.getTransactionCount(srcAddr)); 来计算,这不是必需的吗?你能在没有源地址的情况下计算随机数吗? 公平点。要签署交易,您不需要地址,但要获取有关帐户的信息(nonce、余额),您确实需要地址。 【参考方案1】:

您可以从私钥派生源地址。 在https://ethereum.stackexchange.com/questions/11253/ethereumjs-how-to-get-public-key-from-private-key上查看答案

【讨论】:

非常感谢@gaiazov 的帮助!正如您所建议的,我能够使用“ethereumjs-util”库和“privateToAddress”方法从私钥派生源地址。 let srcAddr = ethUtilLib.privateToAddress(privateKey).toString('hex');

以上是关于发送以太坊交易,Web3.js 没有源地址,但有源私钥?的主要内容,如果未能解决你的问题,请参考以下文章

以太坊如何使用web3.js或者rpc接口获取交易数据交易时间与确认数?

使用 web3.js 将新合约部署到以太坊网络

web3.js链接以太坊并查询钱包u余额

以太坊代币转移 - 等待验证 + 72H

Web3.js 1.0构建以太坊Oracle

如何使用 web3.js 注销 MetaMask 帐户