Skip to content

使用 bitcoinjs-lib 库生成 4 种类型地址

使用 bitcoinjs-lib 库,我们可以生成 4 种类型地址:Native Segwit (P2WPKH)、Nested Segwit (PSH-P2WPKH)、Taproot (P2TR) 和 Legacy (P2PKH)。

1. Native Segwit (P2WPKH) 地址

P2WPKH 地址是 SegWit 的一种地址类型,使用 bc1 开头。

javascript
const bitcoin = require('bitcoinjs-lib');

const mnemonic ='secret secret secret secret secret secret secret secret secret secret secret';
const seed = bitcoin.bip39.mnemonicToSeed(mnemonic);
const hdWallet = bitcoin.HDWallet.fromSeed(seed);

const address = hdWallet.getAddress(0, { segwit: true });
console.log(address.toString()); // 输出 P2WPKH 地址

2. Nested Segwit (PSH-P2WPKH) 地址

PSH-P2WPKH 地址是 SegWit 的一种地址类型,使用 3 开头。

javascript
const bitcoin = require('bitcoinjs-lib');

const mnemonic ='secret secret secret secret secret secret secret secret secret secret secret';
const seed = bitcoin.bip39.mnemonicToSeed(mnemonic);
const hdWallet = bitcoin.HDWallet.fromSeed(seed);

const script = bitcoin.script.compile(['OP_DUP', 'OP_HASH160', '14e9751f6f', 'OP_EQUALVERIFY', 'OP_CHECKSIG']);
const address = hdWallet.getAddress(0, { segwit: true, script });
console.log(address.toString()); // 输出 PSH-P2WPKH 地址

3. Taproot (P2TR) 地址

P2TR 地址是 Taproot 的一种地址类型,使用 bc1p 开头。

javascript
const bitcoin = require('bitcoinjs-lib');

const mnemonic ='secret secret secret secret secret secret secret secret secret secret secret';
const seed = bitcoin.bip39.mnemonicToSeed(mnemonic);
const hdWallet = bitcoin.HDWallet.fromSeed(seed);

const address = hdWallet.getAddress(0, { taproot: true });
console.log(address.toString()); // 输出 P2TR 地址

4. Legacy (P2PKH) 地址

P2PKH 地址是 Legacy 的一种地址类型,使用 1 开头。

javascript
const bitcoin = require('bitcoinjs-lib');

const mnemonic ='secret secret secret secret secret secret secret secret secret secret secret';
const seed = bitcoin.bip39.mnemonicToSeed(mnemonic);
const hdWallet = bitcoin.HDWallet.fromSeed(seed);

const address = hdWallet.getAddress(0);
console.log(address.toString()); // 输出 P2PKH 地址