{"_id":"@atomicfinance/coinselect","_rev":"6-8c5a2cfa1170bc807a9b6997b3f5370f","name":"@atomicfinance/coinselect","dist-tags":{"latest":"3.1.14"},"versions":{"3.1.12":{"name":"@atomicfinance/coinselect","version":"3.1.12","description":"A transaction input selection module for bitcoin.","keywords":["coinselect","coin","unspents","wallet","BIP32","management","utxo","transaction","fee","optimization","optimizing","bitcoin"],"homepage":"https://github.com/atomicfinance/coinselect","bugs":{"url":"https://github.com/atomicfinance/coinselect/issues"},"license":"MIT","author":{"name":"Daniel Cousens"},"main":"index.js","repository":{"type":"git","url":"git+https://github.com/atomicfinance/coinselect.git"},"scripts":{"coverage":"nyc --check-coverage --branches 100 --functions 100 tape test/*.js","standard":"standard","test":"npm run standard && npm run unit","unit":"tape test/*.js"},"devDependencies":{"nyc":"^8.3.2","standard":"*","tape":"^4.5.1"},"dependencies":{"bn.js":"^4.11.8"},"gitHead":"e2cf1a6f4e88c9daaf32d277268df0e932508a01","_id":"@atomicfinance/coinselect@3.1.12","_nodeVersion":"16.2.0","_npmVersion":"7.13.0","dist":{"integrity":"sha512-PxsAUeNM5ItLPfbIztHaSrZI3QM95T+Sg9rY7qOaPxkBfh/ROpWTn9Q+sHED361UOrIaKgx9gOtMsc6+NrsrHQ==","shasum":"53aa9d64e47a95b5671ce6b5a9eb7414c498813a","tarball":"https://registry.npmjs.org/@atomicfinance/coinselect/-/coinselect-3.1.12.tgz","fileCount":10,"unpackedSize":14206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7aWtCRA9TVsSAnZWagAAYiUQAKH36zrLKY4vP0YZFlOC\nwhJab+mIrCCv1cHT3R8XS5E77/0QbbCqKWN5/tJgpzrMdQoM6ZAmwulq2u/i\nU3QyEpH7GxZJC9oCO0rEO1oL79DDbLRgYaFg0iHpANOI69EdwSfD+52EzYrz\nJntfZ+iaV4Q8NkuitFtWPAs3XAVfSv/49uVzdoUscNNUwd8+SwpGofxVL7Vf\nac0iGpXQjh73yBzWs7L/lq3T8dwfHG1WZNv00NUXr2HUW9F9R0EtPwM1YY+1\nDN4F04TdQV34g/yLVbg6Bj14YALnLTuwm7hTlP4N6T2cThdkwmxNNM+6eYIu\nPSEUByen1AKuuNEBie1BT8/xXWk10SjbA46uK1KPgkMywiSQV/EquJdXHpXZ\nRP23H+pRgWPZw6cLzK5tHh2q7Dewg4gZbmCZbSL970Rf9/4mMnUQcqhYMJ3g\nZr9f4xQ5ciU9rGoTP/v06asq3JTq/rFAjYyIr/k8xWjwWp4vEwc692drrsy6\nmYKyAHXn3sASRKmxmQ2H7QUen+etWWzwedy5sXKPZFH39x3huXcAUsYQhq6C\nEm+nxwUd79bk5q6Na8OG3fadeJNuUCPIXNnOLKu8meCNLxXs7wlUX7oppvd1\nutfQHLPrJLE98e4ERsoHC5XX00vjLaXkzOrBeol74ap4P4J1eMgw+vZ15jfE\nHxR9\r\n=dvoG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBSnkjBqWhlhBQqmKfh9i7tb6Xv/fkS/J+VT+bk0NZRMAiB1Qsk6TECY5iQPP8A3xdk5ziSLqgJ49n53HBeM7pdGIg=="}]},"_npmUser":{"name":"zhaosteven","email":"steven@zhao.io"},"directories":{},"maintainers":[{"name":"zhaosteven","email":"steven@zhao.io"},{"name":"mblackmblack","email":"mblackmblackmblack@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/coinselect_3.1.12_1626187180886_0.18444589103069564"},"_hasShrinkwrap":false},"3.1.13":{"name":"@atomicfinance/coinselect","version":"3.1.13","description":"A transaction input selection module for bitcoin.","keywords":["coinselect","coin","unspents","wallet","BIP32","management","utxo","transaction","fee","optimization","optimizing","bitcoin"],"homepage":"https://github.com/atomicfinance/coinselect","bugs":{"url":"https://github.com/atomicfinance/coinselect/issues"},"license":"MIT","author":{"name":"Daniel Cousens"},"main":"index.js","repository":{"type":"git","url":"git+https://github.com/atomicfinance/coinselect.git"},"scripts":{"coverage":"nyc --check-coverage --branches 100 --functions 100 tape test/*.js","standard":"standard","test":"npm run standard && npm run unit","unit":"tape test/*.js"},"devDependencies":{"nyc":"^8.3.2","standard":"*","tape":"^4.5.1"},"dependencies":{},"gitHead":"b3c487a42e4a1c0b2ed539aa2f38c64411e5651b","_id":"@atomicfinance/coinselect@3.1.13","_nodeVersion":"16.2.0","_npmVersion":"7.13.0","dist":{"integrity":"sha512-NMvXpQtrFiyzQIgyHhU/crj3eDmmKwS2JJhYasWzU8VcWjAFIp3mauA3jTDJb92hxCwZx2TV3ceiXEvGNv0RMQ==","shasum":"35124a31f3add71c76d66f70d10b5a079740ab83","tarball":"https://registry.npmjs.org/@atomicfinance/coinselect/-/coinselect-3.1.13.tgz","fileCount":9,"unpackedSize":11945,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7a2lCRA9TVsSAnZWagAA3ZAP/3+LamNMILvspCJbG6ZN\nkflZSbNauQB9hCesJaoFahjtlH4+8G0CleJ1z9xeoh9DIHUNYraZBm/IHkkB\nzcYXTTC8m8gL3TCK/kQadijzn7cWEcp2jZMfGplD3HD8l6cS1VkwQixj97xn\nAKJyToI7+BNqlfBb7TuIiPffVRjntPz4YZ9dD2vRa43PwRKBC0nVsalKmoBa\nQ6QzygvCiwEGUs5NXle83m/C0sCb/1WGtNJ8hQdZvWvJheBEpbP/ny8Hrc61\nikBzIF2RRMAhJYzdzvlZLj2IGR2tBhvS7a0lJE3AUSIWrRKFjOBCofAO3wpW\nspbWOgh61EWI+N41y3fPvpbjfSl2V0dMKUxZglOyJNPnN2Sq6vF9eG+5jisj\n/mDVcX6UwKHQ4JEdISgM6cZ/3QXex0qoRnEbtZPmMYdnKi5iFL2z2PBUpF22\nhw3faTFnKC2aFi+NM68yyYkALPIbWklsD3LmDcwEb1PdmBnU9Rcwo9YnbuUK\nDmUlLlk4PWG+a0iXm0msYk1fHJZm7vXDvdYOuONVV4ZkhRpVBgg0hmfLsWgw\n1WAXNlY6Mcqj6uEavsSWXaDNSH93d5nJG3s4b5PHK1HqyYtJIKP2o8QxAhMx\n5GGA5HH3ch5hM6jem+yTmFL5WU2jhpMaFdmiqsSw+fGPGwYesn0hjw9V0hyI\nGBSZ\r\n=Q0rF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDl9R4RIfcyxXpa7NMjyGHXKPJ6Z6ORms9dAZKObBc+wIhALhWpLmy9NrvSqv6NKv2WcM5C6As8Cbklw7x0pXHYAle"}]},"_npmUser":{"name":"zhaosteven","email":"steven@zhao.io"},"directories":{},"maintainers":[{"name":"zhaosteven","email":"steven@zhao.io"},{"name":"mblackmblack","email":"mblackmblackmblack@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/coinselect_3.1.13_1626189220615_0.2123647070986181"},"_hasShrinkwrap":false},"3.1.14":{"name":"@atomicfinance/coinselect","version":"3.1.14","description":"A transaction input selection module for bitcoin.","keywords":["coinselect","coin","unspents","wallet","BIP32","management","utxo","transaction","fee","optimization","optimizing","bitcoin"],"homepage":"https://github.com/atomicfinance/coinselect","bugs":{"url":"https://github.com/atomicfinance/coinselect/issues"},"license":"MIT","author":{"name":"Daniel Cousens"},"main":"index.js","repository":{"type":"git","url":"git+https://github.com/atomicfinance/coinselect.git"},"scripts":{"coverage":"nyc --check-coverage --branches 100 --functions 100 tape test/*.js","standard":"standard","test":"npm run standard && npm run unit","unit":"tape test/*.js"},"devDependencies":{"nyc":"^8.3.2","standard":"*","tape":"^4.5.1"},"dependencies":{},"gitHead":"6b1fef785270ccffd4e4916b2616c5b1c0df0892","_id":"@atomicfinance/coinselect@3.1.14","_nodeVersion":"16.2.0","_npmVersion":"7.13.0","dist":{"integrity":"sha512-H/kRA2OWaYsuIT2kXwOChRbIZQrxmBWUIU9xMVYUM6hvXS5sh5rPsM+17wqXMJ4nNtW/8h6sqf21y2dY8Di4jw==","shasum":"e384ab1ba91009211349936800c2d4b713dc8db5","tarball":"https://registry.npmjs.org/@atomicfinance/coinselect/-/coinselect-3.1.14.tgz","fileCount":9,"unpackedSize":11977,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7bfzCRA9TVsSAnZWagAAnZcP/jHNyzSyludWHQI2WuAo\nexG4MNDcETjRy5ABAmKWDqNgQWxPT5xlEctZ1g8PwkNUYpfEV1CsHvtnzqRH\nqCDp53zhTc7oY5RHAwn+yX+8wyDFm/QK2o4YiYgljQHCbbkAWh26Flr11I0P\ny3zYm3ZC2REZoYMngj8Ucz47bf/4Lu2AQdNk8yYFIQs1QTL4UaO0V9j/MMv+\nBF4Dv5D+hOfo4BX8sOS9aghsZBZxy5Y+xYzy8DkZJnxUwCRqVKuukir7Dq+9\nIg/9tsr2x7aq1N94S/OiGKXg01+QoM8amdPcA8F26eeETvh8DJB4z7g3Gi6U\nTVjdhYGf8kNpbjc47igUZf99V+z0XQBEYYsfgkixQqLhgy2r+9EXKxIDqSxP\ngg+hgFUCd0JgwG/SAoo8EKOfFZs2MP+RBZJP1V/rOwzt40AP6dK22z5Evr8o\nkF0HQInf5n2uA7YtK69ht2uyJYPYrs3GbADpUASI3ormGsUE948DMygXxWUh\n69a2gTwZd4Bkfag5bzwnb5UC8c+D5lBCdgWEl+cw8GzsSabaPceRwkGPt5Ae\nEMDCyioUlJuMTXNj7+y9yD9BPCR78wB4hm1My4Xmb9pQkBUK6/65rRu1sz94\n9JFplBpudWrRys9C/29LqidwNUAyCd9vQPXfZRrWMUjGRa7A/CTO4K72Pfha\npenR\r\n=oMiR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGGPnoGexB6RlA7pA6kQD3+ROhtniDb5Qq8QN2WFbVHKAiEA++sm7edKa5Mfg5gU55/Pak0YqhAPOAfw7w0dyjYzq68="}]},"_npmUser":{"name":"zhaosteven","email":"steven@zhao.io"},"directories":{},"maintainers":[{"name":"zhaosteven","email":"steven@zhao.io"},{"name":"mblackmblack","email":"mblackmblackmblack@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/coinselect_3.1.14_1626191859098_0.9194340145322579"},"_hasShrinkwrap":false}},"time":{"created":"2021-07-13T14:39:40.529Z","3.1.12":"2021-07-13T14:39:41.058Z","modified":"2023-01-29T22:34:39.761Z","3.1.13":"2021-07-13T15:13:40.771Z","3.1.14":"2021-07-13T15:57:39.209Z"},"maintainers":[{"email":"mblackmblackmblack@gmail.com","name":"mblackmblack"}],"description":"A transaction input selection module for bitcoin.","homepage":"https://github.com/atomicfinance/coinselect","keywords":["coinselect","coin","unspents","wallet","BIP32","management","utxo","transaction","fee","optimization","optimizing","bitcoin"],"repository":{"type":"git","url":"git+https://github.com/atomicfinance/coinselect.git"},"author":{"name":"Daniel Cousens"},"bugs":{"url":"https://github.com/atomicfinance/coinselect/issues"},"license":"MIT","readme":"# coinselect\n\n[![TRAVIS](https://secure.travis-ci.org/bitcoinjs/coinselect.png)](http://travis-ci.org/bitcoinjs/coinselect)\n[![NPM](http://img.shields.io/npm/v/coinselect.svg)](https://www.npmjs.org/package/coinselect)\n\n[![js-standard-style](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)\n\nAn unspent transaction output (UTXO) selection module for bitcoin.\n\n**WARNING:** Value units are in `satoshi`s, **not** Bitcoin.\n\n\n## Algorithms\nModule | Algorithm | Re-orders UTXOs?\n-|-|-\n`require('coinselect')` | Blackjack, with Accumulative fallback | By Descending Value\n`require('coinselect/accumulative')` | Accumulative - accumulates inputs until the target value (+fees) is reached, skipping detrimental inputs | -\n`require('coinselect/blackjack')` | Blackjack - accumulates inputs until the target value (+fees) is matched, does not accumulate inputs that go over the target value (within a threshold) | -\n`require('coinselect/break')` | Break - breaks the input values into equal denominations of `output` (as provided) | -\n`require('coinselect/split')` | Split - splits the input values evenly between all `outputs`, any provided `output` with `.value` remains unchanged | -\n\n\n**Note:** Each algorithm will add a change output if the `input - output - fee` value difference is over a dust threshold.\nThis is calculated independently by `utils.finalize`, irrespective of the algorithm chosen, for the purposes of safety.\n\n**Pro-tip:** if you want to send-all inputs to an output address, `coinselect/split` with a partial output (`.address` defined, no `.value`) can be used to send-all, while leaving an appropriate amount for the `fee`. \n\n## Example\n\n``` javascript\nlet coinSelect = require('coinselect')\nlet feeRate = 55 // satoshis per byte\nlet utxos = [\n  ...,\n  {\n    txId: '...',\n    vout: 0,\n    ...,\n    value: 10000\n  }\n]\nlet targets = [\n  ...,\n  {\n    address: '1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm',\n    value: 5000\n  }\n]\n\n// ...\nlet { inputs, outputs, fee } = coinSelect(utxos, targets, feeRate)\n\n// the accumulated fee is always returned for analysis\nconsole.log(fee)\n\n// .inputs and .outputs will be undefined if no solution was found\nif (!inputs || !outputs) return\n\nlet txb = new bitcoin.TransactionBuilder()\n\ninputs.forEach(input => txb.addInput(input.txId, input.vout))\noutputs.forEach(output => {\n  // watch out, outputs may have been added that you need to provide\n  // an output address/script for\n  if (!output.address) {\n    output.address = wallet.getChangeAddress()\n    wallet.nextChangeAddress()\n  }\n\n  txb.addOutput(output.address, output.value)\n})\n```\n\n\n## License [MIT](LICENSE)\n","readmeFilename":"README.md"}