-
Notifications
You must be signed in to change notification settings - Fork 5k
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
External accounts implemented for issue #5640 #6007
Conversation
@caffeinum Cold you pls reintroduce your issues here about visibility. I have rebased the previous pr on top of 5.3.0, and github has not recognized the delete, push again cycle of mine. |
Of course, here are my objections: r001/qr-encoding#1 The main idea: I think it could be wise to use human-readable parameters for an encoded link instead of raw bytes. |
@danfinlay I had to rebase pr #5903, so I have reopened here. So you can check it whenever you have time. |
@caffeinum If it turns out we have to go with the readable format as you have suggested. Do you have time to adjust metamask code, and decoder code? BTW I still think it helps not much, since user can not change anything, since we only return signature. |
@r001 currently, I am not much available, as there are other projects, but I will look into what I can do when I will have some extra time! |
...end/send-content/send-row-wrapper/send-row-error-message/send-row-error-message.component.js
Show resolved
Hide resolved
@tmashuang Thank you for your help! Meanwhile I could track some additional bugs, and I pushed their fixes too. The |
@r001 Merge/rebase |
Minor lint fix. Co-Authored-By: r001 <rob@nyar.eu>
b491910
to
c51c4d5
Compare
I'll give it a try. I was testing this with the whole page version of Metamask, not the popup one.
If you don't mind, I would only do that after an initial version is merged into
No, I want this to be added to Metamask. If there are any quality issues, I'm ready to fix them.
Absolutely possible. Currently there is a custom made encoding implemented instead of RLP that Parity uses. We can do that too. The hard part of integrating the external feature is already done. Making it compatible with Parity signer is just about how we present the same data. All the tests check out now except for the |
I would prefer the have those official external package version bumped, instead of specific commits. Could you PR |
Makes no sense to PR it since it was an old hackish way of mine trying to introduce external accounts. The original wallet will work just as fine with this version. I have updated package.js accordingly. EDIT: Now there is a |
This PR has been reopened in PR #6143 |
External acccounts allow Metamask to track account whose private keys are stored on a safe device, and tx data and signatures are exchanged by using QR codes. This allows very safe account password storage.
This pull request enables users to create so called external accounts. This means that after applying this pull request in the "import account" menu there will be an "external" tab that enables importing an ethereum address. There is no local private key stored, but upon confirming a transaction a QR code is presented and the transaction can be signed by an external signer. And the signature can be provided in the signature input field. By providing the signature, the transaction will be signed, and published.
The way it works is the following:
signTransaction()
function is called.extToSign
array, which is monitored by the UI modal.js base component.extToSign
entryui/app/components/modals/modal.js
starts the external-sign-modal.js window, and displays QR code, and requests signature.To allow for external signatures, eth-keyring-controller package had to be updated, and eth-external-account-keyring package was created. So in the package.json my updated ones are the sources.
Eth-external-account-keyring is available at:
https://github.com/r001/eth-external-account-keyring
Install instructions for reference implementation of encoding/decoding QR code can be found at
https://github.com/r001/qr-encoding/blob/master/INSTALL.md
Modified signer that can create appropriate signature can be found at :
https://github.com/r001/dapptools/tree/ethsign-signature
To create signature use
ethsign tx --signature-only <tx options>...