Implement state upgrades and migration #1050
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix #614
Part of #152
src/migration/
src/migration/0.ts
, which must always take a state from version N-1 and migrate to state N.src/migration/index.ts
, and put in a corresponding versioning entry in themigrations
mapping object, and is applied with amigrateState
function (asany
/type-unsafe input & output)src/state/decodeRaidenState
function then callsmigrateState
to apply the needed upgrades in order on the parsed state object, throwing if anything goes wrong in each step, and then validating/decoding the resulting data against currentRaidenState
schema, throwing if it fails as wellRaiden.create
, which previously acceptedlocalStorage
xorstate
, now also supports both through an object in the format{ storage; state? }
, which can be used to upload a state, to be used instead of the stored one, while keepinglocalStorage
setup (persistence).blockNumber
), and manual state purging is required if one wants to force loading a state (backup) through it