Original title: "Mimblewimble can realize non-interactive transactions, Litecoin, Grin, etc. will benefit" If a technology is difficult to use or user-unfriendly, it will be difficult to be widely adopted. The previous Mimblewimble protocol required the sender and receiver to interact online at the same time, which hindered the large-scale application of related projects. Today, Grin++ wallet developer David Burkett proposed a proposal to support Mimblewimble non-interactive transactions, which can be applied to blockchain projects such as Litecoin and Grin. David Burkett mentioned in the Litecoin forum developer section:
From this post, we can see that the Mimblewimble application solution that David Burkett is currently developing for Litecoin is in its early stages, and the biggest progress is the non-interactive transaction proposal. So, how exactly is this magical solution implemented? Let’s take a look at the translation of the proposal: Mimblewimble Offline Transaction ProposalThe Mimblewimble blockchain protocol improves the privacy and scalability of cryptocurrencies like Bitcoin by using Pedersen commitments, Schnorr signatures, and a new technique called 'cut-through'. These benefits come at a high price. Until now, constructing MW transactions required interaction between the sender and receiver to create outputs and collectively sign the transaction. This paper proposes a method to implement one-sided transactions with minimal impact on the scalability and privacy of the Mimblewimble protocol. The current Mimblewimble protocol Like Bitcoin, Grin uses the UTXO model. Transactions are created by including inputs to spend, creating new outputs of equal or lower value, and signing and constructing range proofs that verify ownership of the inputs. For a transaction to be valid, the following conditions must be met (ignoring transaction fees and transaction compensation for simplicity):
The combination of these three proves that the sender is the owner of the input and ensures that no new coins are created in the transaction. This protocol requires the sender (Alice) and the receiver (Bob) to interact to construct a transaction in order to avoid exposing each other’s input and output blinding factors. This is a three-step process: Alice creates an unsigned transaction with her inputs, changes the outputs and the rangeproof, an intermediate kernel containing the difference between the output and input blinding factors, and submits the Schnorr-signed nonce. While the protocol works and allows Alice to transfer funds to Bob without restriction, the interactive nature of the transaction introduces several security, usability, and privacy challenges. Constructing transactions either requires users to keep their keys online or requires some form of out-of-band communication, which can lead to privacy breaches and MITM attacks. Setting up non-interactive transactionsFor a long time, it was widely believed that non-interactive transactions were impossible in the mimblewimble protocol because informed output blinding factors are necessary to create rangeproofs and construct schnorr signatures. To solve this problem, we must first find a way to let the sender and receiver know the blinding factor, but no one else. The Diffie-Hellman key exchange algorithm is well suited to solve this problem. The sender only needs to generate a key pair, perform ECDH with the receiver's pubkey (public key), and generate a shared key that can be used as a blinding factor. The sender can then generate the receiver's output, blinding factor, and signature to create a valid transaction. But this solution also brings two obvious problems. The first problem is that the sender still needs to pass their public key and value to the receiver, so we need to include it as part of the output without compromising privacy. But there is no obvious way to submit the data. We can't include it as part of the kernel because it would link the kernel to the output, eliminating the privacy benefits. The second problem is that both Alice and Bob end up with the keys to the funds, which means Bob does not become the sole owner of the funds and it is impossible to resolve disputes. We need a way to verify that only Bob can spend the output. New proposalsIt turns out that we can encrypt nearly 32 bytes of data in a rangeproof. For example, if we use a known key blake2b(output_commitment), we can publicly commit some additional data. If the data we "encrypt" in the rangeproof is a hash, then we can actually publicly commit the required data. This allows us to include a new block of data (output_data) containing:
We can then add the following consensus rules for validating the output:
Nodes must store the output_data of all UTXOs, so when used later, we can also require 1 new consensus rule to verify the input: Inputs and outputs can continue to be pruned as usual, we now provide a way to send funds to a recipient with the guarantee that the sender cannot respend those funds. SecurityBecause both the sender and receiver know the blinding factor of the output, it is not enough to just verify the current UTXO set against the kernel. This requires verifying the signatures of all recent inputs, and we recommend that new nodes verify all input signatures of the most recent X blocks, where X = coinbase maturity, because the stakes are similar. This still leaves one attack point that seems unlikely to be possible today. This attack works as follows (assuming that the input signatures from the past day are verified):
Although this attack theoretically allows you to spend coins of any age, they must be coins that were previously sent by the attacker and have not been spent by the recipient. However, the benefits of this attack are unlikely to cover the cost of performing a reorganization attack. However, to be prudent, when you receive a large amount of coins, you can prevent this attack by just spending them yourself, with very little additional kernel cost. Privacy issuesThe schemes described above do not leak any additional privacy as long as key pairs are not reused. To ensure this, we propose a fairly minor modification to the output data to support some form of stealth addresses (ISAP or DKSAP). Proof of PaymentPayments can now be proven fairly easily. All that is necessary to prove a payment is the original output, the rangeproof, the output_data, and a merkle proof showing the rangeproof’s MMR membership. Multi-signature walletCurrently, securely sending funds to a multi-signature wallet requires the sender and all recipients to interact. The new proposal eliminates this need, at the expense of the privacy of the multi-signature wallet. Other improvementsSince we now have a way to submit additional data as part of an output, we can move fees or other data from the kernel into the output_data structure, which allows for pruning and thus reduces the size of the blockchain. AcknowledgementsThanks to John Tromp for a detailed description of the reorg attack, Jasper van der Maarel for advice on bulletproofs and multi-signature wallets, and Phyro for the suggestion to move kernel details into the output data structure. Many thanks to Daniel Lehnberg, Antioch Peverell, Phyro, and Vladislav Gelfer for their valuable feedback on the above design. Source link: litecointalk.io |
<<: With a 30% increase at the beginning of the year, will Bitcoin usher in a new bull market?
>>: Why ETH may not be able to maintain its monetary premium in the long run?
Starting at 12:00 noon on January 24, the three m...
Abkhazia continues to face an energy crisis. The ...
Editor’s note: This article comes from Lanhu Note...
In real life, we often say that a person who look...
Sword-shaped eyebrows refer to eyebrows that are ...
On September 11, the 2015 China-Arab Expo Online ...
Women generally have a serious jealousy problem b...
Palmistry Diagram: Waste Lines There are horizont...
Moles on a woman’s neck can bring good or bad luc...
The lines on a person's palm can change at an...
The crypto asset market has been on a roll since ...
If we want to gain more, we cannot do without our...
People with a rich and noble destiny live a smoot...
What kind of people are stingy? How to judge whet...
Although many people desire to be rich in this li...