Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Too low gasprice locks up the account #906

Closed
coder5876 opened this issue May 10, 2015 · 12 comments
Closed

Too low gasprice locks up the account #906

coder5876 opened this issue May 10, 2015 · 12 comments
Assignees

Comments

@coder5876
Copy link

If I send a contract creation transaction with too low gasprice I get a constant stream of messages like below:

I0510 13:40:04.116700    7120 worker.go:292] transaction(d4360ae8) below gas price (<90% ask price). All sequential txs from this address(e3884bdd) will fail
I0510 13:40:07.119271    7120 worker.go:292] transaction(d4360ae8) below gas price (<90% ask price). All sequential txs from this address(e3884bdd) will fail
I0510 13:40:13.122628    7120 worker.go:292] transaction(d4360ae8) below gas price (<90% ask price). All sequential txs from this address(e3884bdd) will fail

This seems to continue until the transaction is eventually included in a block, but it locks the account until then. It seems that a transaction with a suffiiently low fee would lock up the account indefinitely (mine was eventually included in a block after several minutes).

@coder5876
Copy link
Author

A way to fix this problem might be to resend the transaction with the same nonce and a higher fee. I'll update and close if this indeed fixes the problem.

@coder5876
Copy link
Author

Resending the (contract creation) transaction with the same nonce is not working either. I resent with the same nonce and 10 szabo as transaction fee. This transaction should have been picked up by miners but seems to be blocked.

The updated transaction is

0xdb1a1a38e12d523615dd930107d578f6749724913a60788d021d494cace96286

and the original one is

0x148b2be6ee5ea7fe2d4abb774676552d361d0f7f8747d5954cd594d40dac4b02

It is still complaining about low transaction fee and the account remains blocked.

@obscuren
Copy link
Contributor

you can resend your transaction:

var tx = eth.pendingTransactions()[ TRANSACTION_INDEX ]
eth.resend(tx, newGasPrice)

@coder5876
Copy link
Author

@obscuren Thanks, didn't know about that! Is that exposed through the JSON RPC interface? Didn't see it in the documentation. I'll try it out when I get home and update accordingly.

@obscuren
Copy link
Contributor

It's not in the RPC. It's an addition only available through geth console

@coder5876
Copy link
Author

Got it, I'll run it through the console. Thanks again Jeff!

obscuren added a commit to obscuren/go-ethereum that referenced this issue May 10, 2015
* core: Added GasPriceChange event
* eth: When one of the DB flush methods error a fatal error log message
  is given. Hopefully this will prevent corrupted databases from
  occuring.
* miner: remove transactions with low gas price. Closes ethereum#906, ethereum#903
@obscuren obscuren self-assigned this May 10, 2015
@coder5876
Copy link
Author

I tried using resend(tx, gasPrice), it doesn't get rid of the transaction with too low gas.

@obscuren
Copy link
Contributor

It doesn't get rid of all transactions with too low gas. It should only get rid of the transaction which you supplied in the argument.

Please note that doing the following will still not work:

#1 gas: 1
#2 gas: 1
#4 gas: 1

resend(#2, 10 szabo)

This because #1 can not be processed and transactions need to be processed in order (due to their nonces). Is this what you mean what happened?

obscuren added a commit to obscuren/go-ethereum that referenced this issue May 11, 2015
* core: Added GasPriceChange event
* eth: When one of the DB flush methods error a fatal error log message
  is given. Hopefully this will prevent corrupted databases from
  occuring.
* miner: remove transactions with low gas price. Closes ethereum#906, ethereum#903
@coder5876
Copy link
Author

No, what happened was

#1 gas: 1

resend(#1, 10 szabo)

which did not get rid of #1. I was still unable to use the account. Hopefully #908 will fix it though! :)

@obscuren
Copy link
Contributor

No that most certainly won't. This is a different issue.

When you resend tx #1 it should always delete the old one and recreate the new one with a different gas price.

@coder5876
Copy link
Author

@obscuren So what happened was that eth.pendingTransactions() showed the transaction with the low gasprice (only one TX). I then did resend(tx, '10000000000000'), and when running eth.pendingTransactions() again it now shows only the transaction with the higher gasprice. However, that transaction seemed to be blocked also because I was still getting the messages about subsequent transactions will fail, and the contract was not created on the blockchain. The new transaction remained in the pending transaction queue.

@coder5876
Copy link
Author

I thought that the problem resolved itself right now, but actually the original transaction

0x47931874a5c4a64b3009e36985c85e308c8c00a2c98b18a823c1d9a827a0c9cd

(with low gasprice) got included in a block which seemed to remove the resent transaction (with higher gasprice) from the pending transaction queue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants