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

V2 Slate Compatibility #272

Merged
merged 9 commits into from
Dec 4, 2019

Conversation

yeastplume
Copy link
Member

@yeastplume yeastplume commented Dec 3, 2019

This restores wallet-to-wallet compatibility between V3.0.0 and V2.0.0 by re-introducing the V2 slate. The rules for conversion are:

When sending via HTTP (including TOR), the slate version on the remote side is checked and:

  • If V3 support is reported back, send slate as a V3 slate
  • If V2 only is reported back:
    • Downgrade slate to V2 before sending if payment_proof is None
    • If payment_proof is Some then stop the transaction with an error saying proofs aren't supported by the other side
    • If ttl_cutoff_height is some, warn the user that it will be ignored by the other side and dropped by them in the slate, but continue to downgrade to V2

When outputting a file (either via send or invoice):

  • If both payment_proof and ttl_cutoff_height are None, downgrade slate to V2 before outputting
  • If either payment_proof or ttl_cutoff_height are Some, output V3 slate with a warning that the other side must be upgraded to grin-wallet v3.0.0 or later

Tested sending back and forth between v2.0.0 and 3.0.0 wallets, sends via direct http and files, also invoices.

@quentinlesceller
Copy link
Member

Currently reviewing but just to let you know that the failing tests is because of:

thread 'main' panicked at '(left != right) 
left: {
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "Ok": {
      "foreign_api_version": 2,
      "supported_slate_versions": [
        "V3",
        "V2"
      ]
    }
  }
}
right: {
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "Ok": {
      "foreign_api_version": 2,
      "supported_slate_versions": [
        "V3"
      ]
    }
  }
}'

Defined here https://github.com/mimblewimble/grin-wallet/blob/master/api/src/foreign_rpc.rs#L56
So you don't have to go on Azure website :).

Copy link
Member

@quentinlesceller quentinlesceller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Tested between V2 and V3 node using http and file.

@yeastplume yeastplume merged commit 86e6f51 into mimblewimble:master Dec 4, 2019
@yeastplume yeastplume deleted the v2_slate_versioning branch January 6, 2020 09:56
yyangli pushed a commit to mwcproject/mwc-wallet that referenced this pull request May 13, 2020
* re-insert v2 slate

* reinstate version conversions

* rustfmt

* add and test versioning checks against 2.0.0 wallets

* rustfmt

* fix to invoice file output

* doctest fix

* remove target slate version from command line options
antiochp pushed a commit to antiochp/grin-wallet that referenced this pull request Aug 7, 2020
* re-insert v2 slate

* reinstate version conversions

* rustfmt

* add and test versioning checks against 2.0.0 wallets

* rustfmt

* fix to invoice file output

* doctest fix

* remove target slate version from command line options
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants