技术标准

  • 助记词标准

    - 助记词符合BIP39标准,默认生成12个单词的助记词;

    助记词生成seed

    - 采用BIP39标准流程生成seed;

    - 在PBKDF2算法中,助记词句子作为密码,"mnemonic"作为盐(passphrase为空);

    助记词句子的处理

    - 英文助记词头尾去空格,每个单词中间加一个空格;

    - 中文助记词头尾去空格,每个字中间加一个空格;

  • 公私钥生成的cointype及是否压缩

    助记词生成

    coinBIP44 cointype是否压缩公钥
    BTC0
    BCH0(和BTC地址一致)
    BSV0(和BTC地址一致)
    LTC2
    ETH60-
    ETC60(和ETH地址一致)-
    USDT-(OmniLayer,基于BTC)-
    DCR42
    DASH5
    DOGE3
    DGB20
    ZEN121
    XZC136
    RVN175
    GO60(和ETH地址一致)-
    POA60(和ETH地址一致)-
    XRP144-
    XLM148(私钥作为seed再次生成私钥)-

    以BTC为例,

    第一个接收地址生成的BIP44路径为:m/44'/0'/0'/0/0

    第二个接收地址:m/44'/0'/0'/0/1

    第一个找零地址:m/44'/0'/0'/1/0

    第二个找零地址:m/44'/0'/0'/1/1

    XLM:用 m/44'/148'/0'/0/0 生成私钥,该私钥作为seed生成ed25519私钥。

    导入ETH私钥/Keystore生成

    coinBIP44 cointype是否压缩公钥
    BTC-
    BCH-
    BSV-
    LTC-
    ETH--
    ETC--
    USDT--
    DCR-
    DASH-
    DOGE-
    DGB-
    ZEN-
    XZC-
    RVN-
    GO--
    POA--
    XRP--
    XLM--

    XLM:该私钥作为seed生成ed25519私钥。

    导入BTC WIF私钥生成

    coinBIP44 cointype是否压缩公钥
    BTC-5开头的WIF:否,K/L开头的WIF:是
    BCH-(和BTC一致)
    BSV-(和BTC一致)
    LTC-
    ETH--
    ETC--
    USDT--
    DCR-
    DASH-
    DOGE-
    DGB-
    ZEN-
    XZC-
    RVN-
    GO--
    POA--
    XRP--
    XLM--

    XLM:该私钥作为seed生成ed25519私钥。

    多签

    coinBIP44 cointype是否压缩公钥
    BTC0
    LTC0(和BTC同样公钥生成多签地址)
    DGB0(和BTC同样公钥生成多签地址)
    BCH0(和BTC同样公钥生成多签地址)
    BSV0(和BTC同样公钥生成多签地址)
    DASH0(和BTC同样公钥生成多签地址)
    DOGE0(和BTC同样公钥生成多签地址)

    BTC多签公钥生成的BIP44路径为:m/44'/0'/0'/0/0

    ETH多签合约地址:https://github.com/bitbill/bitbill-multisig-contracts

  • BTC多签地址生成

    BTC多签通过P2SH实现,通过调用 bitcoind createmultisig 接口创建地址,或者和以下逻辑等同(以 2-3 多签为例):

    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)

    BTC多签公钥排列顺序

    - 发起人的公钥排在第一个;

    - 其它人的公钥排列顺序按照公钥本身(十六进制字符串作为ASCII字符串)字典顺序排序;

    - 例如:A为发起人,A的pubkey: c0f832..., B的pubkey: aaff01...,C的pubkey: b8facc...,则:redeemScript = <OP_2> <A pubkey> <B pubkey> <C pubkey> <OP_3> <OP_CHECKMULTISIG>

    其它币多签地址生成和公钥排列顺序

    - 地址生成逻辑和BTC一致;

    - 公钥排列顺序按照公钥本身(十六进制字符串作为ASCII字符串)字典顺序排序;

    - 例如:A的pubkey: c0f832..., B的pubkey: aaff01...,C的pubkey: b8facc...,则:redeemScript = <OP_2> <B pubkey> <C pubkey> <A pubkey> <OP_3> <OP_CHECKMULTISIG>

    离线签名二维码格式

    bb_watch: 创建观察钱包

    bb_addcoin: 观察钱包添加币种

    bb_sign: 签名一个交易

    bb_tx: 将交易广播至网络

    编码格式参考:zlibCompress + Base64