'use strict'; var run = function() { // replace '../bitcore' with 'bitcore' if you use this code elsewhere. var bitcore = require('../bitcore'); var networks = require('../networks'); var Script = bitcore.Script; var WalletKey = bitcore.WalletKey; var buffertools = bitcore.buffertools; var Address = bitcore.Address; var util = bitcore.util; var opts = {network: networks.testnet}; var p = console.log; var wk = new WalletKey(opts); wk.generate(); var wkObj = wk.storeObj(); var s = Script.createPubKeyOut(wk.privKey.public); p('\nScript PubKey:'); p('\tHex : ' + buffertools.toHex(s.buffer)); p('\tHuman : ' + s.toHumanReadable()); p('\tKey -------------------------------'); console.log ('\tPrivate: ' + wkObj.priv); console.log ('\tPublic : ' + wkObj.pub); console.log ('\tAddr : ' + wkObj.addr); s = Script.createPubKeyHashOut(wk.privKey.public); p('\nScript PubKeyHash:'); p('\tHex : ' + buffertools.toHex(s.buffer)); p('\tHuman : ' + s.toHumanReadable()); p('\tKey -------------------------------'); console.log ('\tPrivate: ' + wkObj.priv); console.log ('\tPublic : ' + wkObj.pub); console.log ('\tAddr : ' + wkObj.addr); var wks=[]; var pubs = []; for (var i =0; i<5; i++) { wks[i] = new WalletKey(opts); wks[i].generate(); pubs.push(wks[i].privKey.public); } s = Script.createMultisig(3,pubs); p('\nScript MultiSig (3 out of 5 required signatures):'); p('\tHex : ' + buffertools.toHex(s.buffer)); p('\tHuman : ' + s.toHumanReadable()); for (i =0; i<5; i++) { wkObj = wks[i].storeObj(); p('\tKey ['+i+'] -------------------------------'); console.log ('\tPrivate: ' + wkObj.priv); console.log ('\tPublic : ' + wkObj.pub); console.log ('\tAddr : ' + wkObj.addr); } var hash = util.sha256ripe160(s.buffer); s = Script.createP2SH(hash); p('\nScript P2SH:'); p('\tHex : ' + buffertools.toHex(s.buffer)); p('\tHuman : ' + s.toHumanReadable()); p('\tScript Hash: ' + buffertools.toHex(hash)); var a = new Address(networks.livenet.P2SHVersion,hash); p('\tp2sh Addr: ' + a.toString()); }; module.exports.run = run; if (require.main === module) { run(); }