Bitcoin TX fill-or-kill deterministic behavior [combined summary]



Individual post summaries: Click here to read the original discussion on the bitcoin-dev mailing list

Published on: 2012-04-15T15:17:04+00:00


Summary:

On April 12, 2012, bitcoin developers Jorge Timón and Jeff Garzik discussed the issue of dropped transactions in Bitcoin. Garzik proposed several solutions, including adding a field called expiration_block to the transaction, which would determine when the transaction should be dropped from the memory pool. Timón suggested an alternative approach, but Garzik argued against it.In another email conversation, Garzik and others discussed the idea of direct payee-to-payer communication. The original design of Bitcoin had envisioned using pay-to-IP address mode for payments, but it was removed due to its unreliability and privacy concerns. There was a suggestion to use a separate protocol for direct communication, and it was noted that Bitcoin Wallet for Android already supported this feature.Pieter Wuille and Garzik discussed how an HTTP derivative could simplify mobile payments, firewalled scenarios, and client-merchant communications. Pieter recommended reading a GitHub gist on the topic.In a forum discussion, Garzik raised concerns about direct payer-payer communication with merchants and proposed using a separate protocol for such transactions. It was noted that the original Bitcoin design involved direct communication between participants, but things had evolved differently. Garzik suggested using an HTTP derivative for better mobile payments and client-merchant communications.A conversation between Mike Hearn and Garzik explored the concept of chain transactions, network fee requirements, and market-based fees. They discussed the idea of passing transactions outside of the broadcast network and only broadcasting them when there's a lack of trust between sender and recipient. They also agreed that more direct communication between payee and payer is needed, but it should be done through a separate protocol.Garzik suggested that transactions should expire if they don't make it into a block. He criticized the current fee system as an "ugly hack" and suggested sending transactions directly to merchants or using an instant-payments layer on top of the Bitcoin block chain.Improvements to the Bitcoin protocol were discussed, including having transactions expire if they are not accepted by miners. The user experience of attaching fees to transactions was considered negative, and merchants handling fee calculations themselves was suggested as a solution. This would require a minor change to how fees are calculated in the memory pool.Garzik expressed concerns about the non-deterministic nature of transactions in Bitcoin and proposed removing transactions from the memory pool if they haven't made it into a block for a couple of days. He also suggested a change in the transaction announcement protocol to include the block the user wants to base on, which would protect against double spends and make expiry from the memory pool easier.There were discussions about users exploiting the behavior of creating transactions that they know will get stuck and expire. It was compared to canceling zero-conf transactions, and the possibility of detecting and flagging such transactions was mentioned.The proposal to remove transactions from the memory pool after a specific period of time aims to make Bitcoin transactions more deterministic and predictable for users. While there are concerns about potential exploitation, this change could lead to better wallet/coin recovery and resending options for expired transactions.Overall, the discussions focused on improving the predictability, efficiency, and user experience of Bitcoin transactions through various proposals and considerations.


Updated on: 2023-08-01T03:26:37.215016+00:00