【问题标题】:How to generate bech32 address from the public key? Bitcoin如何从公钥生成 bech32 地址?比特币
【发布时间】:2020-08-31 11:41:43
【问题描述】:

我正在使用bitcoinjs-lib 生成比特币密钥对。

我有足够的例子来从公钥生成遗留地址和隔离见证地址,但对于bech32 地址我找不到任何东西。

P2PKH 以数字1 开头,
例如:1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2

P2SH 输入数字开头的3,
例如:3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy

Bech32 类型以bc1 开头,
例如:bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq

感谢您的帮助。

【问题讨论】:

    标签: node.js bitcoin cryptocurrency bitcoinlib


    【解决方案1】:

    其中涉及很多步骤。

    hash160(publickey)ripemd160(sha256(publickey))

    然后将0 Uint8 添加到 bech32 单词的输出中。

    然后使用bech32 使用前缀bc 对比特币进行编码。
    它也适用于莱特币,将bc 更改为ltc

    对于 Cosmos Atom,它也可以工作,只是跳过将 0 添加到 bech32 的输出中。

    const crypto = require("crypto");
    const bech32 = require("bech32");
    
    const sha256Digest = crypto
      .createHash("sha256")
      .update(data, "hex")
      .digest("hex");
    
    const ripemd160Digest = crypto
      .createHash("ripemd160")
      .update(sha256Digest, "hex")
      .digest("hex");
    
    const bech32Words = bech32.toWords(Buffer.from(ripemd160Digest, "hex"));
    const words = new Uint8Array([0, ...bech32Words]);
    address = bech32.encode("bc", words);
    console.log(address);
    
    

    【讨论】:

      【解决方案2】:

      它被归档为 BIP 0173。您可以在比特币 Wiki 中找到有关它的文档。 Wiki BIP0173

      【讨论】:

        【解决方案3】:

        或者你可以使用 bitcoin.payments.p2wpkh({pubkey:yourpubkey,network });

        【讨论】:

          猜你喜欢
          • 2013-07-14
          • 2019-05-16
          • 1970-01-01
          • 1970-01-01
          • 2021-12-25
          • 2014-01-17
          • 1970-01-01
          • 1970-01-01
          • 2016-09-02
          相关资源
          最近更新 更多