当前位置: 首页 > 知识库问答 >
问题:

Web3。py事务不会在以太坊Rinkby测试网上广播

翟永春
2023-03-14

我正在使用下面的web.py代码,尝试通过本地geth节点在Rinkeby测试网上发送1 ETH的交易。我可以看到在实时本地以太网节点日志流中提交的交易,但它们似乎永远不会广播到网络(我永远不会在rinkeby.io块浏览器上看到它们)。我每次都手动设置nonce,但我读到如果使用了以前的nonce,并且它没有广播,它可能会被卡住?作为答案的一部分,如果能解释nonce的目的/用法,那就太好了。

import web3, json, requests
from web3 import Web3, HTTPProvider
provider = HTTPProvider( 'http://localhost:8545' )
web3 = Web3(provider)

web3.eth.enable_unaudited_features()
with open('/Users/.../Library/Ethereum/rinkeby/keystore/UTC...') as keyfile:
    encrypted_key = keyfile.read()
    private_key = web3.eth.account.decrypt(encrypted_key, 'password')

nonce = web3.eth.getTransactionCount('<public_address_of_sending_account>')

tx = {'value': 1000000000000000000, 'to': '0xBa4DE7E3Fd62995ee0e1929Efaf7a19b73df028f', 'nonce': nonce, 'chainId': 4, 'gasLimit': 6994000, 'gasPrice': 1000000000 }
tx['gas'] = web3.eth.estimateGas(tx)

signed = web3.eth.account.signTransaction(tx, private_key)
web3.eth.sendRawTransaction(signed.rawTransaction)

共有1个答案

俞俊逸
2023-03-14

外部养号(EOA)的随机数从0开始,每笔交易增加1。所以账户发送的第一笔交易需要随机数0,第二笔交易需要随机数1,等等。

要获得正确的当前随机数,可以使用web3.eth.getTransactionCount(

 类似资料:
  • 以太坊测试链 针对Ethereum以太坊有许多专用测试网络或者叫测试链,他们由各种客户端支持。 1.Rinkeby:只支持geth客户端。 2.Kovan:只支持Parity客户端。 3.Ropsten:支持geth和Parity客户端。 对于开发,建议你使用Rinkeby或KoVan测试链。这是因为他们使用的工作量证明POA共识机制,确保交易和块能够一致并及时的创建。Ropsten测试链,虽然最

  • 为了跳过信任第三方的需要,并跳过在我的电脑上完全下载区块链,我想在本地服务器上设置一个同步以太网测试网区块链的完整节点,然后将我的电脑连接到这个服务器,使用一个geth实例。 这在某种程度上可能吗?我怎么能那样做?

  • 以太坊(Ethereum)是一个支持智能合约的区块链平台,它与比特币最大的不同是,以太坊通过一个虚拟机(EVM)可以运行智能合约。 以太坊是Vitalik Buterin(维塔利克·布特林,人称V神)在2013年提出的概念,Vitalik最早参与了比特币社区的开发,并希望比特币把功能受限的脚本扩展成图灵完全的编程环境,但没有得到比特币开发社区的认同,于是他决定另起炉灶,打造一个新的区块链平台,目标

  • 我使用以太坊Geth(v.1.6.7)在Ubuntu(16.04.3 LTS)虚拟机(在虚拟盒子上)。我已经设置了一个私有的以太坊区块链与2个节点(在2个不同的终端)。 现在我从每个节点挖掘了大约4个小时,但是似乎没有任何新的块形成。(BlockNumber在大约4小时后仍然在0上)。 即使哈希率是定期变化和eth.mining变量返回true。 我做了我的研究,一切似乎都按要求设置。对于创世块,

  • 以太坊名称服务(ENS)提供了一个人们可读的名称,以识别在以太坊网络上的地址。它类似于互联网的域名服务(DNS),它提供了被映射到IP地址的人们可读域名。 在提供以太坊名称服务(ENS)的情况下,地址要么是钱包,要么是以太坊智能合约地址。 例如,你可以使用web3j.eth来代替钱包地址0x19e03255f667bdfd50a32722df860b1eeaf4d635。

  • 1) 我使用以下命令设置一个专用以太坊网络 2) 创建了一个帐户 3)然后,使用miner.start()命令启动矿工。 过了一段时间,以太被自动添加到我的帐户中,但我的私人网络中没有任何挂起的事务。那么我的矿工们从哪里得到乙醚呢? 尽管我没有在我的网络中实例化任何事务,但一旦启动miner,我就可以看到日志中记录了一些事务。 日志如下: 我的创世区块代码如下: 由于我的网络是隔离的,并且只有一个