Bitcoin Key Derivation

Worker(s): pkova Reward: 2 Stars Completed

Overview

Our goal is to build a Bitcoin payment experience that allows any ship to use their Urbit ID additionally as an address that can send and receive Bitcoin. Ideally a new ship needs nothing more than Landscape for interacting with the Bitcoin network (see the Bitcoin Full Node Provider and Wallet bounty) and their Urbit ID for receiving Bitcoin and signing transactions (this bounty). This provides an easy onramp to working with Bitcoin without compromising on security or privacy.

Interacting with Bitcoin private keys, like your Urbit master ticket, requires a secure environment. As long as Urbit remains unaudited, it’s best to not use a master ticket to directly access your Urbit—this is why we built Bridge. Bridge is designed to be a secure environment, making it an ideal candidate for handling our sensitive Bitcoin keys.

User Stories

This bounty should provide extensions to Bridge that satisfy the following user stories:

For the purposes of this bounty, obtaining an extended public key would consist of copying it to the clipboard for input into Landscape, where the Bitcoin wallet will need it for performing address derivation. Signing a transaction will go in the other direction; a “constructed” transaction (consisting of everything but the signature) will be generated from within Landscape, input into Bridge for signing, and then the signed transaction will be input back to Landscape for broadcasting over the Bitcoin network.

While this flow isn’t the most user-friendly, the functionality will ultimately be possible to port into Landscape a) once it runs in a more secure environment (e.g. Electron), and b) once Urbit is receives a thorough security audit.

Deliverables

Your solution to this bounty should include pull requests against these repositories:

Design mockups will be provided to the worker upon claiming this bounty.

Expectations

You will work closely with the director of urbit.org on this project. This means that, at a minimum, weekly check-in calls will be held to discuss the project's progress. Additionally, the worker is expected to provide regular status updates on the project to the Urbit community via twice-monthly updates on this bounty.

The director will ensure that you have access to the necessary resources to complete this project. All prior work done on this project will be explained and made available to you, and should questions arise that require the expertise of engineers at Tlon, time will be made (schedules permitting) for your questions to be answered either in writing or over a call.

The worker should have a background that demonstrates proficiency with building client-side Javascript applications. Experience working with Bitcoin development is preferred, but not required.

Resources

Milestones

Work is Complete

2 stars Pull requests to each repository have been submitted, reviewed and merged.