Replies: 5 comments 2 replies
-
I tried to solve this issue in https://github.com/Atralupus/libplanet/tree/feat/except-extra-camparer this branch |
Beta Was this translation helpful? Give feedback.
-
Although Nine Chronicles wants Libplanet to consider any APVs signed by trusted parties even if their extra data differ from the current node's one, it's still unsure if it's generally good practice for every game/app made with Libplanet. IMHO it should be configurable. In fact, there was an option to accept or ignore different APVs signed by trusted parties, but it was removed for the simplicity (see also: #1885). It might be better to revert the removal (or provide a better API for it). |
Beta Was this translation helpful? Give feedback.
-
I was a bit confused for a while and had to go over the context several times to understand what is going on (I think?). 🙄 Current ImplementationAPV is structured to have three parts:
As it stands, APV equality is defined as "exact equality" where all three of the above must match. If a node receives a message with a different APV, two things "happen":
Intention of APVAlthough not specified explicitly in Wanted FeatureFrom the application side, although I'm not directly involved, I'm guessing the reason for the original post and the diagram by @Atralupus is to have launcher update cycle decoupled with the player update cycle. This can be interpreted several ways:
In either case, some kind of callback to the external application must be triggered. As for game clients, if we go with the first option, this isn't much of an issue as However, the problem is further complicated by NineChronicles.Headless nodes, as these are independent from the launcher client, as we'd want, or at least that is how I understand it, the deployed cluster intact. PremiseI think it'd be a good idea to define basic premises for APVs to make this discussion more concise. Let's define some terms first (by borrowing from math).
Consider the following premise:
If we accept this as part of the spec for Libplanet, then I'd say it makes sense for any node to accept all messages with weakly equivalent APVs as this should guarantee proper consensus between nodes.4 Then the issue at hand seems to be that the calling conditions for Footnotes
|
Beta Was this translation helpful? Give feedback.
-
We discussed and draw out the results Currently |
Beta Was this translation helpful? Give feedback.
-
I guess this discussion is still available and AFAIK @Atralupus and @greymistcube are discussed on discord about this. Have you any issues or ideas about this discussion? |
Beta Was this translation helpful? Give feedback.
-
We implemented a separate updater in the launcher for each project(player, launcher...) - planetarium/9c-launcher#1731
It's almost done, and this updater is dependent on
AppProtocolVersion
extra data - planetarium/9c-launcher#1744AppProtocolVersion
Shema looks like belowNow, if only the player changes exist, then only the player part will be changed. not increase
AppProtocolVersion
versionBut Currently
ValidateAppProtocolVersion
method inMessageValidator
is checkAppProtocolVersion
equality using this codelibplanet/Libplanet.Net/AppProtocolVersion.cs
Line 239 in d05c843
We want the
ValidateAppProtocolVersion
method should not to check extra dataBeta Was this translation helpful? Give feedback.
All reactions