如何将我的交易部署到 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:7545http://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 中?

如何将我的 Vue js SPA 部署到我的 Django 服务器中?

如何将我的反应应用程序部署到我的 FTP

在将我的机器人部署到 heroku 时如何解决此错误?