Hi SN!
Over the weekend, I built descriptorqr.org, a simple website for creating compact QR codes for any wallet descriptor, which are 30-40% smaller than using a run-of-the-mill QR code generator.
Behind the scenes, it uses the descriptor-codec rust library, which encodes descriptors using 30-40% fewer bytes. I discussed this library on the most recent episode of Optech.
The benefits are most apparent for large descriptors, which would otherwise be difficult or impossible to print out as a single QR code. As an example, below is a descriptor I generated with Liana that uses multiple keys with decaying thresholds:
wsh(or_i(and_v(v:pkh([f94f84b8/48'/0'/0'/2']xpub6F9mVs3MdXe2rv82DShVg6XXmHKi2X27bURPEEVzPhPA65UKHS2ifaTKmGdQuCZYcVSqyjvJEnETVUnKwu3RVtMgsAdzkJrdP8sGEyAnB6V/<0;1>/*),older(52596)),or_d(multi(2,[2c49202a/45'/0'/0'/0]xpub6EigxozzGaNVWUwEFnbyX6oHPdpWTKgJgbfpRbAcdiGpGMrdpPinCoHBXehu35sqJHpgLDTxigAnFQG3opKjXQoSmGMrMNHz81ALZSBRCWw/<0;1>/*,[55b43a50/45'/0'/0'/0]xpub6EAtA5XJ6pwFQ7L32iAJMgiWQEcrwU75NNWQ6H6eavwznDFeGFzTbSFdDKNdbG2HQdZvzrXuCyEYSSJ4cGsmfoPkKUKQ6haNKMRqG4pD4xi/<0;1>/*,[35931b5e/0/0/0/0]xpub6EDykLBC5EfaDNC7Mpg2H8veCaJHDgxH2JQvRtxJrbyeAhXWV2jJzB9XL4jMiFN5TzQefYi4V4nDiH4bxhkrweQ3Smxc8uP4ux9HrMGV81P/<0;1>/*),and_v(v:and_v(v:pkh([c32f12b7/48'/0'/0'/2']xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz/<2;3>/*),pkh([3abf21c8/45'/0'/0'/0]xpub6DvXYo8BwnRACos42ME7tNL48JQhLMQ33ENfniLM9KZmeZGbBhyh1Jkfo3hUKmmjW92o3r7BprTPPdrTr4QLQR7aRnSBfz1UFMceW5ibhTc/<2;3>/*)),older(26353)))))#zyvj7rq6Without DescriptorQR:
With DescriptorQR:
The tool is free to use and transmits no data outside your browser. It can also be built and run locally, for maximum privacy.
Feel free to give it a try! I'd welcome any feedback, both on the tool and on descriptor-codec.
Website: https://descriptorqr.org
Github: https://github.com/joshdoman/descriptor-qr
Screenshot:
This is very cool! Here's to hoping you get a lot of wallet adoption.
Minor nit: the meta tag in the index html file says encrypt your wallet descriptor, but I think “encode” is more accurate?
Fixed! Thanks for pointing that out.
Does it need special qr code decoder or anyone work with it
Yes, you need to use the QR code scanner on the website, or you need to manually decode the bytes in the QR code using
descriptor-codec.could be something promising if you explain little more descriptior-codec because term seems new to me.
This is super useful for multisig setups with complex descriptors. Making QR codes 30–40% smaller is a big deal, especially for air-gapped workflows. Props for keeping it private and local too. Solid tool!