Bitcoinjs
使用 BitcoinJS 來自比特幣地址的 ScriptHash
我需要與 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 使用反向腳本雜湊