Ethereum 交易卡在";本地交易“;“有地位”;队列中:未来";-奇偶校验以太坊节点

Ethereum 交易卡在";本地交易“;“有地位”;队列中:未来";-奇偶校验以太坊节点,ethereum,web3js,Ethereum,Web3js,我正在寻求帮助,因为我已经像我的事务一样陷入困境,这些事务显示在奇偶校验TxQueueViewer中的本地事务状态下: In queue: Future 如以下屏幕截图所示,为tx:0x0e97a4c 我正在设置tx:0x0e97a4c,并按如下方式发送: var Web3 = require('web3'); var Transaction = require('ethereumjs-tx'); var data = contract.method.getData(some, data);

我正在寻求帮助,因为我已经像我的事务一样陷入困境,这些事务显示在奇偶校验TxQueueViewer中的本地事务状态下:

In queue: Future
如以下屏幕截图所示,为tx:0x0e97a4c

我正在设置tx:0x0e97a4c,并按如下方式发送:

var Web3 = require('web3');
var Transaction = require('ethereumjs-tx');
var data = contract.method.getData(some, data);
console.log("Data: " + data);
var gasEstimate = web3.eth.estimateGas({
    to: web3.env.SENDER_ADDRRESS,
    data: data
});
console.log("GasEstimate: " + gasEstimate);
var nonce = web3.eth.getTransactionCount(process.env.SENDER_ADDRRESS);
console.log("Transation Count: " + nonce);
var rawTx = {
    nonce: web3.toHex(nonce),
    gasPrice: web3.toHex(process.env.GAS_PRICE),
    gasLimit: web3.toHex(gasEstimate),
    to: web3.toHex(process.env.CONTRACT_ADDRESS),
    value: web3.toHex(provider.toWei('1', 'ether')),
    data: data,
    chainId: 3
};
console.log("RawTx: " + JSON.stringify(rawTx));
var tx = new Transaction(rawTx);
console.log(tx.getChainId());
tx.sign(new Buffer(process.env.KEY, 'hex'));
web3.eth.sendRawTransaction("0x".concat(tx.serialize().toString('hex')), function(error, txHash) {
    if (error) {
        console.log(error); // an error occurred
        callback(error);
    }
    else {
        callback(null,{"error":0,"tx":txHash});
    }
});
我知道节点正在同步和传播事务,这些事务随后被挖掘,因为事务设置和从奇偶校验UI发送成功,如下图所示(如上图所示):

作为背景,我一直在为以太坊开发一个项目,使用Solidity和Javascript,并使用Truffle和Web3js。针对TestRPC进行测试。经过一些研究,我选择了奇偶校验,并使用Ropsten网络来运行测试

我有一个版本:

Parity/v1.6.8-beta-c396229-20170608/x86_64-macos/rustc1.17.0 
运行于:

MacOS Sierra 10.12.5.
我从以下几点开始:

parity --pruning fast --chain ropsten --warp --mode active --jsonrpc-interface all --jsonrpc-hosts all --allow-ips public
  • “队列中的状态:未来”是什么意思
  • 是否存在某种具有奇偶性的事务释放机制
  • 或者我没有为这种类型的节点正确设置事务

  • 这是一个困扰我很长时间的问题。在我的例子中,我发现错误是由metamask发送的较新的nonce引起的

    脚本 我正在运行一个具有特定链id的链。我正在使用metamask发送事务。一周后,我创建了一个具有相同链id的新链,然后当我使用metamask发送事务时,事务在将来继续进行

    治愈
    • 更改新链的链ID。可能需要更改genesis文件
    • 将元掩码重新连接到RPC。这是为了更新存储在metamask中的链ID
    • 发送事务。现在他们不应该在“未来”中

    我刚刚通过停止奇偶校验进程并删除奇偶校验的缓存(~/.local/share/io.Parity.ethereum/cache)解决了这个问题。当有一个事务在本地被“卡住”时,就会出现此问题。一旦此“卡住”事务位于本地队列中,在“卡住”事务传播之前,来自同一地址的其他事务将不会传播