bitcoinjs-lib seems to skip a step in deriving addresses from a BIP 44 wallet



According to this wiki page to create a bitcoin address,

1) you have your public key of the properly derived path

2) Then SHA256 it

3) Then RIPEMD-160 it,

Add version byte at the front and boom blam you’re good.

But in bitcoinjs-lib, they have this function getAddress which seems to skip step 2 and continue down the path ensuring Base58Checking

function getAddress (node) {
  return baddress.toBase58Check(bcrypto.hash160(node.publicKey), bitcoin.networks.bitcoin.pubKeyHash)

My question is, why is bitcoinjs-lib skipping step 1? Don’t you have to SHA256 the pub key again?

Derivation occurs pretty straightforwardly with derivePath

var child1 = root.derivePath("m/44'/0'/0'/0/0")


Posted 2018-05-23T03:16:18.300

Reputation: 929

1 hash160(buffer) is ripemd160(sha256(buffer)) – dave_thompson_085 – 2018-05-23T21:24:03.100

Yes, that is obvious. The step skipped is the extra SHA256 – arshbot – 2018-05-23T21:25:36.977

Ah I see, my bad. Leave a proper answer so I can give you credit – arshbot – 2018-05-23T21:49:30.393

No answers