Skip to content

Specs for protocol upgrades ahead of implementation #277

@anorth

Description

@anorth

The go-filecoin were planning to write code for handling protocol upgrades real soon now. Our motivation for doing so is that this is a complex and high-risk item, and the more experience and less time pressure we gain by doing it sooner will help us reach the best result.

However, this is an area that is complex, critical to long term network health, has broad reach, and also has prior art in other blockchains, of which the implementation team may not be especially familiar. If we proceed, the process would likely involve us completing some tech designs, and then proposing the results for the spec. I fear this has a reasonably high chance of a poor result because the resulting ideas and concepts may (a) not be the best informed, leading to a poor end result, and (b) diverge significantly from those already thought about, discussed etc but not yet documented, leading to significant churn and disagreement as we attempt to converge.

I'm therefore raising the possibility that we should wait for the protocol development and spec teams to go deep and establish a foundation. Involvement and interaction with the implementation team will still be critical, but we may be better off with the spec leadership coming from, say, @whyrusleeping. The go-filecoin team can still do some work in anticipation of clear upgrade protocols, but without a shared understanding of the eventual spec, such work is risky.

Some existing spec issues in this domain include #132, #197, #198, #199, but the scope is much greater than just those issues, including handling changes to encoding, block and message structures or semantics, consensus rules, existing actors, new actors, state encoding. @ZenGround0 is currently gathering an understanding of the full problem.

If this idea gains acceptance as a preferable path, I would request that protocol upgrades be a high priority item for speccing, for the reasons in the opening paragraph.

cc @mishmosh @acruikshank

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions