发送以太坊交易,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 没有源地址,但有源私钥?的主要内容,如果未能解决你的问题,请参考以下文章