<oembed><type>rich</type><version>1.0</version><title>Andrés G. Aragoneses [ARCHIVE] wrote</title><author_name>Andrés G. Aragoneses [ARCHIVE] (npub13e…tkq6u)</author_name><author_url>https://yabu.me/npub13e0usm0e4q8qmxvgyq85xapy84hrsks3yp376dqx0ma5ahedsq4s2tkq6u</author_url><provider_name>njump</provider_name><provider_url>https://yabu.me</provider_url><html>📅 Original date posted:2020-11-27&#xA;📝 Original message:&#xA;Hey,&#xA;&#xA;On Fri, 27 Nov 2020 at 19:18, Bastien TEINTURIER &lt;bastien at acinq.fr&gt; wrote:&#xA;&#xA;&gt; Good morning list,&#xA;&gt;&#xA;&gt; This is an interesting approach to solve this problem, I really like the&#xA;&gt; idea.&#xA;&gt; It definitely deserves digging more into it: the fact that it doesn&#39;t add&#xA;&gt; an additional&#xA;&gt; payment makes it largely superior to upfront payment schemes in terms of&#xA;&gt; UX.&#xA;&gt;&#xA;&gt; If we restrict these stake certificates to LN funding txs, which have a&#xA;&gt; very specific format&#xA;&gt; (multisig 2-of-2) there are probably smart ways to achieve this.&#xA;&gt; If for example we&#39;re able to do it easily with Schnorr-based funding txs,&#xA;&gt; it may be worth&#xA;&gt; waiting for that to happen.&#xA;&gt; I&#39;m a bit afraid of having to use ZKPs for general statements, I&#39;d prefer&#xA;&gt; something tailored&#xA;&gt; to that specific case (it would likely be more efficient and have less new&#xA;&gt; assumptions - even&#xA;&gt; though you&#39;re right to point out that this is a non-critical system, so&#xA;&gt; we&#39;re freer to experiment&#xA;&gt; with hot new stuff).&#xA;&gt;&#xA;&gt; I completely agree with Z that it should be added to the requirements that&#xA;&gt; a node cannot&#xA;&gt; reuse a stake certificate from another node for himself.&#xA;&gt;&#xA;&gt; Another constraint is that the proof has to be small, since we have to fit&#xA;&gt;&gt; it all in a small onion...&#xA;&gt;&gt;&#xA;&gt;&#xA;&gt; I&#39;m not sure that&#39;s necessary. If I understand correctly, you&#39;re saying&#xA;&gt; that because in your&#xA;&gt; model, the sender (Alice) creates one stake certificate for each node in&#xA;&gt; the route (Bob, Carol)&#xA;&gt; and puts them in the onion.&#xA;&gt;&#xA;&gt; But instead it could be a point-to-point property: each node provides its&#xA;&gt; own stake certificate&#xA;&gt; to the next node (and only to that node). Alice provides a stake&#xA;&gt; certificate to Bob, then Bob&#xA;&gt; provides a stake certificate to Carol, and so on. If that&#39;s the case, it&#xA;&gt; can be in a tlv field in the&#xA;&gt; `update_add_htlc` message and doesn&#39;t need to be inside the onion. This&#xA;&gt; also makes it less&#xA;&gt; likely that Alice is exposing herself to remote nodes in the route (payer&#xA;&gt; privacy).&#xA;&gt;&#xA;&#xA;If the above paragraph is confirmed, then does this mean StakeCertificates&#xA;with privacy are possible without ZK proofs?&#xA;Or did I miss something?&#xA;&#xA;&#xA;&#xA;&gt;&#xA;&gt; Of course, this depends on the implementation details we choose, but I&#xA;&gt; think it&#39;s worth stressing&#xA;&gt; that these two models exist and are quite different.&#xA;&gt;&#xA;&gt; Thanks,&#xA;&gt; Bastien&#xA;&gt;&#xA;&gt; Le ven. 27 nov. 2020 à 07:46, ZmnSCPxj via Lightning-dev &lt;&#xA;&gt; lightning-dev at lists.linuxfoundation.org&gt; a écrit :&#xA;&gt;&#xA;&gt;&gt; Good morning Gleb,&#xA;&gt;&gt;&#xA;&gt;&gt; &gt; Thank you for your interest :)&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; &gt; Quick question: if I am a routing node and receive a valid stake&#xA;&gt;&gt; certificate, can I reuse this stake certificate on my own outgoing payments?&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; That probably should be avoided, otherwise a mediocre routing node gets&#xA;&gt;&gt; a lot of jamming opportunities for no good.&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; You are right, that’s a strong argument for proof “interactivity”:&#xA;&gt;&gt; every Certificate should probably commit to *at least* public key of the&#xA;&gt;&gt; routing node it is generated for.&#xA;&gt;&gt;&#xA;&gt;&gt; Right, it would be better to have the certificate commit to a specific&#xA;&gt;&gt; routing node rather than the payment hash/point as I proposed.&#xA;&gt;&gt; Committing to a payment hash/point allows a random forwarding node to&#xA;&gt;&gt; probe the rest of the network using the same certificate, lowering the&#xA;&gt;&gt; score for that certificate on much of the network.&#xA;&gt;&gt;&#xA;&gt;&gt; Another constraint is that the proof has to be small, since we have to&#xA;&gt;&gt; fit it all in a small onion...&#xA;&gt;&gt;&#xA;&gt;&gt; Presumably we also want the score to eventually &#34;settle to 0&#34; over time.&#xA;&gt;&gt;&#xA;&gt;&gt; Regards,&#xA;&gt;&gt; ZmnSCPxj&#xA;&gt;&gt;&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; – gleb&#xA;&gt;&gt; &gt; On Nov 27, 2020, 2:16 AM +0200, ZmnSCPxj &lt;ZmnSCPxj at protonmail.com&gt;,&#xA;&gt;&gt; wrote:&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; &gt; Good morning Gleb and Antoine,&#xA;&gt;&gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; This is certainly interesting!&#xA;&gt;&gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; Quick question: if I am a routing node and receive a valid stake&#xA;&gt;&gt; certificate, can I reuse this stake certificate on my own outgoing payments?&#xA;&gt;&gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; It seems to me that the proof-of-stake-certificate should also&#xA;&gt;&gt; somehow integrate a detail of the current payment (such as payment&#xA;&gt;&gt; hash/point) so it cannot be reused by routing nodes for their own outgoing&#xA;&gt;&gt; payments.&#xA;&gt;&gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; For example, looking only at your naive privacy-broken proposal, the&#xA;&gt;&gt; signature must use a `sign-to-contract` where the `R` in the signature is&#xA;&gt;&gt; actually `R&#39; + h(R&#39; | payment_hash)` with the `R&#39;` also revealed.&#xA;&gt;&gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; Regards,&#xA;&gt;&gt; &gt; &gt; ZmnSCPxj&#xA;&gt;&gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Hello list,&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; In this post, we explore a different approach to channel jamming&#xA;&gt;&gt; mitigation.&#xA;&gt;&gt; &gt; &gt; &gt; We won’t talk about the background here, for the problem&#xA;&gt;&gt; description as well as some proposed solutions (mainly upfront payment&#xA;&gt;&gt; schemes), see [1].&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; We’re suggesting using UTXO ownership proofs (a.k.a. Stake&#xA;&gt;&gt; Certificates) to solve this problem. Previously, these proofs were only&#xA;&gt;&gt; used in the Lightning Network at channel announcement time to prevent&#xA;&gt;&gt; malicious actors from announcing channels they don’t control. One can think&#xA;&gt;&gt; of it as a “fidelity bond” (as a scarce resource) as a requirement for&#xA;&gt;&gt; sending HTLCs.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; We start by overviewing issues with other solutions, and then&#xA;&gt;&gt; present a naive, privacy-broken Stake Certificates. Then we examine&#xA;&gt;&gt; designing a privacy-preserving version, evaluating them. At the end, we&#xA;&gt;&gt; talk about non-trivial design decisions and open questions.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; ## Issues with other proposals&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; We find unsatisfying that upfront payment schemes come at a cost of&#xA;&gt;&gt; new fees (forward and/or backward), thus inflating payment cost for *any*&#xA;&gt;&gt; payment.&#xA;&gt;&gt; &gt; &gt; &gt; In the future, the upfront base fee might even make “micropayments”&#xA;&gt;&gt; economically infeasible by exceeding the value they transfer. Thus, a good&#xA;&gt;&gt; solution should not inflate payment cost while still requiring “burning” a&#xA;&gt;&gt; scarce resource (so that the attack is not free).&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Another issue with upfront payments is a circular trust dependency.&#xA;&gt;&gt; Ideally, we shouldn’t introduce anything less trust-minimized than the&#xA;&gt;&gt; Lightning Network itself.&#xA;&gt;&gt; &gt; &gt; &gt; Upfront payment schemes are not like that, because they in one way&#xA;&gt;&gt; or another rely on the honest behavior of route participants.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; We believe Stake Certificates we are going to introduce are&#xA;&gt;&gt; satisfactory in both of these directions: they don’t inflate payment costs&#xA;&gt;&gt; for honest users and don’t require trust. The main disadvantage of Stake&#xA;&gt;&gt; Certificates seems to be the novel cryptography required.&#xA;&gt;&gt; &gt; &gt; &gt; See more details in the “Evaluation” section.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; ## Channel Ownership Proofs as Routing Credit Balance&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Let’s say Alice wants to relay an HTLC to Carol through Bob. Per&#xA;&gt;&gt; the Stake Certificates scheme, she has to commit to a particular channel&#xA;&gt;&gt; UTXO by embedding an ownership proof in the onion packet while sending an&#xA;&gt;&gt; HTLC to Bob.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Bob then unwraps the onion and verifies:&#xA;&gt;&gt; &gt; &gt; &gt; 1) the channel identifier is pointing unambiguously to an on-chain&#xA;&gt;&gt; UTXO;&#xA;&gt;&gt; &gt; &gt; &gt; 2) the ownership proof (e.g., a signature) is valid against the&#xA;&gt;&gt; previously disclosed UTXO witness script.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; If all those checks succeed, Bob should see if Alice hasn’t&#xA;&gt;&gt; exceeded her credit balance. In case she hasn’t, Bob has to “decrement&#xA;&gt;&gt; Alice’s credit balance” and relay the HTLC to Carol.&#xA;&gt;&gt; &gt; &gt; &gt; Decrementing credit balance unconditionally of packet success or&#xA;&gt;&gt; failure bounds liquidity abuse by malicious HTLC senders.&#xA;&gt;&gt; &gt; &gt; &gt; Since there is no credit assigned initially, “decrementing the&#xA;&gt;&gt; credit balance” means just remembering that “Alice spent X out of Y of the&#xA;&gt;&gt; credit she received for her Stake Certificates”.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Unfortunately, this naive protocol is a privacy nightmare, because&#xA;&gt;&gt; routing nodes can now easily assign every HTLC they forward to the sender’s&#xA;&gt;&gt; UTXO.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Let’s first define the terms here one more time, and then proceed&#xA;&gt;&gt; to the non-naive, private Stake Certificates.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; - Stake Certificate. Either means a solution we’re proposing or the&#xA;&gt;&gt; primitive it is based on, namely proof of UTXO ownership. As we will argue&#xA;&gt;&gt; later, it actually makes sense to use proof of LN channel UTXO ownership&#xA;&gt;&gt; specifically rather than any funds ownership.&#xA;&gt;&gt; &gt; &gt; &gt; - Stake Certificate value. An amount of the corresponding UTXO or a&#xA;&gt;&gt; ballpark this amount provably  belongs to.&#xA;&gt;&gt; &gt; &gt; &gt; - Credit balance. When Alice provides a routing node Bob with a&#xA;&gt;&gt; Stake Certificate, Bob should increase Alice’s routing credit balance.&#xA;&gt;&gt; Alice is then limited in her payments by this balance, and this rule is&#xA;&gt;&gt; enforced by routing nodes to prevent free channel jamming in the network.&#xA;&gt;&gt; Note that ideally “Alice’s credit balance“ should be virtual and only known&#xA;&gt;&gt; to Alice, while routing nodes should only observe per-UTXO credit balance.&#xA;&gt;&gt; We currently assume that each routing node keeps track of per-UTXO credit&#xA;&gt;&gt; balance separately, see “Design decisions” for more details.&#xA;&gt;&gt; &gt; &gt; &gt; - Stake-to-credit function defines how much credit balance is given&#xA;&gt;&gt; per a Stake Certificate of a given value. This function is a policy of a&#xA;&gt;&gt; routing node, and it should be announced.&#xA;&gt;&gt; &gt; &gt; &gt; - Credit-to-value-transferred function defines how much value a&#xA;&gt;&gt; sender can transfer along a given channel considering how much credit they&#xA;&gt;&gt; might claim. The function may also consider different factors (e.g., the&#xA;&gt;&gt; available capacity of a channel being used) to provide extra robustness.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; ## Privacy-preserving Stake Certificates&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; The presented scheme could preserve privacy if it relied on&#xA;&gt;&gt; zero-knowledge proofs of UTXO ownership by avoiding pointing to a&#xA;&gt;&gt; particular UTXO.&#xA;&gt;&gt; &gt; &gt; &gt; More specifically, the verifier should be able to check that:&#xA;&gt;&gt; &gt; &gt; &gt; a) The staked UTXO is an element of the current UTXO set&#xA;&gt;&gt; &gt; &gt; &gt; b) The prover knows the witness script committed by the UTXO&#xA;&gt;&gt; witness program&#xA;&gt;&gt; &gt; &gt; &gt; c) The prover knows a valid witness for the witness script&#xA;&gt;&gt; &gt; &gt; &gt; d) The staked UTXO was not used to produce a different Stake&#xA;&gt;&gt; Certificate which is currently in use as well.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; The verifier should also have a way to see a Stake Certificate&#xA;&gt;&gt; value to properly account for the credit. This can be achieved by&#xA;&gt;&gt; restricting the UTXO set being proved upon to only those UTXOs with a&#xA;&gt;&gt; specific range of values: “I will prove that I own a UTXO among all UTXOs&#xA;&gt;&gt; between 0.5 BTC and 1 BTC”.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Unfortunately, steps (b) and (c) require zero-knowledge protocols&#xA;&gt;&gt; for general statements, which are more experimental primitives than most of&#xA;&gt;&gt; the stuff we have in Bitcoin protocols,&#xA;&gt;&gt; &gt; &gt; &gt; although we assume it’s feasible to consider them for non-consensus&#xA;&gt;&gt; stuff.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; ## Evaluation&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Stake Certificates, upfront payment schemes, and other potential&#xA;&gt;&gt; solutions (given a particular configuration) may be compared along the&#xA;&gt;&gt; following axis:&#xA;&gt;&gt; &gt; &gt; &gt; 1) Economic feasibility&#xA;&gt;&gt; &gt; &gt; &gt; 1a) What is the cost of overcoming the protection for an attacker?&#xA;&gt;&gt; Likely a non-linear function: sats_spent =f(channels_to_jam, […])&#xA;&gt;&gt; &gt; &gt; &gt; 1b) How does this solution limit honest users?&#xA;&gt;&gt; &gt; &gt; &gt; 2) How sophisticated is this solution in terms of integration and&#xA;&gt;&gt; making good UX?&#xA;&gt;&gt; &gt; &gt; &gt; 3) How complex is this solution in terms of protocol&#xA;&gt;&gt; design/implementation?&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; When it comes to (1a), both Stake Certificates and upfront payments&#xA;&gt;&gt; are probably equal, in a way that they’re just best-effort ideas to&#xA;&gt;&gt; increase the attack cost. Unfortunately, we currently don’t know how to&#xA;&gt;&gt; design something as economically powerful as PoW in Bitcoin [3].&#xA;&gt;&gt; &gt; &gt; &gt; This aspect can be properly evaluated by applying these ideas to&#xA;&gt;&gt; different hypothetical kinds of LN in a simulation and observing the&#xA;&gt;&gt; resulting trade-off between (1a) and (1b) considering different attack&#xA;&gt;&gt; strategies.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; In the previous sections of this post, we have argued that Stake&#xA;&gt;&gt; Certificates may provide a much better (1b) for the cost of (3) because it&#xA;&gt;&gt; relies on zero-knowledge.&#xA;&gt;&gt; &gt; &gt; &gt; When it comes to (2), the design of Stake Certificates may vary in&#xA;&gt;&gt; terms of UX burden, from completely automatic to requiring custom actions&#xA;&gt;&gt; with private keys from users.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Some of these trade-offs along with other interesting questions are&#xA;&gt;&gt; discussed in the following section.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; ## Design decisions and questions&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; #### Should the credit spending be gossipped across the entire&#xA;&gt;&gt; network, or should only the routing nodes involved in the payment know?&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Economically, these two approaches are likely to be equivalent, and&#xA;&gt;&gt; it’s just a matter of stake-to-credit ratio.&#xA;&gt;&gt; &gt; &gt; &gt; However, announcing credit spending to the network results in a&#xA;&gt;&gt; privacy leak. It also imposes bandwidth and CPU overhead on the routing&#xA;&gt;&gt; nodes.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; #### Which zero-knowledge system should be used for Stake&#xA;&gt;&gt; Certificates?&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Choosing a ZK system boils down to picking the right trade-offs of&#xA;&gt;&gt; proving and verifying time, and assumptions. As we mentioned previously, we&#xA;&gt;&gt; would need proving general statements.&#xA;&gt;&gt; &gt; &gt; &gt; At the same time, we need something cheap in both proving and&#xA;&gt;&gt; verification, because Lightning is supposed to be fast.&#xA;&gt;&gt; &gt; &gt; &gt; At the same time, the setup probably doesn’t matter, because proofs&#xA;&gt;&gt; are supposed to be verified only by one participant, a routing node this&#xA;&gt;&gt; proof is generated for.&#xA;&gt;&gt; &gt; &gt; &gt; Perhaps we can also pick any cryptographic assumptions we want&#xA;&gt;&gt; since this stuff is not mission-critical and can be easily updated if&#xA;&gt;&gt; someone breaks a cryptographic assumption and we observe an attack.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; #### Should we allow holding *any* Bitcoins (not just LN channels)&#xA;&gt;&gt; for Stake Certificates?&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; This idea might make sense if we’re worried that some LN users&#xA;&gt;&gt; might want to send more payments than they can afford per their credit.&#xA;&gt;&gt; However, we believe that allowing any UTXO would give an attacker more&#xA;&gt;&gt; opportunities to use their cold funds for this attack, or even have a&#xA;&gt;&gt; secondary market where holders sell their proofs (they have nothing to&#xA;&gt;&gt; loose).&#xA;&gt;&gt; &gt; &gt; &gt; Instead, we should a) design the credit-to-stake-functions better;&#xA;&gt;&gt; b) encourage users send payments across different routing nodes (since&#xA;&gt;&gt; credits are not tracked globally) [4].&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; #### What’s the best credit-to-value-transferred function?&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; We reckon that this function should be not just linear to provide&#xA;&gt;&gt; maximum security against malicious channel jammers. For example, we can&#xA;&gt;&gt; charge more credit for the last 20% of the capacity of the *channel used&#xA;&gt;&gt; for routing*. Alternatively, we could discourage making too many payments&#xA;&gt;&gt; from the same UTXO within a short period of time by charging more credit in&#xA;&gt;&gt; this case.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; #### What about the interactivity and lifetime of Stake&#xA;&gt;&gt; Certificates?&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Interactive proofs mean that they are constructed on demand of a&#xA;&gt;&gt; routing node, non-interactive means constructed by a payment sender ahead&#xA;&gt;&gt; of time.&#xA;&gt;&gt; &gt; &gt; &gt; Both interactivity and lifetime have something to do with the ease&#xA;&gt;&gt; of producing proof and accessing keys.&#xA;&gt;&gt; &gt; &gt; &gt; We will omit the details of the trade-off we consider, but it&#xA;&gt;&gt; remains an open question.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; #### If Stake Certificates are valid for N blocks after proof&#xA;&gt;&gt; generation, does it mean that if the UTXO is spent during those N blocks,&#xA;&gt;&gt; new proof can be generated from the same coins without invalidating the old&#xA;&gt;&gt; proof?&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Yes, but an attacker would, first of all, have to pay an on-chain&#xA;&gt;&gt; fee for this. If we’re still worried about this problem, there are&#xA;&gt;&gt; workaround ideas.&#xA;&gt;&gt; &gt; &gt; &gt; For example, we could have epochs of 100 blocks (every epoch starts&#xA;&gt;&gt; at #XYZXYZ00 block). If at the start of an epoch, a channel wasn’t in the&#xA;&gt;&gt; UTXO set, it provides very little credit.&#xA;&gt;&gt; &gt; &gt; &gt; Alternatively, we could expand the zero-knowledge part to proving&#xA;&gt;&gt; that the coins were not yet spent.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; #### Should spending a UTXO reveal all Stake Certificates generated&#xA;&gt;&gt; from it?&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; This would also solve the problem in the previous question, but it&#xA;&gt;&gt; would mean a retrospective privacy leak again. To avoid a privacy leak, we&#xA;&gt;&gt; should prevent this.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; #### What if malicious Sybil *routing* nodes failing payments&#xA;&gt;&gt; causing other honest routing nodes to reduce the credit of an honest&#xA;&gt;&gt; payment sender?&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Both Stake Certificates and upfront payment schemes suffer from&#xA;&gt;&gt; malicious routing nodes failing the payments and “wasting” the sender’s&#xA;&gt;&gt; credit or fees. This problem even applies out of the channel jamming&#xA;&gt;&gt; context, when considering payment failure rate.&#xA;&gt;&gt; &gt; &gt; &gt; This problem can be addressed by reducing the reputation of faulty&#xA;&gt;&gt; links and routing nodes on the payment sender node. When payment routing&#xA;&gt;&gt; becomes a for-profit activity, this would encourage routing nodes to&#xA;&gt;&gt; sanitize their links.&#xA;&gt;&gt; &gt; &gt; &gt; The mitigation can be even stronger by using “provable blaming”&#xA;&gt;&gt; introduced in [2].&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; ## Conclusion&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; We propose Stake Certificates, a new solution to channel jamming.&#xA;&gt;&gt; Perhaps, it might not be the best near-term solution due to the complexity,&#xA;&gt;&gt; but the zero satoshi overhead for honest payments is an appealing argument&#xA;&gt;&gt; to switch to it in the future.&#xA;&gt;&gt; &gt; &gt; &gt; This proposal also illustrates how stake-based protocols can solve&#xA;&gt;&gt; Sybil challenges in the Bitcoin ecosystem. Since this might be useful in&#xA;&gt;&gt; other contexts (Sybil-resistance of many kinds, proof-of-ownership),&#xA;&gt;&gt; discussing Stake Certificates is even more useful.&#xA;&gt;&gt; &gt; &gt; &gt; The next step is a discussion of Stake Certificates. If the&#xA;&gt;&gt; community finds it interesting, then we should discuss the design questions&#xA;&gt;&gt; mentioned above, and choose a cryptosystem.&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; Cheers,&#xA;&gt;&gt; &gt; &gt; &gt; Gleb Naumenko and Antoine Riard&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; ———&#xA;&gt;&gt; &gt; &gt; &gt;&#xA;&gt;&gt; &gt; &gt; &gt; References and footnotes:&#xA;&gt;&gt; &gt; &gt; &gt; 1.&#xA;&gt;&gt; https://github.com/t-bast/lightning-docs/blob/master/spam-prevention.md&#xA;&gt;&gt; &gt; &gt; &gt; 2.&#xA;&gt;&gt; https://lists.linuxfoundation.org/pipermail/lightning-dev/2015-August/000135.html&#xA;&gt;&gt; &gt; &gt; &gt; 3. We don’t actually suggest PoW to solve these issues, because a)&#xA;&gt;&gt; the trade-off between honest user cost and attacker cost is misaligned due&#xA;&gt;&gt; to specialized hardware and b) smartphones would die too fast if they have&#xA;&gt;&gt; to compute PoW; PoW is just an unreachable example of system robustness due&#xA;&gt;&gt; to well-aligned game theory.&#xA;&gt;&gt; &gt; &gt; &gt; 4. Secondary markets are still possible even if we restrict&#xA;&gt;&gt; acceptable proofs to only LN channels, but supply would be much smaller,&#xA;&gt;&gt; and markets would work much worse for an attacker.&#xA;&gt;&gt;&#xA;&gt;&gt;&#xA;&gt;&gt; _______________________________________________&#xA;&gt;&gt; Lightning-dev mailing list&#xA;&gt;&gt; Lightning-dev at lists.linuxfoundation.org&#xA;&gt;&gt; https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#xA;&gt;&gt;&#xA;&gt; _______________________________________________&#xA;&gt; Lightning-dev mailing list&#xA;&gt; Lightning-dev at lists.linuxfoundation.org&#xA;&gt; https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/lightning-dev/attachments/20201127/ca1ded55/attachment-0001.html&gt;</html></oembed>