cara menghasilkan alamat bech32 / segwit dari pubkey di golang
Aug 20 2020
Saya mencoba menghasilkan alamat bech32 / segwit di golang dengan kode berikut:
var pubkey *btcec.PubKey
address, err := btcutil.NewAddressPubKey(pubkey.SerializeCompressed(), chainParams)
if err != nil {
log.Fatal(err)
}
address.SetFormat(btcutil.PKFCompressed)
bech32Bytes, err := bech32.ConvertBits(address.ScriptAddress(), 8, 5, true)
if err != nil {
log.Fatal(err)
}
segwitaddr, err := bech32.Encode("tb", bech32Bytes)
if err != nil {
log.Fatal(err)
}
dan juga lebih sederhana
var e *hdkeychain.ExtendedKey
address, err := e.Address(chainParams)
bech32Bytes, err := bech32.ConvertBits(address.ScriptAddress(), 8, 5, true)
if err != nil {
log.Fatal(err)
}
segwitaddr, err := bech32.Encode("tb", bech32Bytes)
if err != nil {
log.Fatal(err)
}
Tapi tidak ada yang segwitaddr
cocok dengan alamat bip84 yang saya dapatkanhttps://iancoleman.io/bip39/. Apa yang salah dengan kode di atas atau bagaimana cara mendapatkan alamat bech32 dengan benar dari kunci pub?
Saya telah melihat ke posting lain tentang pertanyaan yang sama, tetapi tidak dapat menemukan cara menyiapkan data yang dibutuhkan di golang. Lebih spesifiknya, saya bingung mempersiapkan input yang []byte
akan ditelepon bech32.Encode()dan digunakan bech32.ConvertBits().
Jawaban
tbraden Sep 02 2020 at 09:42
Saya telah menemukan jawabannya berkat modood / btckeygen .
Berikut adalah kode relevan yang diekstrak dari repo.
witnessProg := btcutil.Hash160(pubkey.SerializeCompressed())
addressWitnessPubKeyHash, err := btcutil.NewAddressWitnessPubKeyHash(witnessProg, chainParams)
if err != nil {
panic(err)
}
address := addressWitnessPubKeyHash.EncodeAddress()
Kiat Pemilik Anjing yang Bermanfaat: Mengapa Penting untuk Membiarkan Anjing Anda Mengendus di Jalan
Taylor Sheridan Baru Menambahkan 1 Bintang 'Yellowstone' Favoritnya ke Pemeran 'Lawmen: Bass Reeves'