Package Relay Proposal



Summary:

Gloria Zhao has proposed changes to her package relay proposal called Ancestor Package Relay, BIP331. The changes involve reducing the scope to receiver-initiated only and ancestor packages only. Sender-initiated package relay has been removed for now. Gloria wants to observe the usage of receiver-initiated package relay before producing a well-researched sender-initiated package relay proposal. The proposal no longer includes child-with-unconfirmed-parents package since it is a subset of ancestor packages. The major change in package information is the removal of block hash from package information. Differences in chainstate should be handled internally at the mempool validation level. The proposal also discusses the purpose of `max_count` and `max_weight`, bandwidth consumption trade-off, and concerns of package-feerate downgrades attacks. There are questions raised on how to proceed if the sender's best block is not in sync with the local chain tip and whether a `child-with-unconfirmed-parents` should be announced between Alice and Bob when a new higher fee child is discovered.The proposal suggests a set of p2p protocol changes to enable package relay. Users may create and broadcast transactions that depend upon unconfirmed transactions. A "package" is a group of transactions representable by a connected Directed Acyclic Graph. There are two most common use cases for package relay: fee-bumping otherwise-too-low-fee transactions and reducing the amount of orphans. The proposal contains two components: a “generic” package relay protocol and an extension of it, child-with-unconfirmed-parents packages as version 1 package relay. Due to the asynchronous nature of a distributed transaction relay network, nodes may not receive all of the information needed to validate a transaction at once. Sometimes validating them individually is insufficient. When the sender is aware of additional information that the receiver needs to accept a package, a proactive ''sender-initiated'' dialogue should be enabled. The document explains the rules and requirements for package relay in Bitcoin Core. It specifies the structure and purpose of messages such as "sendpackages," "getpckgtxns," and "pckgtxns." The proposal also introduces version 1 packages, which consist of one transaction and its unconfirmed parents. The document outlines the intended protocol flow for relaying a version 1 package and defines new messages, including "MSG_PCKG1" and "PCKGINFO1." The proposal put forward by Gloria Zhao suggests a new protocol for package relay to improve communication efficiency by minimizing network bandwidth, avoiding downloading a transaction more than once, and reducing storage allocated for not-yet-validated transactions. Package relay would allow transactions to be sent in groups or packages, with each package assigned a version number to support multiple types of packages based on future use cases. Clients implementing this protocol will only attempt to send and request packages if agreed upon during the version handshake. The proposal includes examples of alternative designs considered and a slidedeck exploring various alternative designs and some examples in which they fall flat.


Updated on: 2023-06-15T20:54:39.624023+00:00