Replies: 4 comments 3 replies
-
As a purist I would rather not see lotus lose the ability to sync the whole chain. Another option: we could take that frozen binary and support delegating to it in the case of historical syncs. |
Beta Was this translation helpful? Give feedback.
-
Agree with @ZenGround0 , we should absolutely not ever remove the ability for a lotus node to sync the full chain. |
Beta Was this translation helpful? Give feedback.
-
This affects all nodes, not just Lotus. For a totally different, pragmatist take: data is forever, right? Especially if we store it on Filecoin. For use cases that require the full transaction history, what about ideas to store that full history within Filecoin (with massive redundancy)? As well as other places. The chances of humanity ever losing that data altogether are already pretty remote, we can make it way lower than the expected chance of some other catastrophe like crypto being broken. There are many details of course, questions of availability etc, so it's not an immediate fix. But in principle as a direction to aim for? There may be other reasons to preserve fully sync besides historical data access. What are those reasons? There's almost certainly something around detecting fake chains since the POW is not easily validated. But it would help a lot to get really concrete about the challenge there, and seriously explore alternatives to full sync (which, in practise, does anyone actually ever do?). These are protocol-level ideas. Even if they turn out to be infeasible, I concur with @arajasek that it's worth some serious effort to pursue simplifying the codebase that determines the future of the Filecoin network. Perhaps something has to be able to sync the full chain, but maybe it's not the binary we call Lotus that everyone runs. |
Beta Was this translation helpful? Give feedback.
-
Agree with @ZenGround0 and @whyrusleeping - i also think it's important for filecoin to have at least one client implementation, it can be lotus or forest, that has the ability to sync the full chain. Unless, there is a well maintained, long term commitment service that exists that provides full archival node services / full history snapshots. (summoning @travisperson who may or may not is working on this. )
imho, ideal/easy to say - but hard to do. @arajasek for the binary approach, say I want to build an application, that allows a SP, that joined the network since liftoff, to do bookkeeping stuff for their funds movement & history since they start a business for tax purpose. How will I do it? |
Beta Was this translation helpful? Give feedback.
-
Lotus has various code paths that exist for the purpose of syncing historical chain state. These paths are not exercised by the vast majority of Lotus users today (likely all of them), but are important to maintain for users that do want to validate the entirety of the Filecoin blockchain. Some examples of these paths include:
lotus/chain/stmgr/supply.go
Line 148 in e65fae2
lotus/chain/vm/vm.go
Line 317 in 05cdeb8
lotus/chain/consensus/filcns/upgrades.go
Lines 55 to 56 in 906463b
lotus/chain/actors/builtin/account/v0.go
Line 14 in e65fae2
I would like to propose removing these code paths from Lotus
master
. We would effectively say that new releases of Lotus only support accessing & validating the chain from a certain network version and onwards -- I would propose v14, which would give us about a year of historical lookback for now, while still dropping most of the bloat. Given that it is important to access & validate historical state, though, we must preserve that functionality somehow. We could do so by:lotus
today, and maintianing alotus-archive
repo into which we would periodically mergelotus
. This would be a lot of work, but we could do it on a quarterly, or as-needed basis.One risk from doing this would be to test networks, and
calibrationnet
in particular, which require all of these old code paths. We likely have users that do synccalibrationnet
from scratch. If we go forward with this proposal, it will be important to offer snapshots forcalibrationnet
similar to those that we offer for mainnet. An alternative could be to reset calibrationnet to start from nv14.Beta Was this translation helpful? Give feedback.
All reactions