Good morning Alejandro,
There is no assumption involved, merely a large number of questions.
In a retaliation construction, if a party misbehaves, the other party gets the
entire amount they are working on together, as disincentive for any party to
cheat.
That works for the two-party case A and B. If A cheats, B gets money.
How do you extend that to the three-party case A B C? If A cheats, what
happens?
Suppose the correct current state is A=2, B=99, C=3. Suppose A cheats and
attempts to publish A=102, B=1, C=1. C detects it because B is asleep at that
time. Does C get to claim the money that A claimed for itself, basically 101+1
and thus 102? But the correct state has almost all of the money assigned to B
instead. Obviously that is unjust. Instead C should get to claim only 3 from
A (its 3 in the final state) in addition to its 1 in the published state, and
should give the 99 to B. So now B also needs another retaliatory construction
for the case "A cheated first and C found out and and also cheated me", and a
separate construction for "A cheated but C was honest". And that is separate
construction for the case "C cheated first and A found out and also cheated me"
and a separate construction for "C cheated but A was honest".
As should be obvious, it does not scale well with number of participants on a
single offchain "purse"; it quickly becomes complex fast.
Retaliatory constructions however have the major advantage of not imposing
limits on the number of updates that are allowed to the offchain "purse".
Prior to Rusty shachains it was thought to require storage linear in the number
of updates (which could be pruned once the channel/"purse" is brought onchain),
but Rusty shachains also require O(1) storage on number of updates. Thus
retaliatory constructions are used for channels.
Note that channel factories, to my understanding, can have the Duplex
construction near the root of the initial onchain anchor transaction, but be
terminated in Poon-Dryja retaliatory channels, so that a good part of the
current LN technology has a good chance of working even after channel factories
are implemented. This strikes me as a good balance: restructuring channels is
expected to be much rarer compared to updating them normally for normal usage,
so each construction plays its own strengths: the Decker-Wattenhofer
construction which imposes a limit on the number of updates, but has no limit
on number of participants, is used for the rarer. massive "channel
restructuring" operations, while the Poon-Dryja construction which imposes a
practical limit on number of particiapnts, but has no limit on number of
updates, is used for "day-to-day" normal operation.
Regards,
ZmnSCPxj
_______________________________________________
Lightning-dev mailing list
Lightning-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev