removed unnecessary this.query = opts.query from constructor
Created a tx error state for errors in approveTransaction
validateTxParams has been moved to tx-utils
removed "value" arg from _setTxStatus
- Was incorrectly calling some eth-query methods (left over from old local eth-query)
- Was still passing block to getAccount in addAccount
- Now emitting update only after all account balances are loaded, reducing UI update traffic.
It seems `selectedAddress` was removed from the keyring-controller’s state, and is used to populate the injected current account.
I couldn't help myself, I dug around, I found a PR named [changed all instances of selectedAddress to selectedAccount](f5b0795ac5) by @Zanibas. Sorry, Kevin! Had you actually changed all instances, this bug would not have happened.
Fixes#908
Migrator now returns a lostAccount array that includes objects
these objects include keys of address and privateKey,
this allows the MetamaskController to restore the lost accounts
even without customizing the idStore or the KeyringController.
Also includes a patch that allows idStore to synchronously export private keys.
This is only a bug in dev, but was committed yesterday.
Sometimes the `encrypt` method was being passed values other than the password as the encryption key, leading to un-unlockable vaults.
To find this, and avoid it for all time hereafter, I added several more steps to our oft-neglected integration test suite, which now fully initializes a vault, locks it, and unlocks it again, to make sure all of those steps definitely work always.
If a nodified method does not return a Promise, it will throw an error, like this:
```
Error in event handler for (unknown): Error: The function setSelectedAccount did not return a Promise, but was nodeified.
```
Mostly Fixes#893
A couple methods cache callbacks, and will require a larger refactor to fully denodeify.
Specifically, our methods involving web3 requests to sign a tx, sign a message, and approve or cancel either of those.
I think we should postpone those until the TxManager refactor, since it will likely handle this response caching itself.
At least, the portion of it that we use.
Moved salting within the encryptor, so it does not need to be managed externally.
KeyringController now caches the password instead of a passwordDerivedKey, since it is ignorant of the salt.
Encryptor payload is now in a JSON format, so its portions are both base64 encoded *and* labeled appropriately. The format is `{ "data": "0x0", "iv": "0x0", "salt": "string" }`.
Fixes#843Fixes#859
Ropsten links will still not work until Etherscan publishes their ropsten link format.
At that time we will need to update ui/lib/account-link.js
Otherwise, fixes#831
Fixes#791
It was possible for two requests to have the same ID, causing a crash and loss of StreamProvider connection.
This new id generation strategy creates a random ID, and increments it for each request.
In case the id generator is included from two different processes, I'm initializing the counter at a random number, and rolling it over a large number when it gets too big.
Our gas price buffering logic had a bug, because bn.js has inconsistent behavior when using hex-prefixed output. The issue has been opened with them here:
https://github.com/indutny/bn.js/issues/151
We've corrected our usage in the mean time.
Now old vaults are recognized as an "Initialized" MetaMask instance.
Upon logging in, when fetching the initial password-derived key, if there is no new-style vault, but there is an old style vault, it is migrated to the new format before proceeding through the usual unlocking steps.
This contract hex does include the value `f4`, but it was compiled from a contract with no instance of `.delegatecall`. I believe `f4` in this case is part of some other value or contract address, and `ethBinToOps` has some error in how it skips pushed data.
@kumavis
For some reason the popup was often cutting off the bottom buttons of the UI.
We should look at that more carefully later perhaps, but especially since we're considering moving off the popup, I'm just fixing it by making it taller for now.
SubmitPassword was not creating a new id-management
This is because I broke up the old "createIdmgmt" method to not perform as much conditional logic.
Now the pieces are reusable and do what they should do.
Fixed bug where the second new vault created in an IdStore would initially return the accounts from the original store.
Also fixed some tests that were incorrect.
eth-lightwallet was previously not salting vault passwords, potentially making it easier to crack them once obtained.
This branch incorporates the API changes to allow us to take advantage of the new salting logic.
This is still throwing deprecation warnings, but that's actually a bug in eth-lightwallet I wrote, [I've submitted a PR for that here](https://github.com/ConsenSys/eth-lightwallet/pull/116).
Fixes#555