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

[T4 ONLY] BIP32 Wallet Compliance - Aggsig Updates - Bulletproof Updates #1501

Merged
merged 71 commits into from
Oct 10, 2018

Conversation

yeastplume
Copy link
Member

@yeastplume yeastplume commented Sep 10, 2018

This is ready now (but needs to be kept up-to-date until we're ready for a T4 merge)

Contains:

And updates the wallet to use BIP32 paths internally as per #1428. This includes:

  • The wallet supports multiple named accounts, with each 'account' being a mapping between a label
    and a BIP32 'parent path'
  • BIP32 'parent paths' are set according to recommendations in the BIP32 spec. The 'default' account parent path is 'm/0/0' and outputs for this account are given IDs 'm/0/0/1', 'm/0/0/2' etc... the next created account will have parent 'm/1/0' with outputs at 'm/1/0/0', 'm/1/0/1' etc
  • Internal wallet identifiers are encoded 4-level deep BIP32 paths.
  • BIP32 path is encoded in an output's bulletproof on creation, so it can be recovered along with the amount by rewinding with the original nonce, which is blake2(commit|secret_key(m), (secret key of being the root path m generated by the wallet seed/password)
  • All outputs and transactions are created against the active wallet account, which defaults to an account called 'default' (so no change in usage if account functionality is ignored by the user)
  • Commands and switches to create and switch active account for wallet commands + Documentation
  • Wallet restore will restore all outputs as per the path stored in the bulletproof, and re-create accounts for any detected parent paths. Also no longer needs to grind to find keys, so should be much faster overall.

@yeastplume yeastplume added the consensus breaking Use for issues or PRs that will break consensus and force a hard fork label Sep 10, 2018
@yeastplume yeastplume added this to the Testnet4 milestone Sep 10, 2018
@yeastplume yeastplume mentioned this pull request Sep 12, 2018
@yeastplume yeastplume changed the title [WIP, DNM] T4 BIP32 Wallet Compliance - Aggsig Updates - Bulletproof Updates [T4 ONLY] BIP32 Wallet Compliance - Aggsig Updates - Bulletproof Updates Sep 19, 2018
@yeastplume
Copy link
Member Author

Done now. Modified top comment to reflect all of the changes contained in this PR.

@yeastplume yeastplume changed the base branch from master to milestone/testnet4 October 10, 2018 09:10
@yeastplume yeastplume merged commit 6c8c483 into mimblewimble:milestone/testnet4 Oct 10, 2018
@yeastplume yeastplume deleted the bip-32-change branch October 10, 2018 09:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
consensus breaking Use for issues or PRs that will break consensus and force a hard fork
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant