Following PRs are included:
#1199 : EIP-3 ( https://github.com/ergoplatform/eips/blob/master/eip-0003.md ) implementation #1199
#1192 , #1203 , #1206, #1208 : Panel: dashboard and wallet pages updated, typescript support, eslint errors fixed
#1202 : Seq replaced with ArrayBuffer in headerChainBack (fix for #1190 )
#1200 : Sigma dependency updated to 3.3.1 ( release details https://github.com/ScorexFoundation/sigmastate-interpreter/releases/tag/v3.3.1 )
#1189 : memory leak in ErgoProvingInterpreter fixed
Also, Scorex dependency updated to "master-1086cefd-SNAPSHOT", which is about following changes:
Parse in synchronizers: ScorexFoundation/Scorex#370
pass details message by name into ValidationState.validate: ScorexFoundation/Scorex#371
HTTPS resolvers: ScorexFoundation/Scorex#372
Update notes:
Full resync is needed on MacOS (you can leave /wallet/keystore folder where encrypted seed is stored)
EIP-3 implementation Details
For the sake of compatibility with the wallets made with previous version sand miner, following rules apply, based on an observation that users import old wallets via copying files (/wallet folder in case of 3.3.x, /wallet/keystore and /wallet/storage in case of 3.2.x) or /wallet/restore. Please also note that older versions expose public key corresponding to the master key, while new version hides it (while maintaining the master key and using it in the scans) when it is possible.
Thus derivation works as follows:
- if no keys derived yet, derive it against m/44'/429'/0'/0/0 by default, or against m/1 if ergo.wallet.usePreEip3Derivation = true (false by default)
- if there're keys in the wallet, derive by using old scheme (m/1 -> m/2, m/44'/429'/0'/0/0 -> m/44'/429'/0'/1) if last key is not in the EIP-3 space (not starting with m/44'/429'/0'), otherwise, derive via new procedure (m/44'/429'/0'/0/0 -> m/44'/429'/0'/0/1, note that the result if different from the old scheme).
Thus in case of import from files everything should be ok, in case of restoring a wallet from mnemonic, funds will be found automatically if there were no derived keys there, otherwise, usePreEip3Derivation flag is needed to be set.
Also:
- hide a public key corresponding to the master key if derivation path of the first derived key starts with m/44'/429'/0' in /wallet/addresses output , the key is participating in scans still
- change address by default is set to m/44'/429'/0'/0/0
- send public key corresponding to master key to the miners , so miningScript (/mining/rewardsAddress) is the same as before.
Done by: @aslesarenko , @d.usov , @greenhat , @knizhnik , @kushti