I'm looking for a lightweight node package which can handle creating btc receiving addresses on the server using an extended public key (segwit).

Like this one: zpub6nYqvTejCbqMTRTGz9rHkJnrJKbLsx36LqLnUJChDdJ6a5NA7hBumEpn9HTSDgWpNTNCponkPCBL5VKeAaScVxbXa1H4RPmA4j19rzgJPRp

I tried using https://www.npmjs.com/package/bitcoin-receive-payments But I don't want an OpenExchangeRates account to use this.

There is this guide on PHP https://freedomnode.com/blog/58/generate-bitcoin-wallet-addresses-from-extended-public-key-with-php

But I can't find any equivalent for JS.

I would also be very thankful if there is any explaination for non Math people, as I am just looking to generate addresses on a server based off an extended address.

Someone knows?


I would suggest using a library such as the bitcoinjs-lib library.

Here's a very stripped down example usage:

let bitcoin = require("bitcoinjs-lib");

function fromXpub(xpub, acctNumber, keyindex, callback){
    let address = bitcoin.HDNode.fromBase58(xpub).derivePath(acctNumber+"/"+keyindex).getAddress(); 

let myxpub = "xpub6C6RXXtdbxSnfB78Y4WjJSjQuChKqHXh9JCZPeKtdGeWRiptL9oJePPtrYKPWaoem9W3Wvp8eEh8dFFuN7u4zT6x6A1H6D67bVVvufv3uJ1";

fromXpub(myxpub, 0, 0, function(cb){


  • Sorry but it seems that your code does not work on my side... i tried to change it to let address = bitcoin.bip32.fromBase58(xpub).derivePath(acctNumber+"/"+keyindex).__Q.toString('hex'); but i cant find the getAddress method here... – rW3ZpUdwYducwSuD Oct 3 '18 at 2:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.