Skip to content

Instantly share code, notes, and snippets.

@junderw
Last active August 30, 2017 17:07
Show Gist options
  • Save junderw/70f6590f08daf7b091e39dc7d3a67454 to your computer and use it in GitHub Desktop.
Save junderw/70f6590f08daf7b091e39dc7d3a67454 to your computer and use it in GitHub Desktop.
// npm install git://github.com/bitcoinjs/bitcoinjs-lib.git#56dfb873d3f05817e19befa976592bc0f371a6d3
// installing the above commit of bitcoinjslib will allow you to take the var redeemScript and
// create a bech32 raw segwit address with this function:
// var bech32address = bitcoin.address.fromOutputScript(redeemScript)
var bitcoin = require('bitcoinjs-lib')
var mnemonic = require('bip39')
// log output near bottom
function main() {
// mnemonic seed starts here
var seed = mnemonic.mnemonicToSeed('print common jewel hospital hip fish auction indicate depth ignore ship tissue')
var hdnodemaster = bitcoin.HDNode.fromSeedBuffer(seed)
// deriveHardened(49) is for BIP49 (Segwit derivation path
var lastHardKey = hdnodemaster.deriveHardened(49).deriveHardened(0).deriveHardened(0)
var xpubString = lastHardKey.neutered().toBase58()
console.log(xpubString)
// Trezor xpub starts here
// 'xpub6Cz3wBaX83YCqsiUx5vcbfRioTS9hEVSQv1BXzC8uecuqenCCwuQiF77SZ2MMZks6fkA57FUkWBDLevJadNWT53NNA8FBiF5fEvWiy5Ro2q'
var xpubObj = bitcoin.HDNode.fromBase58(xpubString)
var receiveAddressChain = xpubObj.derive(0)
var segwitP2SHAddresses = []
for (var i = 0; i < 20; i++) {
var pubkey = receiveAddressChain.derive(i).getPublicKeyBuffer()
console.log(i + " pubkey: " + pubkey.toString('hex'))
var pubkeyHash = bitcoin.crypto.hash160(pubkey)
console.log(i + " pubkeyHash: " + pubkeyHash.toString('hex'))
var redeemScript = bitcoin.script.witnessPubKeyHash.output.encode(pubkeyHash)
console.log(i + " redeemScript: " + redeemScript.toString('hex'))
var redeemScriptHash = bitcoin.crypto.hash160(redeemScript)
console.log(i + " redeemScriptHash: " + redeemScriptHash.toString('hex'))
var scriptPubkey = bitcoin.script.scriptHash.output.encode(redeemScriptHash)
console.log(i + " scriptPubkey: " + scriptPubkey.toString('hex'))
var address = bitcoin.address.fromOutputScript(scriptPubkey)
console.log(i + " address: " + address)
console.log("")
segwitP2SHAddresses.push(address)
}
console.log("Final list of Addresses")
console.log(segwitP2SHAddresses.join("\n"))
}
main()
/*
0 pubkey: 0322d47420264e0b6825a84f9fb57852b111fac68ae06d9c34f5abba4fce365b47
0 pubkeyHash: 95194eb41705dd74b97eff48d955b31817534485
0 redeemScript: 001495194eb41705dd74b97eff48d955b31817534485
0 redeemScriptHash: 76ef2ea52c3468d44bbd75478a546427a9ec0d3b
0 scriptPubkey: a91476ef2ea52c3468d44bbd75478a546427a9ec0d3b87
0 address: 3CXtBrJeEHaFNdXvnu71oKKAvs1aZDjpJR
1 pubkey: 035f9b1f5fdc65b3b272a58560f85084a409fd630c87a803aa8e5c3b37f02c6765
1 pubkeyHash: 04ff0013496d542948d6e6d7c1147b790b3b9e5b
1 redeemScript: 001404ff0013496d542948d6e6d7c1147b790b3b9e5b
1 redeemScriptHash: 84c86234fcc6a4cb6ffe1ac38ccf1db875810a1b
1 scriptPubkey: a91484c86234fcc6a4cb6ffe1ac38ccf1db875810a1b87
1 address: 3Do7AmEUVdGot9Pei1YyRJyvs6L7UTBUFN
2 pubkey: 0290b858ae3f2ad44e1063c5015f17d26976f0e41e003862a7fdb5608c8aca27fa
2 pubkeyHash: d41e68a08b179040c184de6d1f6b82607243fdbc
2 redeemScript: 0014d41e68a08b179040c184de6d1f6b82607243fdbc
2 redeemScriptHash: e89ebb90e91855eaebaf7a626ed0cf56647fe975
2 scriptPubkey: a914e89ebb90e91855eaebaf7a626ed0cf56647fe97587
2 address: 3NtzqzH6rjJovouy3HfaPGEcGeCvpPZcXu
3 pubkey: 0265aff540cdb64123b5fccdcbcdbee5a7c0faad1c81e299ef581ba9762423e5dd
3 pubkeyHash: 54ddb20f76af9750e277b815d096ee5db998a88f
3 redeemScript: 001454ddb20f76af9750e277b815d096ee5db998a88f
3 redeemScriptHash: c692d961269795eead1c3ea2f068edac53552206
3 scriptPubkey: a914c692d961269795eead1c3ea2f068edac5355220687
3 address: 3KnydnNxUCZncd324PLQeCTJbwHQf3wYYj
4 pubkey: 036fc403295fab4495c72ff9771c1baf6b90af3da9ba65c24ceb7e6857a0a2676f
4 pubkeyHash: c55bcee7917c2d18522e5874dec6b600f210d812
4 redeemScript: 0014c55bcee7917c2d18522e5874dec6b600f210d812
4 redeemScriptHash: 00c5ffc861352a6ad0b9550aa008d075cb27a081
4 scriptPubkey: a91400c5ffc861352a6ad0b9550aa008d075cb27a08187
4 address: 31m77mNxvhCask7jBMp1HSRDa5Pi97uN6L
5 pubkey: 03f4a009a2937fb456fe21b4a9679696b38081687d1fbbba8f996ed820c0a96cbd
5 pubkeyHash: b835c700b8ea0dfd059c47a103a0a226300de935
5 redeemScript: 0014b835c700b8ea0dfd059c47a103a0a226300de935
5 redeemScriptHash: 420073267adb6946b8659e348c7445ac9bcd520d
5 scriptPubkey: a914420073267adb6946b8659e348c7445ac9bcd520d87
5 address: 37i14TVhZAoPcAXKd6MS34dJjGnzKZFBGK
6 pubkey: 02099886b8339ae4d56b50d77ad003e20aead374470653bd4441bbc4148e87fc58
6 pubkeyHash: bfc8c9c61ccdcf4a7671b85740ac6419e1e8856f
6 redeemScript: 0014bfc8c9c61ccdcf4a7671b85740ac6419e1e8856f
6 redeemScriptHash: 06c5b4214e7fa88e66c72e60c3599fa9d48dbb25
6 scriptPubkey: a91406c5b4214e7fa88e66c72e60c3599fa9d48dbb2587
6 address: 32JppPE1F9RWn76eNKyfNG7LhhFydytPsa
7 pubkey: 038de07a135695465d373063abfe460778c26a1972ec32a587f4a685834c58a5dd
7 pubkeyHash: 9d59e23ace4a6a3be6576b890a0e7d89535fe5cf
7 redeemScript: 00149d59e23ace4a6a3be6576b890a0e7d89535fe5cf
7 redeemScriptHash: f57e7b9e1109a399a6865e9446dbf527b57bd157
7 scriptPubkey: a914f57e7b9e1109a399a6865e9446dbf527b57bd15787
7 address: 3Q54zj7HHwoXquXVmmqdjUtNBWWmjr4JBR
8 pubkey: 0393c79787e3c44f7ff7079163822f170176bf0df00bdd811d99a290dd8a307f92
8 pubkeyHash: 6fe3f84d096b5bc6aa552fea0a92e04edd3cfca7
8 redeemScript: 00146fe3f84d096b5bc6aa552fea0a92e04edd3cfca7
8 redeemScriptHash: e22cf50c4c62b644a2a0190983830591aa97d6a4
8 scriptPubkey: a914e22cf50c4c62b644a2a0190983830591aa97d6a487
8 address: 3NJvVaaZqT4YmzmBBLPkabMJM7jAz1HZjw
9 pubkey: 03bcf45bc72e25c3d64d746220b2235e3999cee5d6de5d19f923fc1b58ccf93e9c
9 pubkeyHash: 4032e1fd4c8530f6d35b4e3948462194e41dd784
9 redeemScript: 00144032e1fd4c8530f6d35b4e3948462194e41dd784
9 redeemScriptHash: ad5a5471b4e655f8184fe3ae489401bbb9557cba
9 scriptPubkey: a914ad5a5471b4e655f8184fe3ae489401bbb9557cba87
9 address: 3HVd2xajcHmvkPZu2ZHZmjAYtN5CmVVaCD
10 pubkey: 0298bfd1cade50cd95fed321efcdbb85be6377273ef93015f7b46d76ddb2211db0
10 pubkeyHash: 540b87aff9a1ff2df2294b8615abe0812e4cb9de
10 redeemScript: 0014540b87aff9a1ff2df2294b8615abe0812e4cb9de
10 redeemScriptHash: 2098e738dcaf2411175a51928a46df310514707a
10 scriptPubkey: a9142098e738dcaf2411175a51928a46df310514707a87
10 address: 34fNiaoqR7GSZSy247LureVwhWEsjsNcUK
11 pubkey: 03d1d50bc59bc338ee068571669d129114f2c6ea014aad8894622aa7a6272f887c
11 pubkeyHash: b6b46bb41e3c2da1d43054de137491eaa470e7ec
11 redeemScript: 0014b6b46bb41e3c2da1d43054de137491eaa470e7ec
11 redeemScriptHash: 91bb50338f79c32c09c22c5fe91d807e767b5477
11 scriptPubkey: a91491bb50338f79c32c09c22c5fe91d807e767b547787
11 address: 3EyaJ7bQRnSauGQrx63Zs9PtED5jUdDFwZ
12 pubkey: 026121cf76382bbe8f1eb8d8bb467f2c5f8c2eec1c9c04d63fdba14bcec2410a68
12 pubkeyHash: ebda27bd2ee8c4506605af638f5072d32e3ae55c
12 redeemScript: 0014ebda27bd2ee8c4506605af638f5072d32e3ae55c
12 redeemScriptHash: 851d5b5f38744c6e5a63c3abca40f67e4aaee109
12 scriptPubkey: a914851d5b5f38744c6e5a63c3abca40f67e4aaee10987
12 address: 3Dprxp3QvNzrEMmfSu5J1t45MkYrBSgNzK
13 pubkey: 033659494e628a6dbf661af7fdb0b3310cb7d83a1a44b9af95a0cd4d2f566ff18c
13 pubkeyHash: afb4388a5f97a6f01c9b482bb98d896a6fdf2d4f
13 redeemScript: 0014afb4388a5f97a6f01c9b482bb98d896a6fdf2d4f
13 redeemScriptHash: c18feda219bf4781feb632f45bd01d416904abff
13 scriptPubkey: a914c18feda219bf4781feb632f45bd01d416904abff87
13 address: 3KLUksr6NXzFGPsG7MMLuin2YmHkxiwWXG
14 pubkey: 03f38c225d74d5259c5525d3d926f75e2328f53a0dc259953cf3a9601c8c74281f
14 pubkeyHash: c74e8c1280cde2499a6f4cffad953521d9014988
14 redeemScript: 0014c74e8c1280cde2499a6f4cffad953521d9014988
14 redeemScriptHash: dd518d9e2f0c9cbbed34538a9a3e67ca12bef2f8
14 scriptPubkey: a914dd518d9e2f0c9cbbed34538a9a3e67ca12bef2f887
14 address: 3MsExMTmHUwNz92dGLvHxSy1LD7hTXQVon
15 pubkey: 030336daaa7f78c2f70b9f8170e3b6f5829b25c6e8ace353d760ee1e0085781b4f
15 pubkeyHash: 19d25789d7ddaba37ccf138682b0c72f0f0dbefd
15 redeemScript: 001419d25789d7ddaba37ccf138682b0c72f0f0dbefd
15 redeemScriptHash: 1dca068da828ad4e7362469c58b80eafec7fa7f6
15 scriptPubkey: a9141dca068da828ad4e7362469c58b80eafec7fa7f687
15 address: 34QXY6GCFhXofx3ECTmCkhEf1pnnZGarS7
16 pubkey: 035470920388b9c165e5a7eb29cd860da8342e5e8a8796cd1ea41552a5050e3959
16 pubkeyHash: 775cd42e499e1f2c8fba44e19e9863d4055bf9f1
16 redeemScript: 0014775cd42e499e1f2c8fba44e19e9863d4055bf9f1
16 redeemScriptHash: bdcc31fe767407accba8dfbb90ad83719db477b8
16 scriptPubkey: a914bdcc31fe767407accba8dfbb90ad83719db477b887
16 address: 3JzaFY76xXRNGRpukufQtVbS75KmyVBbDU
17 pubkey: 033a2439a3993e705b8a5223562c4b754ac921926afa2c3913a03443f4dc4dd855
17 pubkeyHash: 488db307dd35961da5b5b155df2ee95520ba96cf
17 redeemScript: 0014488db307dd35961da5b5b155df2ee95520ba96cf
17 redeemScriptHash: 710c7d159ca3d69997f06b20383341d72da500fd
17 scriptPubkey: a914710c7d159ca3d69997f06b20383341d72da500fd87
17 address: 3BzmEwjYPnog9rkRwnhoxyPmiryzC7mbNe
18 pubkey: 031b1296d360b53f7d28a325e7667398eb620bc5f7044652b6f7f96cc049a1a7ca
18 pubkeyHash: bd40d2342c14ffcc1df1387fa853adbf19efd4dc
18 redeemScript: 0014bd40d2342c14ffcc1df1387fa853adbf19efd4dc
18 redeemScriptHash: e0e76413bf17aa55a9807b882632527814e31230
18 scriptPubkey: a914e0e76413bf17aa55a9807b882632527814e3123087
18 address: 3NCCUqWXvBueF1y3hD2g23AdSYR2QcBv5s
19 pubkey: 0276789eb0d68ee6454e9d09438a295043531e245ff2eacde7f269d8fb5cf9b2cd
19 pubkeyHash: 920779e3371cc476d0de3a01868e966a02c1d729
19 redeemScript: 0014920779e3371cc476d0de3a01868e966a02c1d729
19 redeemScriptHash: e7b2817b7076b13d41fc45dac663cf6b6c4518b3
19 scriptPubkey: a914e7b2817b7076b13d41fc45dac663cf6b6c4518b387
19 address: 3Np7rf21qcw4Un2bM5jaTdtcPUeaApuH5L
Final list of Addresses
3CXtBrJeEHaFNdXvnu71oKKAvs1aZDjpJR
3Do7AmEUVdGot9Pei1YyRJyvs6L7UTBUFN
3NtzqzH6rjJovouy3HfaPGEcGeCvpPZcXu
3KnydnNxUCZncd324PLQeCTJbwHQf3wYYj
31m77mNxvhCask7jBMp1HSRDa5Pi97uN6L
37i14TVhZAoPcAXKd6MS34dJjGnzKZFBGK
32JppPE1F9RWn76eNKyfNG7LhhFydytPsa
3Q54zj7HHwoXquXVmmqdjUtNBWWmjr4JBR
3NJvVaaZqT4YmzmBBLPkabMJM7jAz1HZjw
3HVd2xajcHmvkPZu2ZHZmjAYtN5CmVVaCD
34fNiaoqR7GSZSy247LureVwhWEsjsNcUK
3EyaJ7bQRnSauGQrx63Zs9PtED5jUdDFwZ
3Dprxp3QvNzrEMmfSu5J1t45MkYrBSgNzK
3KLUksr6NXzFGPsG7MMLuin2YmHkxiwWXG
3MsExMTmHUwNz92dGLvHxSy1LD7hTXQVon
34QXY6GCFhXofx3ECTmCkhEf1pnnZGarS7
3JzaFY76xXRNGRpukufQtVbS75KmyVBbDU
3BzmEwjYPnog9rkRwnhoxyPmiryzC7mbNe
3NCCUqWXvBueF1y3hD2g23AdSYR2QcBv5s
3Np7rf21qcw4Un2bM5jaTdtcPUeaApuH5L
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment