Assurance contracts to fund the network with OP_CHECKLOCKTIMEVERIFY [combined summary]



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

Published on: 2015-05-08T16:43:10+00:00


Summary:

On May 8, 2015, Jeff Garzik suggested integrating a patch for anyone-can-pay transactions, but it should be anyone-can-spend instead. Peter Todd had already written code for this, which can be found on Github. However, an added feature is needed where the txout set will be replaced with just OP_RETURN-to-fees if the inputs do not sign the outputs. The previous email discussed the advantages of assurance contracts over simple donations. Assurance contracts are similar to Kickstarter, where the credit card is charged only if the project is fully funded, reducing the risk for pledgers. Kickstarter also has pledge rewards to encourage people to pledge and create momentum for the project. The discussion revolves around incentivizing transaction verification, as AC or anti-cheat mechanisms do not solve the problem. Bitcoin solves this issue through an enforced subsidy, but the challenge of incentivizing verification without subsidy remains unsolved. Pledgers create transactions using a specific template and broadcast them. The p2p protocol could be modified or a separate system could be used. The OP_CHECKLOCKTIMEVERIFY opcode ensures that the 50BTC output cannot be spent until block 1 million. If the transaction hasn't been completed by block 999,900 due to insufficient pledgers, they can withdraw their pledge by spending the coins intended for the pledge.The context describes a process of making a donation of 50BTC by a group of 1000 people. Pledgers create transactions using a specified template and broadcast them. The transaction is invalid until enough other users have added pledges, and a valid transaction can be broadcast. Once a valid transaction is included in the blockchain, it becomes locked in. The OP_CHECKLOCKTIMEVERIFY opcode means that the 50BTC output cannot be spent until block 1 million. If the transaction hasn't been completed by block 999,900 due to not enough pledgers, the pledgers can spend the coins they were going to use for their pledge. The context discusses the process of creating transactions and broadcasting them. Pledgers create transactions using a template and broadcast it, and the p2p protocol could be modified or be a separate system. The transaction includes inputs, outputs, and signatures with SIGHASH_ANYONE_CAN_PAY that allows other people to add additional inputs without making the signature invalid. The aim is to add enough pledges from other users to create a valid transaction that can be broadcasted to the main network and once included in the blockchain, it is locked in. The transaction includes an OP_CHECKLOCKTIMEVERIFY opcode that means the 50BTC output cannot be spent until block 1 million, and once block 1 million arrives, the output is completely unprotected. In case the transaction hasn't been completed by block 999,900, the pledgers can spend the coins they were going to use for their pledge, which invalidates those inputs and withdraws from the pledge. Furthermore, the context discusses a scenario where a pledger says that they will only pay 0.01BTC if the miner gets a reward of 50BTC. It highlights the tragedy of the commons problem where everyone has an incentive to wait until the last minute to pledge, making it not perfect.The email conversation thread discusses issues related to Bitcoin mining. One issue raised is how to determine who was the first in the chain, as a node closer to where more transactions happen would have an advantage, making mining unfair. Another issue is a merchant causing block number 1 million to have a minting fee of 50BTC, which could lead to the tragedy of the commons problem. Tier's solution is positively received by Mike Hearn, but no further details are provided. The email ends with an advertisement for a monitoring support service with deep dive visibility.In May 2015, Tier Nolan suggested using assurance contracts to avoid fees going to zero. Mike Hearn's method did not create an assurance contract, as miners could exploit it. Nolan proposed a transaction with one input and one output signed using SIGHASH_ANYONE_CAN_PAY. The output pays to OP_TRUE, meaning anyone can spend it. If enough pledges are made, then a valid transaction can be created. Miners could maintain a notice board system for these pledges. However, this system counts as a pure donation, and miners can add their own money to finish the transaction. OP_CHECKLOCKTIMEVERIFY can be used to solve this problem by paying 50 BTC to "million> OP_CHECKLOCKTIMEVERIFY OP_TRUE" and 0.01BTC to "OP_TRUE." This allows the transaction to be included well in advance of the 1 million block point, and any miner would be able to spend the 50 BTC once block 1 million arrives. Pledgers may also want to pledge to multiple blocks at once.


Updated on: 2023-08-01T12:26:48.268120+00:00