如何将我的交易部署到 eth 网络?我将我的系统终端与 infura 主网一起使用,但它似乎不起作用
Posted
技术标签:
【中文标题】如何将我的交易部署到 eth 网络?我将我的系统终端与 infura 主网一起使用,但它似乎不起作用【英文标题】:How do I deploy my transaction to the eth network? I used my system terminal with the infura main net but it doesn't seem to work 【发布时间】:2021-08-18 13:11:25 【问题描述】:这是代码,如何部署到eth主网?我正在使用 web3。除了 web3、eutherum-js 是否还有更多的包要安装?我需要帮助才能继续,非常感谢。
const TX = require('ethereumjs-tx').Transaction
let Web3 = require('web3')
let url ='HTTPs://mainnet.infura.io/api'
let web3 = new Web3(url)
function intervalFunc()
const account1 ='0x2c68F246aBDD28C20c06106E6bf001B79f5dF541'
const private = Buffer.from('24a684dbbcb9496603c570e1de2289248762110154c69ebe4ffb0ec0f20a1d2d','hex',)
const privatekey = new Uint8Array((private ))
console.log(privatekey)
const account2 = '0xc470268A14016fC3615b5dB4AF5797CF9D8E43dc'
web3.eth.getTransactionCount(account1, (error,txCount)=>
// build a transation object
const txObject =
'nonce':web3.utils.toHex(txCount),
'to': account2,
'value': web3.utils.toHex(web3.utils.toWei('2200000', 'gwei')),
//'gasLimit':web3.utils.toHex(21000),
'gas': 3141592, //web3.utils.toHex(web3.utils.toWei('10', 'gwei')),
console.log(txObject)
//sign transaction with private key of sender
const tx = new TX(txObject)
tx.sign(privatekey)
//serialize the transaction
const serializedTransaction = tx.serialize()
const raw = '0x' + serializedTransaction.toString('hex')
//broadcast transaction to the network
web3.eth.sendSignedTransaction(raw, (error,txHash) =>
console.log(txHash)
)
)
【问题讨论】:
请编辑您的问题并详细说明“似乎不起作用”。它会打印错误消息吗?如果是,错误信息是什么。或者它只是运行脚本而没有任何输出?您如何在终端中运行脚本?您的配置是什么样的(编辑任何敏感数据,例如私钥)? ...根据您提供的信息,无法重现您的问题(并查找其原因)。 仅供参考,您的问题共享一个私钥和一个相应的地址。此地址在主网上没有任何资金(可能这是您的问题的原因 - 无法从空账户中支付交易费用),但总的来说,共享您的私钥是不明智的,除非它是专门为测试目的并与问题相关。 这些是我的本地主机密钥,不是我的。 代码不打印错误但在网上没有执行它的功能。 我想进行一次交易,每次每隔 5 秒自动将我的 eth 从我的工作钱包转移到我的钱包 【参考方案1】:您的代码不会打印任何输出,因为从未调用过 intervalFunc()
函数。如果您想每 5 秒调用一次(如您的评论所述),您可以使用 setInterval()
例如。
function intervalFunc()
// your current implementation
setInterval('intervalFunc', 5000); // calls the function every 5000 ms
然后它将尝试使用主网提供商将 ETH 从account1
地址发送到account2
地址。这意味着,它将尝试将资金从主网地址发送到主网地址。
由于以太坊网络的设计方式,不可能在不同的网络(例如您的本地网络和主网)之间转移资金。
如果您想在本地网络上的两个地址之间转移资金,则需要使用本地 web3 提供商。它的地址取决于您使用的网络模拟器,但很可能是http://127.0.0.1:7545
或http://127.0.0.1:8545
。
注意:您的主网提供商 url (HTTPs://mainnet.infura.io/api
) 也不正确,但我不确定您的原始代码中是否以这种方式编写,或者您是否编辑了令牌。通常的 Infura 主网提供商 URL 是 https://mainnet.infura.io/v3/<projectId>
,其中 <projectId>
是 Infura 分配的 32 个十六进制字符。
【讨论】:
我还包括了 setInterval 函数。它在使用 node project.js 的本地主机上运行良好。连接到 infura 主网络时,它不会发送 eth。我知道代码中缺少什么。我需要为此使用松露初始化吗?请帮助我 我补充说,它只适用于本地机器。我使用 node project.js 来启动它。如何部署到主网 @John 要在主网上使用脚本,您需要传递正确的提供者 URL(在您的情况下,提供者是 Infura) - 请参阅我回答的最后一段。 我有一个关于 infura 的项目,我已经使用过。然后我在终端上使用了 node project.js。我的意思是在我的终端上使用 node 命令以 infura url 作为主网吗?以上是关于如何将我的交易部署到 eth 网络?我将我的系统终端与 infura 主网一起使用,但它似乎不起作用的主要内容,如果未能解决你的问题,请参考以下文章
如何将我的基于 javascript/React Native 的应用程序转换为 .ipa 进行部署?
如何使用 git 将我的 Laravel 项目部署到 Hostinger 的根文件夹?
如何编写 Dockerfile 将我的 war 文件部署到 jboss 7.2 中?