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