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

Added multisig wallets to the Android application #2279

Merged
merged 64 commits into from Jun 16, 2021

Conversation

Aldin-SXR
Copy link

@Aldin-SXR Aldin-SXR commented May 21, 2021

This pull request implements the multisig wallet feature into the Android application, in addition to some other changes. The main changes are as follows:

  • Adds the option to create multisig wallets when creating a new wallet.
    • This re-arranges the original "New wallet" layout a bit, to first ask the user about the wallet kind they want (standard or multisig), and then display the appropriate follow-up dialogs.
  • Adds the wallet type next to the name of an open wallet in the navbar (to easily differentiate between standard and m-of-n wallets).
  • Adds the "Information" option in the wallet dropdown to display a dialog with wallet name, type and script type, and the master public key (to allow for easier creation of multisig wallets by simply copying that key).
  • Makes the QR code scanner in "Load Transaction" also work with Base43-encoded data.
    • Implements the Base43 companion object for encoding/decoding.
    • Since the QR code module on the desktop version creates Base43-encoded strings, this makes it possible to begin a transaction on desktop, scan it via the application and complete it inside the app.
  • Adds some additional information about raw transactions in the "Save/Load Transaction" - transaction signing state (unsigned, partially signed, fully signed, etc).
    • Can be helpful with multisig sending, to know how many signatures are still required.
  • Makes it possible to send transactions in multisig wallets via "Save transaction" and "Load transaction".
    • Create a partially signed transaction inside the application or in the desktop version.
    • Send the hex (or scan the QR code on desktop) to another cosigner to either add a new signature or to broadcast, if there is enough signatures.

…ialog to match the approach used in the Send dialog.
@mhsmith mhsmith self-requested a review May 21, 2021 11:01
@mhsmith
Copy link
Collaborator

mhsmith commented May 23, 2021

Thanks, this looks very good. I'll post a more detailed review tomorrow.

Copy link
Collaborator

@mhsmith mhsmith left a comment

Choose a reason for hiding this comment

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

I haven't tested everything yet, but here are my comments so far. These are mostly layout and style issues which should be easy to fix.

android/app/src/main/res/layout/wallet_information.xml Outdated Show resolved Hide resolved
android/app/src/main/res/layout/load.xml Outdated Show resolved Hide resolved
android/app/src/main/res/layout/choose_keystore.xml Outdated Show resolved Hide resolved
@mhsmith
Copy link
Collaborator

mhsmith commented May 26, 2021

Sorry for being so slow, I'll have more comments soon. Meanwhile, it would be a good idea to merge from the Electron-Cash master branch and test the result to make sure your changes still work with the current version.

@Aldin-SXR
Copy link
Author

Sorry for being so slow, I'll have more comments soon. Meanwhile, it would be a good idea to merge from the Electron-Cash master branch and test the result to make sure your changes still work with the current version.

No problem. I'm also a bit busier these days, but I'm working on the requested changes.

Will do that.

Copy link
Collaborator

@mhsmith mhsmith left a comment

Choose a reason for hiding this comment

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

Final comments:

@mhsmith
Copy link
Collaborator

mhsmith commented May 30, 2021

OK, that's the last batch. Overall I think you've done a great job, especially since this is your first contribution to the project. I'm sure the users are going to like it.

Copy link
Collaborator

@mhsmith mhsmith left a comment

Choose a reason for hiding this comment

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

All of your changes yesterday look good, except for this one:

Copy link
Collaborator

@mhsmith mhsmith left a comment

Choose a reason for hiding this comment

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

The ColdLoad updates look mostly fine, just a few more comments:

@Aldin-SXR
Copy link
Author

Aldin-SXR commented Jun 10, 2021

With my latest commits, I think I have addressed all of the comments so far. I'm now waiting on final reviews and potential changes/fixes. Thank you for your help and additional clarification on some of the issues.

I have also learned a lot by working on this project and from the reviews, and I'm glad to be able to contribute to this codebase.

Copy link
Collaborator

@mhsmith mhsmith left a comment

Choose a reason for hiding this comment

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

No problem, I'm happy to help. This was an ambitious piece of work for someone new to the project, and I think you've done about as well as anyone could have.

Here are a few remaining issues with NewWallet. I'll review the transaction details updates separately.

…thod; updated the way default progress and max values are set for multisig sliders.
… moved risky argument modification from doInBackground() to onPostExecute()
@mhsmith mhsmith merged commit c7b5725 into Electron-Cash:master Jun 16, 2021
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.

None yet

2 participants