如何从 public 键生成 bech32 地址?比特币
How to generate bech32 address from the public key? Bitcoin
我正在使用 bitcoinjs-lib
生成比特币密钥对。
我得到了足够的例子来从 public 密钥生成旧地址和隔离见证地址,但是对于 bech32
地址我找不到任何东西。
P2PKH
以数字 1
,
开头
例如:1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
.
P2SH
类型以数字 3
,
开头
例如:3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
.
Bech32
类型以 bc1
,
开头
例如:bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq
.
感谢您的帮助。
它被归档为 BIP 0173。您可以在比特币维基中找到关于它的文档。
Wiki BIP0173
里面涉及的步骤比较多
hash160(publickey)
即 ripemd160(sha256(publickey))
.
之后将 0
Uint8 添加到 bech32 字的输出中。
然后使用bech32
用比特币前缀bc
对其进行编码。
它也适用于莱特币,将 bc
更改为 ltc
。
同样对于 Cosmos Atom,除了跳过向 bech32 的输出添加 0 之外,它也可以工作。
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);
或者你可以直接使用
bitcoin.payments.p2wpkh({pubkey:yourpubkey,network });
我正在使用 bitcoinjs-lib
生成比特币密钥对。
我得到了足够的例子来从 public 密钥生成旧地址和隔离见证地址,但是对于 bech32
地址我找不到任何东西。
P2PKH
以数字 1
,
开头
例如:1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
.
P2SH
类型以数字 3
,
开头
例如:3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy
.
Bech32
类型以 bc1
,
开头
例如:bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq
.
感谢您的帮助。
它被归档为 BIP 0173。您可以在比特币维基中找到关于它的文档。 Wiki BIP0173
里面涉及的步骤比较多
hash160(publickey)
即 ripemd160(sha256(publickey))
.
之后将 0
Uint8 添加到 bech32 字的输出中。
然后使用bech32
用比特币前缀bc
对其进行编码。
它也适用于莱特币,将 bc
更改为 ltc
。
同样对于 Cosmos Atom,除了跳过向 bech32 的输出添加 0 之外,它也可以工作。
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);
或者你可以直接使用
bitcoin.payments.p2wpkh({pubkey:yourpubkey,network });