Bitcoinjs

使用 BitcoinJS 來自比特幣地址的 ScriptHash

  • January 18, 2018

我需要與 Electrum 伺服器 API 互動,以獲取 bech32 地址的 UTXO。

Electrum 不支持 bech32,但支持通過 ScriptHash 搜尋,可以從地址獲得。

我認為 ScriptHash 這個名字在這裡有點模棱兩可(我認為鎖定腳本雜湊更有意義)

那麼我怎樣才能從地址中獲取腳本雜湊,如下面的使用 bitcoinjs 的範例所示:

      {'priv': 'L8g5V8kFFeg2WbecahRSdobARbHz2w2STH9S8ePHVSY4fmia7Rsj',
       'pub': '03e9f948421aaa89415dc5f281a61b60dde12aae3181b3a76cd2d849b164fc6d0b',
       'address': 'bc1qqmpt7u5e9hfznljta5gnvhyvfd2kdd0r90hwue',
       'minikey': False,
       'txin_type': 'p2wpkh',
       'compressed': True,
       'addr_encoding': 'bech32',
       'scripthash': '1929acaaef3a208c715228e9f1ca0318e3a6b9394ab53c8d026137f847ecf97b'}

通過github得到答案

let script = bitcoin.address.toOutputScript(address)
let hash = bitcoin.crypto.sha256(script)
let reversedHash = new Buffer(hash.reverse())

console.log(address, ' maps to ', reversedHash.toString('hex'))

請注意 - 出於某種原因 - Electrum 使用反向腳本雜湊

引用自:https://bitcoin.stackexchange.com/questions/68565