美文网首页
【DASH】地址生成规则

【DASH】地址生成规则

作者: 坐了整个春夏秋冬 | 来源:发表于2022-07-14 15:29 被阅读0次

    P2PKH 中使用的哈希值和P2SH 输出通常编码为 Dash地址. 这是对这些哈希进行编码和对地址进行解码的过程。

    转换过程
    首先,获取一个Hash值
    • P2PKH
      RIPEMD-160(SHA256(你的公钥))
    获取结果哈希:
    1. 添加一个版本字节在公钥哈希前面。Dash 常用的版本字节有:

      • 0x4c 为P2PKH 地址在 Dash 主网络上(主网)

      • 0x8c 为P2PKH 地址在 Dash 测试网络上 (测试网)

      • 0x10 为P2SH 地址上主网

      • 0x13 为P2SH 地址上测试网

    2. 创建版本和哈希的副本;然后用 SHA256 哈希两次:SHA256(SHA256(version . hash))

    3. 从双哈希副本中提取前四个字节,用作校验和。

    4. 将校验和附加到版本和哈希,并对其base58编码:BASE58(version hash checksum)

    代码示例(DART语言)
        int addressVersion = isMainNet ? 0x4c : 0x8c;
    // 第三步,计算公钥的SHA-256哈希值
        Uint8List step3 = SHA256().update(pubKeyByte).digest();
    // 第四步,计算上一步哈希值的RIPEMD-160哈希值
        List<int> step4 = List.from(RIPEMD160().update(step3).digest());
    // 第五步,在上一步结果之间加入地址版本号(如比特币主网版本号"0x00")测试网版本号0x6f
    // 0x4c for P2PKH addresses on the main Dash network ()
    // 0x8c for P2PKH addresses  on the Dash testing network (testnet)
        step4.insert(0, addressVersion);
        List<int> step5 = step4;
    // 第六步,计算上一步结果的SHA-256哈希值
        Uint8List step6 = SHA256().update(step5).digest();
    // 第七步,再次计算上一步结果的SHA-256哈希值
        Uint8List step7 = SHA256().update(step6).digest();
    // 第八步,取上一步结果的前4个字节(8位十六进制数)D61967F6,把这4个字节加在第五步结果的后面,作为校验(这就是比特币地址的16进制形态)
        step5.addAll(step7.sublist(0, 4));
        Uint8List step8 = Uint8List.fromList(step5);
    // 第九步,用base58表示法变换一下地址(这就是最常见的比特币地址形态)
        String address = Base58Encode(step8);
        return address;
    

    Refrences

    https://dashcore.readme.io/docs/core-ref-transactions-address-conversion

    相关文章

      网友评论

          本文标题:【DASH】地址生成规则

          本文链接:https://www.haomeiwen.com/subject/jmxfirtx.html