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

Implement eth/68 (EIP-5793) - Add tx type and size to tx announcement #4715

Closed
Gabriel-Trintinalia opened this issue Nov 21, 2022 · 1 comment · Fixed by #4730
Closed

Implement eth/68 (EIP-5793) - Add tx type and size to tx announcement #4715

Gabriel-Trintinalia opened this issue Nov 21, 2022 · 1 comment · Fixed by #4730
Assignees
Labels
mainnet TeamRevenant GH issues worked on by Revenant Team

Comments

@Gabriel-Trintinalia
Copy link
Contributor

Gabriel-Trintinalia commented Nov 21, 2022

Implement eth/68

The NewPooledTransactionHashes message announces transaction hashes, allowing the peer to selectively fetch transactions it does not yet have.

EIP-4844 introduces a new transaction type for blob transactions. Since these blob transactions are large, naively broadcasting them to sqrt(peers) could significantly increase bandwidth requirements. Adding the transaction type and the size to the announcement message will allow nodes to select which transactions they want to fetch and also allow them to load balance or throttle peers based on past behavior.

The added metadata fields will also enable future - upgradeless - protocol tweaks to prevent certain transaction type (e.g. blob transactions) or certain transaction sizes (e.g. 128KB+) from being blindly broadcast to many peers. Enforcing announcements only and retrieval on demand would ensure a much more predictable networking behavior, limiting the amplification effect of transaction propagation DoS attack.

@Gabriel-Trintinalia Gabriel-Trintinalia added the TeamRevenant GH issues worked on by Revenant Team label Nov 21, 2022
@Gabriel-Trintinalia Gabriel-Trintinalia changed the title Implement eth/68 Implement eth/68 (EIP-5793) Nov 21, 2022
@Gabriel-Trintinalia Gabriel-Trintinalia changed the title Implement eth/68 (EIP-5793) Implement eth/68 (EIP-5793) - Add tx type and size to tx announcement Nov 29, 2022
@fab-10
Copy link
Contributor

fab-10 commented Jan 9, 2023

Reporting this exception, still to verify if it is Besu or Nethermind related

{"@timestamp":"2023-01-09T10:36:53,750",
"level":"DEBUG",
"thread":"EthScheduler-Transactions-0",
"class":"NewPooledTransactionHashesMessageProcessor",
"message":"Malformed pooled transaction hashes message received (BREACH_OF_PROTOCOL), disconnecting: PeerId 0xa739b362b2b7047ecac89f1a562addccf8270ea57dec76aba6b48ce9130072d38ccd4c0205d20afaed83f16daf79d3aaeadf7a7fd1e644f18c5675818eab0cf7, reputation PeerReputation 100, validated? true, disconnected? false, client: Nethermind/v1.15.0+ef5ebfc3/linux-x64/dotnet7.0.1, connection 395687254, enode enode://a739b362b2b7047ecac89f1a562addccf8270ea57dec76aba6b48ce9130072d38ccd4c0205d20afaed83f16daf79d3aaeadf7a7fd1e644f18c5675818eab0cf7@191.96.185.162:13492?discport=0",
"throwable":" 
org.hyperledger.besu.ethereum.rlp.RLPException: Expected current item to be a list, but it is: LONG_ELEMENT (at bytes 3-1030: f9914d[b9040002...02020202]f9094481...)
\tat org.hyperledger.besu.ethereum.rlp.AbstractRLPInput.error(AbstractRLPInput.java:202)
\tat org.hyperledger.besu.ethereum.rlp.AbstractRLPInput.enterList(AbstractRLPInput.java:448)
\tat org.hyperledger.besu.ethereum.rlp.BytesValueRLPInput.enterList(BytesValueRLPInput.java:23)
\tat org.hyperledger.besu.ethereum.rlp.AbstractRLPInput.enterList(AbstractRLPInput.java:432)
\tat org.hyperledger.besu.ethereum.rlp.BytesValueRLPInput.enterList(BytesValueRLPInput.java:23)
\tat org.hyperledger.besu.ethereum.rlp.RLPInput.readList(RLPInput.java:341)
\tat org.hyperledger.besu.ethereum.eth.encoding.TransactionAnnouncementDecoder.decodeForEth68(TransactionAnnouncementDecoder.java:73)
\tat org.hyperledger.besu.ethereum.eth.messages.NewPooledTransactionHashesMessage.pendingTransactions(NewPooledTransactionHashesMessage.java:73)
\tat org.hyperledger.besu.ethereum.eth.messages.NewPooledTransactionHashesMessage.pendingTransactionHashes(NewPooledTransactionHashesMessage.java:79)
\tat org.hyperledger.besu.ethereum.eth.transactions.NewPooledTransactionHashesMessageProcessor.processNewPooledTransactionHashesMessage(NewPooledTransactionHashesMessageProcessor.java:100)
\tat org.hyperledger.besu.ethereum.eth.transactions.NewPooledTransactionHashesMessageProcessor.processNewPooledTransactionHashesMessage(NewPooledTransactionHashesMessageProcessor.java:90)
\tat org.hyperledger.besu.ethereum.eth.transactions.NewPooledTransactionHashesMessageHandler.lambda$exec$0(NewPooledTransactionHashesMessageHandler.java:52)
\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
\tat java.base/java.lang.Thread.run(Thread.java:829)
"}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mainnet TeamRevenant GH issues worked on by Revenant Team
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants