Technical Standards
Mnemonic standard
- The mnemonic complies with the BIP39 standard and generates a mnemonic of 12 words by default.
Generate seed by mnemonic
- Generate the seed using the BIP39 standard process.
- In the PBKDF2 algorithm, the mnemonic sentence is used as the password, "mnemonic" as the salt (passphrase is empty).
Mnemonic sentence
- English mnemonics: Remove head and tail spaces, add a space between each word.
Bitcoin MultiSig address generation
MultiSig is implemented by P2SH, and the address is created by calling the bitcoind (litecoind for LTC, etc.) createmultisig interface, or it is equivalent to the following logic (take 2-3 MultiSig as an example):
1. redeemScript = <OP_2> <A pubkey> <B pubkey> <C pubkey> <OP_3> <OP_CHECKMULTISIG>
2. redeemScriptHash = RIPEMD160(SHA256(redeemScript))
3. P2SHAddress = base58check.Encode("05", redeemScriptHash)
MultiSig public key order
- The order of the public keys is sorted in lexicographic order according to the public key itself (hexadecimal string as an ASCII string).
- For example: A's pubkey: c0f832..., B's pubkey: aaff01..., C's pubkey: b8facc..., then: redeemScript = <OP_2> <B pubkey> <C pubkey> <A pubkey> < OP_3> <OP_CHECKMULTISIG>
Source code for Ethereum / Solana MultiSig
Github: https://github.com/bitbill/ownbit-multisig-contracts
QR code format for Offline Signing
bb_watch: Create a new Watch Wallet
bb_addcoin: Add coin for Watch Wallet
bb_sign: Sign a transaction
bb_tx: broadcast the transaction to the network
Encoding/Decoding: zlibCompress + Base64