-
Notifications
You must be signed in to change notification settings - Fork 5.3k
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
'Valid until block' field for transactions #599
Conversation
I think it may make sense coordinating this with #232. |
Agreed. |
👍 Also useful for many types of DAPPs during congestion, including those who interface with Ethereum in the background where txs are (mostly) abstracted from the user. Can also be very useful for wallets, e.g. enabling easier sending of txs at low gasPrice. For example if a user indicates their tx is not urgent the wallet can prepare & sign several txs with increasing gasPrice and set |
There would need to be a discovery mechanism to figure out what nodes find the most excessively high setting in order for them to refuse to relay it. On the other hand it adds a new economic value to the protocol: For example for a the validity duration of 1 block you pay However, since the block height during relay can't be measured after it's mined, this would make it difficult to validate the calculate the correct gas price and validate the transaction. One way would be to reduce the gas cost down to the block it's included. So if it's included in block 2300, you only pay Another would be to also include a |
Why? Can't each node just decide on its own threshold? |
Ok, this issue came up in relation with dust accounts too. I didn't find this PR so I created a new issue #773, but I'll just close that and copy-paste my text from there to expand on this EIP with the dust account aspects: Currently an Ethereum transaction has an infinite lifetime to be included in the chain. This has a few problematic corner cases:
The proposal of this EIP is to extend the transactions with an additional
The caveat of this proposal is that reliably preventing dust account replays is to add the Discuss :) |
@nicksavers @Arachnid I would drop the clauses with the txpool filtering stuff. Currently we have IMHO a performant enough pool to keep thousands of active transactions and filter based on price. There's no particular value in filtering based in TTL. |
EIPS/eip-draft-transaction-ttls.md
Outdated
|
||
In regards to transaction pool inclusion and relaying, nodes are further encouraged to treat 9-element transactions as having a `valid_until_block` value of `fork_blocknumber + transaction_ttl`. | ||
|
||
The standard JSON APIs accepting transaction parameters are amended to add a parameter `valid_until_block`. If not specified, it should default to `current_blocknumber + transaction_ttl`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would guess a missing Read on and convinced that the default behavior should be some valid_until_block
means a nine-element transaction without the new valid_until_block
element. That would be the backward compatible behavior.valid_until_block
.
EIPS/eip-draft-transaction-ttls.md
Outdated
@@ -0,0 +1,61 @@ | |||
## Preamble | |||
|
|||
EIP: <to be assigned> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Take 599, and please move this file to EIPS/eip-599.md
.
Is there any reason this couldn't also include |
@beether You could just withhold that transaction until after the block. |
I find this issue really interesting as it will help beginners make fewer mistakes times when the network is high load. The fact that a transaction can linger for more than 24 hours is not easy to understand or manage. Some transaction could even have a max time for 10 minutes so that you know it will be included or not, and if not, you can react accordingly. @karalabe Did you look at this more? |
Conform to new formatting standard
What is missing from this? Is there something that can be done to move this forward? 😄 |
@kevinsimper It still requires a discussions-to URL before it can be merged as Draft |
@nicksavers I created a discussion, will post it as soon as my post has been approved https://ethereum-magicians.org/ |
@nicksavers Can you update the discussion url to https://ethereum-magicians.org/t/eip-599-valid-until-block-field-for-transactions/3440 ? 😄 |
There has been no activity on this pull request for two months. It will be closed in a week if no further activity occurs. If you would like to move this EIP forward, please respond to any outstanding feedback or add a comment indicating that you have addressed all required feedback and are ready for a review. |
Whoever has permissions to edit, can you add https://ethereum-magicians.org/t/eip-599-valid-until-block-field-for-transactions/3440 as the discussion url, so it can be merged as a draft? |
This EIP is bundled up in 2711. Consider pursuing that one instead. |
There has been no activity on this pull request for two months. It will be closed in a week if no further activity occurs. If you would like to move this EIP forward, please respond to any outstanding feedback or add a comment indicating that you have addressed all required feedback and are ready for a review. |
This pull request was closed due to inactivity. If you are still pursuing it, feel free to reopen it and respond to any feedback or request a review in a comment. |
@MicahZoltu I read it but the functionality to be sure that a transaction is not valid anymore was not clear to me. Do you have more information or what section should I focus on? :) |
This is one of the reasons that 2711 is struggling to gain traction. There are potential DoS vectors for expiring transactions. I recommend continuing this conversation over at the 2711 discussions-to URL, or creating a new 2718 based EIP that only introduces expiring transactions. |
Hello from 2022
Is anyone still looking at a way to ensure block-number expiration? @Arachnid @kevinsimper, @MicahZoltu would consider revive this proposal? If you are not at capacity, I am interested in following up on this. Because I think the possibility to protect against replay attack on a signed message is as critical as what #155 was trying to do, if not even more critical. |
Just wanna bump this request to authors because this is such an important and critical issue. Without a fix, one needs a more gas fee tx to "cancel" on-chain. e.g.
|
I emailed @Arachnid and received response:
In that case, I personally happy to step up and take over if no other former authors have bandwidth to drive forward. |
The big problem is the denial of service attack vector that expiring transactions opens up. We want to ensure that any transaction that is gossiped over the network must cost something significant to the signer. One way you could achieve this and still have expiring transactions is to have a new transaction type that includes an expiration, but the transaction is still includable after the expiration. If the transaction is included after the expiration, then it would just cost 21,000 gas (maybe a bit less), bump the nonce, but otherwise do nothing. This would at least make it so expired transactions were relatively inexpensive for users, but it wouldn't open up denial of service attack vectors. |
That's very helpful insight of a potential security challenge. Thank you @MicahZoltu |
To pursue ethereum#599
Original author: @Arachnid @kevinsimper and editor @MicahZoltu thank you for suggestion, FYI I have started a #5081 to pursue this EIP. |
* Create eip-draft_tx_exp.md To pursue #599 * Update eip-draft_tx_exp.md * Update eip-draft_tx_exp.md * List 599 original author @Arachnid as co-author * Update eip-draft_tx_exp.md * Update eip-draft_tx_exp.md * Update EIPS/eip-draft_tx_exp.md Co-authored-by: Micah Zoltu <micah@zoltu.net> * Rename eip-draft_tx_exp.md to eip-5081.md * Add link to discussion-to, req 1559, resolve comments from @MicahZoltu * Update eip-5081.md * Update EIPS/eip-5081.md Co-authored-by: Micah Zoltu <micah@zoltu.net>
* Create eip-draft_tx_exp.md To pursue ethereum#599 * Update eip-draft_tx_exp.md * Update eip-draft_tx_exp.md * List 599 original author @Arachnid as co-author * Update eip-draft_tx_exp.md * Update eip-draft_tx_exp.md * Update EIPS/eip-draft_tx_exp.md Co-authored-by: Micah Zoltu <micah@zoltu.net> * Rename eip-draft_tx_exp.md to eip-5081.md * Add link to discussion-to, req 1559, resolve comments from @MicahZoltu * Update eip-5081.md * Update EIPS/eip-5081.md Co-authored-by: Micah Zoltu <micah@zoltu.net>
* Create eip-draft_tx_exp.md To pursue ethereum#599 * Update eip-draft_tx_exp.md * Update eip-draft_tx_exp.md * List 599 original author @Arachnid as co-author * Update eip-draft_tx_exp.md * Update eip-draft_tx_exp.md * Update EIPS/eip-draft_tx_exp.md Co-authored-by: Micah Zoltu <micah@zoltu.net> * Rename eip-draft_tx_exp.md to eip-5081.md * Add link to discussion-to, req 1559, resolve comments from @MicahZoltu * Update eip-5081.md * Update EIPS/eip-5081.md Co-authored-by: Micah Zoltu <micah@zoltu.net>
This EIP adds a new field to transactions,
valid_until_block
. Transactions containing this field may only be included in blocks with numbers less than or equal to the value in this field. This improves the transaction eviction strategies available to nodes, which improves spam handling, while also making it possible for users to issue transactions that expire if not included by a certain time.