0

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

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

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

P2SH以数字开头的类型3
例如:3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy

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

感谢您的帮助。

4

3 回答 3

2

它涉及许多步骤。

hash160(publickey)这是ripemd160(sha256(publickey))

之后将0Uint8 添加到 bech32 字的输出中。

然后使用比特币bech32前缀bc对其进行编码。
它也适用于莱特币,bcltc.

对于 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);

于 2020-09-15T09:31:52.393 回答
0

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

于 2020-09-02T17:08:21.740 回答
-1

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

于 2021-12-01T02:28:13.100 回答