Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mechanism for implementing code-level protocol upgrades with backward compatibility #269

Closed
csuwildcat opened this issue Jul 23, 2019 · 3 comments
Labels
documentation Update to doc files

Comments

@csuwildcat
Copy link
Member

csuwildcat commented Jul 23, 2019

No description provided.

@OR13
Copy link
Contributor

OR13 commented Aug 7, 2019

I believe there is some linkage between blockchainTime and supported crypto / hashing algorithms.

It sounds like maybe this ticket is asking for official client version binding. There is no way a client that does not support new hash algorithm can process new DIDs, nor a new client old ones if an old hash algorithm is dropped.

There is this ticket for defining protocol version: #265

We've thought about this a lot with element, in particular, can we support a great UX on top of multiple versions of the sidetree protocol?

The pruning / dos change being a good example of a major change. We'd like to be able to support ongoing use and the upgraded version.

Protocol version could be embedded in the anchorFile.

Old clients could ignore new protocol version anchorFiles, but the state they built should probably not be trusted.

I think we need to test a series of client upgrades in integration tests, where the structure of files changes. Probably a blocking dependency for #266

thehenrytsai added a commit that referenced this issue Aug 10, 2019
@csuwildcat
Copy link
Member Author

The way Henry is implementing this assumes that upgrades to the protocol that result in breaking/forking changes require nodes to run the upgraded version to remain in the same 'network'. There are upgrades that can be optional, if they only are optimizations to existing protocol rules that do not result in forking conditions, but anything that changes the state of what a node sees as valid DIDs, ops, and resulting DID Document state will require network-wide upgrades.

thehenrytsai added a commit that referenced this issue Aug 13, 2019
thehenrytsai added a commit that referenced this issue Aug 15, 2019
…h backward compatibility (#273)

* Issue #269 - Added VersionManager and TransactionProcessor.

* Issue #269 - Introduced IProtocolVersion.

* Issue #269 - Implemented version loading.

* Issue #269 - Fixed incomplete initialization for VersionManager.

* Issue #269 & #166 - Split Operation class into an additional AnchoredOperation class.

* Issue #269 & #272 - Moved Resolver to orchestration layer & Renamed interfaces.

* Issue #269 - Removed dummy test file.

* #272 - Updated README.
@thehenrytsai
Copy link
Collaborator

Implemented.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Update to doc files
Projects
None yet
Development

No branches or pull requests

3 participants