walletsrecovery.org icon indicating copy to clipboard operation
walletsrecovery.org copied to clipboard

Create Machine Readable walletsrecovery.json file

Open seljuck opened this issue 4 years ago • 7 comments

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?

seljuck avatar Oct 26 '20 23:10 seljuck

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.

nvk avatar Oct 27 '20 03:10 nvk

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

seljuck avatar Oct 27 '20 16:10 seljuck

You did it correctly :)

nvk avatar Oct 27 '20 16:10 nvk

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.

Giszmo avatar Nov 24 '20 03:11 Giszmo

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.

seljuck avatar Nov 27 '20 17:11 seljuck

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. :/

nvk avatar Nov 27 '20 17:11 nvk

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

  • each wallet with its details written out can be found under /wallets
  • the main page should be rendered from that data
  • with tooltips on the icons

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

Giszmo avatar Nov 27 '20 18:11 Giszmo