Post
Topic
Board Bahasa Indonesia (Indonesian)
Merits 10 from 1 user
Re: [Merit] Bitcoin Address Sign Message
by
punk.zink
on 16/03/2024, 14:42:19 UTC
⭐ Merited by Husna QA (10)
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
Code:
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
Code:
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
Code:
1CAz45srpJomUtr52U4tuMVwBuGoC3PEzs
true

* Address merupakan turunan dari Public Key
* Jika verifikasi sign message berhasil maka statusnya adalah "true", jika gagal statusnya "false"