Understanding signing messages with bitcoinjs-lib

I’m trying to understand what a specific line of code does when signing a message using bitcoinjs-lib. Here’s the code:

var bitcoin = require('bitcoinjs-lib') var bitcoinMessage = require('bitcoinjs-message')  var keyPair = bitcoin.ECPair.makeRandom(); //private key var privateKey = keyPair.toWIF(); // Address var address = keyPair.getAddress();  console.log(privateKey); console.log(address);  privateKey = keyPair.d.toBuffer(32) var message = 'your message' var messagePrefix = bitcoin.networks.bitcoin.messagePrefix  var signature = bitcoinMessage.sign(message, messagePrefix, privateKey, keyPair.compressed) console.log(signature.toString('base64')) 

The line I’m curious about is this one:

privateKey = keyPair.d.toBuffer(32) 

What exactly is this code doing and why is it necessary?



Recent Questions – Bitcoin Stack Exchange

How does Bitcoin verifies signature if addresses are one way hashed

I’m stuck at understanding Bitcoin’s transactions. So, the owner must sign the transaction with his private key, then miners can verify whether this signature matches his public key. However the public key is hashed with three functions (RIPEMD160, SHA256 and Base58) and it’s impossible to get the original ECDSA public key from the address. So how does the transaction verification actually work?

Recent Questions – Bitcoin Stack Exchange