Dibawah ini ada script bitcoinjs-lib, yang barangkali bisa Om Husna gunakan untuk proses verifikasi sign message dan melakukan verifikasi bahwa public key dari masing-masing partisipan memang terkorelasi dengan address yang digunakan pada Sign Message.
Contoh : saya gunakan data milik agan Z.H.I.E.N.D
Message: Today is 02/20/2024, i'm Z.H.I.E.N.D & hereby certify 1CAz45srpJomUtr52U4tuMVwBuGoC3PEzs as my bitcoin address.
Address: 1CAz45srpJomUtr52U4tuMVwBuGoC3PEzs
Signature: Hy4wM5RGKLOAMzF/IJ7JEY9+ze0G9g7fCMc6UNM6auTORPdjUBjWq4Du9lG7ecnMfxhER6GwXXbztPKOk44lmTU=
- Public Key (HEX): 03a7a88a1248711f29a5d3487f6d4d8921dc4e6e13fe2227c9ff991bece031da70
Lalu diimplementasikan ke Script bitcoinjs-lib
const bitcoin = require('bitcoinjs-lib')
const bitcoinMessage = require('bitcoinjs-message')
const pubkey = Buffer.from('03a7a88a1248711f29a5d3487f6d4d8921dc4e6e13fe2227c9ff991bece031da70', 'hex')
const { address } = bitcoin.payments.p2pkh({ pubkey })
console.log(address)
const signature = Buffer.from('Hy4wM5RGKLOAMzF/IJ7JEY9+ze0G9g7fCMc6UNM6auTORPdjUBjWq4Du9lG7ecnMfxhER6GwXXbztPKOk44lmTU=', 'base64')
const message = "Today is 02/20/2024, i'm Z.H.I.E.N.D & hereby certify 1CAz45srpJomUtr52U4tuMVwBuGoC3PEzs as my bitcoin address."
console.log(bitcoinMessage.verify(message, address, signature))
Hasil
1CAz45srpJomUtr52U4tuMVwBuGoC3PEzs
true
* Address merupakan turunan dari Public Key
* Jika verifikasi sign message berhasil maka statusnya adalah "true", jika gagal statusnya "false"