它涉及许多步骤。
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);