Our great sponsors
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
ThresholdJS
An implementation of Shamir's Secret Sharing algorithm for Bitcoin private keys (256-bit integers)
For anybody new or returning to SSS, check out SLIP-0039: https://github.com/satoshilabs/slips/blob/master/slip-0039.m...
One of the big downsides of SSS is that it’s very raw and you have to do a lot of legwork to make it actually useable. It’s rightfully criticized for this and the argument follows the don’t roll your own crypto vein.
SLIP39 solves this by formalizing a protocol for handling SSS splits built atop standards for crypto key serialization (BIP-39). SlIP shards are unique on each generation so parties with the same underlying SSS shard can’t compare mnemonics, they’re mnemonically serialized, and have a checksum and group index metadata which makes a more sane UX possible when combining.
If you want to check out the sources yourself before using, of course those are available under GPL at https://github.com/paritytech/banana_split/
Another implementation:
https://github.com/karlgluck/ThresholdJS
This is a very straightforward encoding of a single 256-bit number.
I also built a pure python lib a whole ago to use w/ an app, check it out: https://github.com/HacKanCuBa/secretshare-py
Built a CLI¹ a couple of years back that uses HashiCorp Vault's implementation of the Shamir Secret Sharing algorithm and exposes its functionality to the command-line in a UNIX-y way.
¹ https://github.com/incipher/shamir
Shameless plug: ported MPC Rust implementation to WebAssembly: https://github.com/CoinFabrik/wasm-multi-party-ecdsa