nvk / walletsrecovery.org

Information about wallet defaults for external recovery
https://walletsrecovery.org/
115 stars 96 forks source link

Create Machine Readable walletsrecovery.json file #138

Open seljuck opened 3 years ago

seljuck commented 3 years ago

This is an initial attempt at a machine readable json file for bitcoin wallet recovery programs to have access to.

The following known issues need to be addressed in this version.

Only the hardware wallets are included ColdCard's m/48' derivation path has a script type that I could not verify.. Should there be an array of firmware versions? For example the CoboVault introduced PSBT in firmware 1.3.0 but the table says it's not supported. If the array is added, which fields should be in the array and which should be single keys per wallet?

nvk commented 3 years ago

Looks fine, for now I think we should just mirror everything that us on the markdown.

ColdCard's m/48'

it doesn't restrict 48 supported.

Should there be an array of firmware versions?

Would be great but really hard to maintain.

If the array is added, which fields should be in the array and which should be single keys per wallet?

for now KISS, lets just mirror. IF this website becomes JSON driven that we can have more options.

seljuck commented 3 years ago

Ok, I will move forward with adding the rest of the wallets from the markdown version.

I'm not sure I understand your answer on m/48'. Did I put the right script in? Or are you saying any script can be used in that path?

Thanks

nvk commented 3 years ago

You did it correctly :)

Giszmo commented 3 years ago

May I suggest to not "mirror" stuff but to migrate to something more advanced altogether? For walletscrutiny.com I use Jekyll and I love it. And GitHub.io also loves Jekyll but (so do I) compiling Jekyll is trivial, too ;)

I hadn't known about Jekyll before starting walletscrutiny so at the risk of explaining what you all know anyway (after all Jekyll is a dinosaur), let me show you:

In summary, if walletsrecovery wants to provide the data in a more accessible way, it should use yaml and not JSON ;)

Instead of a long file containing

        "wallet": "BitBox02",
        "passphrase": "optional",
        "gapLimit": 20,
        "psbt": false,
        "paths": [{
                "path": "m/44'/0'/0'",
                "script": "p2pkh"               
            },
            {
                "path": "m/49'/0'/0'",
                "script": "p2wpkh-p2sh"
            },
            {
                "path": "m/84'/0'/0'",
                "script": "p2wpkh"
            }           
        ]
    },

we would have a file

_hardwarewallets/bitbox02.md with the content:

---
name: BitBox02
url: https://shiftcrypto.ch/bitbox02/
logo: BitBox.png
doc:
  - "https://guides.shiftcrypto.ch/bitbox02/advanced/backup-recovery/"
  - "https://guides.shiftcrypto.ch/bitbox02/advanced/backup-recovery/#someDifferentLink"
privacy:
  - "You connect to a full node of the provider without using TOR by default"
  - "You get it shipped to your home address"
passphrase: optional
gapLimit: 20
psbt: false
paths:
- script: p2wpkh-p2sh
  path: m/44'/0'/0'
- script: p2wpkh-p2sh
  path: m/49'/0'/0'
- script: p2wpkh
  path: m/84'/0'/0'
---

Optionally some blabla if you want to render a page per item with further observations ...

Anything in the doc section could automatically trigger the ✅, Anything in the privacy section would trigger the 👁, etc.

seljuck commented 3 years ago

That's sounds like a very interesting solution. Obviously this is up to @nvk on how to proceed. I'm just about finished with the JSON file, so I will do another pull request on that. How to proceed going forward can be discussed with the JSON file available to look at.

nvk commented 3 years ago

I like the idea still struggling with keeping this site simple stupid so that is always up to date. The json file is great, but someone will need to keep it up to date. And I don't have bandwidth to code this up as a dynamic site based on the json doc. Data duplication is never a good idea. :/

Giszmo commented 3 years ago

I'd donate $100 to get this migration done. I could ask a guy who helped me with WalletScrutiny.com who will probably do this for that price. I'd prefer to fund a bitcoiner though, so if anybody wants to volunteer, ... the bounty stands.

As Jekyll is already being thrown at the code provided by GitHub, the job description would be:

Migrate data from the four tables into individual files in the _wallets folder such that

To have all wallets in one folder, a discriminator would probably be good and to make it as easy to edit for new people, comments should be added, too. A fan of a new wallet should easily be able to copy an existing file and figure it out from there.

type: hardware # may be hardware, software, lightning or combo