|
1 | 1 | # KDK |
2 | 2 |
|
3 | | -<img src="assets/logo.png" /> |
| 3 | +<div> |
| 4 | + <img src="assets/logo.png" /> |
| 5 | + <p><i>Lambda inverted just to fit with letter K</i></p> |
| 6 | +</div> |
4 | 7 |
|
5 | 8 | A WIP development kit in Rust for microcontroller bitcoin wallet signers |
6 | | -(mainly aimed to ESP32 or STM32) in Krux-style hardware signers |
7 | | -based on past [proposition to redesign krux](https://github.com/selfcustody/krux/discussions/189). |
| 9 | +(mainly aimed to ESP32 or STM32) based on [selfcustody/krux](https://github.com/selfcustody/krux), |
| 10 | +for support microcontroller hardware signers with rust. |
8 | 11 |
|
9 | | -In any way i want to compete with [kern](https://github.com/odudex/kern) or |
10 | | -abandon [krux](https://github.com/selfcustody/krux), neither to redesign some |
11 | | -basic aspect of krux (this will not be a product or other techinical aspects) |
12 | | -or add another cryptocurrencies. |
| 12 | +## Motivation |
13 | 13 |
|
| 14 | +The motivation came from a past discussion that maybe could not be accesible |
| 15 | +based on past [maybe could not be available for public](https://github.com/selfcustody/krux/discussions/189): |
| 16 | + |
| 17 | +``` |
| 18 | +Should a hardware device support signing Nostr events? Definitely. |
| 19 | +
|
| 20 | +Should Krux? I think it could make sense (if you view Krux as firmware for |
| 21 | +hardware signing _in general_), but not in its current form due to all the |
| 22 | +Bitcoin-specific assumptions being made about wallets, receive addresses, PSBTs, |
| 23 | +etc. |
| 24 | +
|
| 25 | +The way I see it, there are 3 options: |
| 26 | +
|
| 27 | +1) Add support for Nostr in the existing UI, but wrap a bunch of places in |
| 28 | +`if is_nostr()` style checks to hide or show certain UI elements (e.g., |
| 29 | +`Scan Address`, `Wallet`, `Sign PSBT`, etc. don't make sense to show if using |
| 30 | +a Nostr key, and `Show Nostr public key`, `Sign Nostr event` don't make sense |
| 31 | +if using a Bitcoin key) |
| 32 | +2) Fork Krux, rip out the Bitcoin stuff entirely, and focus the fork on being |
| 33 | +exclusively a Nostr signer |
| 34 | +3) Don't fork Krux, but redesign it such that it can support different use cases |
| 35 | +or cryptocurrencies / elliptic curves. |
| 36 | +
|
| 37 | +Option 1, while it could work and is the "easiest" to do, would make the code |
| 38 | +harder to follow and maintain and begin to split Krux's focus. Not a fan of |
| 39 | +shoehorning it in like this. |
| 40 | +
|
| 41 | +Option 2 is a good short-term solution if people want something that works |
| 42 | +right now @odudex. Since my activity has dropped off the past few months, |
| 43 | +option 3 (my preference, see below) may take longer than desired to come to |
| 44 | +fruition; so I would be fine with a dedicated fork of Krux that focuses |
| 45 | +exclusively on Nostr if you want to take that up. (Of course, it's FOSS, |
| 46 | +so you can do what you want. Just giving my blessing :)) |
| 47 | +
|
| 48 | +Option 3 is my long-term preference. I think there is a way we could eventually |
| 49 | +redesign Krux so that other users could write plugins for their preferred "crypto" |
| 50 | +(crypto in quotes since it could be a currency or something else entirely like |
| 51 | +Nostr) to customize the experience as needed for each one. The way I'm thinking |
| 52 | +it could be done would be similar to Ledger where the community can create their |
| 53 | +own "apps," only in this case the app would be in its own repo and would be |
| 54 | +selected + built into the firmware by the user. The existing Bitcoin "app" |
| 55 | +would be the default and is what I would continue to publish and sign as the |
| 56 | +official Krux release, but others could publish and sign the versions of Krux |
| 57 | +where the app is something else like Nostr, Ethereum, etc. |
| 58 | +
|
| 59 | +What do others think? |
| 60 | +``` |
| 61 | + |
| 62 | +> *Jeff Sun*, Krux's creator |
| 63 | +
|
| 64 | +### Disclaimer |
| 65 | + |
| 66 | +In any way KDK wants to compete with [Kern](https://github.com/odudex/kern) or |
| 67 | +[Krux](https://github.com/selfcustody/krux), neither to redesign some basic |
| 68 | +aspects of krux, almost following a mix of `Option 1` and `Option 3`: |
| 69 | + |
| 70 | +- keep based-bitcoin firwamre |
| 71 | +- `master` branch could accept `bitcoin-related` PRs as **features**, except |
| 72 | +altcoins (i.e., `nostr`, `liquid`, `pgp`, `crypto-primitives` could be accepted |
| 73 | +depending o context and review) -- they could share `traits`, `enums`, `structs` |
| 74 | +and `methods` with different parameters (e.g: `nostr` and `schnoor`) |
| 75 | + |
14 | 76 | > **⚠️ Experimental.** This software has not been audited. Do not use it |
15 | 77 | > with real funds. See [`SECURITY.md`](SECURITY.md). |
16 | 78 |
|
|
0 commit comments