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

Hierarchical deterministic (HD) Wallets for TNB #198

Closed
tomijaga opened this issue Apr 20, 2021 · 8 comments
Closed

Hierarchical deterministic (HD) Wallets for TNB #198

tomijaga opened this issue Apr 20, 2021 · 8 comments
Labels
Approved Project proposal is approved. Project This is a project proposal. Author is ready to work on it.

Comments

@tomijaga
Copy link

tomijaga commented Apr 20, 2021

Project Details

How would you describe your project?

An HD Wallet, or Hierarchical Deterministic wallet, is a new-age digital wallet that automatically generates a hierarchical tree-like structure of private/public addresses (or keys), thereby addressing the problem of the user having to generate each one on their own.

image

What problem does this project solve?

This project solves privacy problems and makes it easier to manage multiple accounts

Who is the target market?

Anyone creating multiple accounts/wallets.

How will this project benefit the network and/or the community?

  • Anyone with a HD wallet only needs to backup the seed key. It is the only backup they will ever need.
  • You can generate an infinite number of accounts with a single seed key.
  • Exchanges, Escrows and Wallet apps can generate many receiving addresses any time they receive coins from users of their app/service. HD wallets can also generate public keys without having to generate their private keys first which makes it more secure for these apps/services.
  • Anyone can protect their financial privacy.

How is this project centered around thenewboston?

It creates and manages HD wallets on thenewboston blockchain network

What is the estimated completion date for this project? (rough estimates are acceptable)

Early June

Please include a detailed roadmap for your project below. This must include a list of all milestones where payments will be awarded upon completion of each.

This project will be an implementation of the information found at https://learnmeabitcoin.com/technical/hd-wallets and will use tweetnacl for hashing.

The project will provide hd wallet modules/packages in all the major languages so it is accessible by all developers.

I have a code example here. You will notice that the public and private keys for the child accounts are the same no matter how many times you run the program.

What is your Discord username?

Tomi#8409 (https://discord.gg/thenewboston)

Additional files and documentation including architectural diagrams, wireframes, research documents, visuals, etc… (optional)

  • Typescript Package

    • HD Wallets

      • Seed Generation
      • Mnemonic sentence generation
      • Accounts generation with master extended private key
      • Accounts generation with master extended public key
      • Normal and Hardened child accounts
      • Derivation Paths
      • Test
      • Docs
    • Example Website

      • Create HD Wallets
      • Display all accounts in HD wallet

      Note: You should not be put your master seed on websites because they could store them
      and gain access to all your accounts

  • Python Module

    • Same implementation as Typescript package
  • C++ Module

    • Same implementation as Typescript package
  • Other Major Languages

Milestone Details

Please include a detailed breakdown of the first milestone including a list of all quantifiable objectives and
estimated coin value of each. Upon completion of the milestone, each objective will be reviewed by thenewboston team
and once all objectives have been verified as completed, coins will then be rewarded.

Note that all future detailed milestone breakdowns will be written as a separate GitHub issue. Only the first one is
included in the project proposal.


Milestone Description

Write a typescript npm package for HD wallets that is compatible with the thenewboston-js sdk, complete with documentation and tests.

Requested Payment Upon Completion

130000

# Objective Estimated Value (coins)
1 Implementation in typescript 90000
2 Testing 25000
3 Documentation 15000

Project Reviewer

Preferred: @itsnikhil

Project Wallet

fdcae93c70a143ed36a188389e6aa37b446d3ee244e96cae0ef758672860d8d2

@tomijaga tomijaga added the Project This is a project proposal. Author is ready to work on it. label Apr 20, 2021
@itsnikhil
Copy link
Contributor

Awesome! This project is very relevant with TNB. Ideally you would not need to implement same thing in Python or C++ as you can do this on the fly on client side in typescript.

Just wanted to know if it is possible to generate child public keys with parent public key?

If you are following BIP44 specification then you can also generate keys for various other cryptos as well. This could be obe of the USP of your project.

@tomijaga
Copy link
Author

tomijaga commented Apr 25, 2021

Ideally you would not need to implement same thing in Python or C++ as you can do this on the fly on client side in typescript.

I was thinking of projects that don't have their code in typescript, since we have payment sdk's in multiple languages it would be helpful to also have this is implemented in those languages.

Just wanted to know if it is possible to generate child public keys with parent public key?

It doesn't work using the specified method on the website. I will have to do more research to find out how the nacl library generates it's public keys so i can generate child pubiic keys from the parents extended public key

If you are following BIP44 specification then you can also generate keys for various other cryptos as well. This could be obe of the USP of your project.

Yh i'm using the BIP 44 specification.

@itsnikhil
Copy link
Contributor

@tomijaga please have a look at this https://github.com/nilcons/crypto-key-derivation. Give us a heads up after doing your research if you are willing to take this project to reality. I am more than happy to approve it from my side

@tomijaga
Copy link
Author

tomijaga commented Apr 29, 2021

@itsnikhil Thanks for the resource. I'll notify you once I have generated valid public keys and HD wallets for tnb and all the major cryptos using the bip44 standard

@manishram manishram added this to New Project Proposals/ Issues in Project Proposals May 9, 2021
@manishram manishram moved this from New Project Proposals/ Issues to Auditor Review in Project Proposals May 23, 2021
@buckyroberts buckyroberts added Approved Project proposal is approved. and removed Review in Progress labels May 24, 2021
@angle943
Copy link
Contributor

Hey @tomijaga , we like the idea! However, we came to the conclusion that the proposed amount of 130,000 is too high, and the value we are willing to offer for this project is 80,000.

Please let me know what your thoughts are on that!

@manishram manishram moved this from Auditor Review to Approved in Project Proposals May 24, 2021
@tomijaga
Copy link
Author

@angle943 Mind if I ask how the gov came to the conclusion that 80k was the fair value of the project?

This project will support ed25519 key derivations and thus will allow us to use one seed key to make private and public keys for all other crypto-currencies that support the ed25519 curve.
A lot of work will be put in to allow compatibility and interoperability with existing wallets and ledgers by researching and following specific standards like the SLIP-10 and BIP44

Due to this I believe the project should be valued higher than 80,000. I'd like to make a counter offer for 100,000

@tomijaga
Copy link
Author

@manishram https://github.com/tomijaga/Tnb-HD-Wallet

@angle943
Copy link
Contributor

angle943 commented Jun 5, 2021

@tomijaga approved for 100,000

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Approved Project proposal is approved. Project This is a project proposal. Author is ready to work on it.
Projects
Development

No branches or pull requests

5 participants