Good morning Subhra,

> Is there any literature available on how protocols would get affected in 
> presence of Byzantine nodes ?

I am unaware of such.

In any case, when considering Byzantine faults, a Byzantine fault occurs where 
one node appears functional to some subset of the the system, but appears 
broken to a different subset.

When considering the channel mechanism (ignoring the payment layer on top that 
is built on cross-channel atomic swaps that are built on HTLCs), then the 
channel mechanism involves only two nodes.

Thus a Byzantine fault is impossible, at least when considering the channel 
mechanism.
Byzantine faults can only occur if at least three nodes exist: node A appears 
broken to node B but looks perfectly fine to node C.
At the channel mechanism layer, we only consider that if your channel 
counterparty seems broken, you can always just drop the channel onchain at any 
time and enforce any state needed by the payment layer onchain.
Thus, the blockchain resistance to Byzantine actors comes into play when you 
drop channels onchain.

More interesting is considering the payment layer on top of the channel layer.

If the payment is from a payer with a direct channel to the payee, then it is 
completely uninteresting, as again this is the same impossible-to-Byzantine, 
two-participant, we-can-always-drop-things-onchain-at-any-time case.

The interesting case is with a forward, wherein some remote payer sends 
payments through one or more forwarding nodes.
There is already much literature and analysis regarding the multi-hop 
forwarding mechanism, including the original Poon-Dryja paper, as well as the 
"multi-hop locks" paper.

For the most part, for a hop node on a payment attempt, there are three 
participants:

* Itself.
* The incoming node.
* The outgoing node.

Let us consider each case.

* Suppose itself is Byzantine.
  * Suppose it acts correctly to the incoming node, but acts strangely to the 
outgoing node.
    * Then the outgoing node will not claim the payment and itself will be 
unable to claim the payment.
      * At worst-case, the HTLC timeout will come into play and force failure 
of the payment.
  * Suppose it acts correctly to the outgoing node, but acts strangely to the 
incoming node.
    * The the outgoing node will claim the payment, but itself will be unable 
to claim the incoming payment.
      * Itself, if it is rational, would avoid this case, since it would end up 
paying the payee while the supposed payer does not actually give any money.
* Suppose the incoming node is Byzantine.
  * Then itself would not even know what the outgoing node would be, so this 
devolves to a 2-participant case.
* Suppose the outgoing node is Byzantine.
  * Then the outgoing node would be unable to claim the payment.
    * Itself will then fail the incoming payment.

The same analysis holds for all hop nodes on a single payment attempt.


> For example, consider that a 2 byzantine nodes open a payment channel, since 
> none of the intermediate transaction in a channel gets recorded, will this 
> impact other transactions which gets routed through this channel ?

Do you mean that the 2 cooperating nodes have a direct payment channel with 
each other and want to somehow negatively affect the rest of the network?

Those two nodes would be indistinguishable from a single node that has the 
channels of both nodes.

In fact, the channel between those nodes would be "wasted", i.e. locked for no 
good reason.
The aggregate of the two nodes would own all the money in that payment channel, 
and would uselessly allocate funds from one node to the other, even though they 
true owner is their aggregate and it is no different from the aggregate HODLing 
its funds in a hot wallet.

In such a case, it is immaterial to the rest of the network what games the 
aggregate of both nodes plays with the money that it holds solely as its own, 
in much the same way that you might mentally allocate your liquid funds as 
"okay, I shall spend 10mBTC on buying new anime, 25mBTC on buying figurines of 
Asuka-sama, and 100mBTC in donating to ZmnSCPxj, the rest I shall keep in 
reserve" and nobody else would care (because obviously Rei-chan is objectively 
better than Asuka-sama).

The only interesting case is if the two nodes are truly independent of each 
other.
But then the Byzantine problem also arises between these two nodes, thus if 
they are Byzantine anyway, they are far more likely to be unable to coordinate 
to attack the rest of the network and are far more likely to harm each other 
(but this is a cop-out).

Regards,
ZmnSCPxj

_______________________________________________
Lightning-dev mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev

Reply via email to