Thank you for your interest :)

> Quick question: if I am a routing node and receive a valid stake certificate, 
> can I reuse this stake certificate on my own outgoing payments?

That probably should be avoided, otherwise a mediocre routing node gets a lot 
of jamming opportunities for no good.

You are right, that’s a strong argument for proof “interactivity”: every 
Certificate should probably commit to *at least* public key of the routing node 
it is generated for.

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

Reply via email to