https://github.com/bitpay/bitcore-payment-code
Payment Code BIP47 for Bitcore Lib
https://github.com/bitpay/bitcore-payment-code
Last synced: 11 months ago
JSON representation
Payment Code BIP47 for Bitcore Lib
- Host: GitHub
- URL: https://github.com/bitpay/bitcore-payment-code
- Owner: bitpay
- License: mit
- Created: 2015-11-25T15:34:49.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2015-12-04T19:53:26.000Z (over 10 years ago)
- Last Synced: 2025-03-18T18:36:59.099Z (about 1 year ago)
- Language: JavaScript
- Size: 50.8 KB
- Stars: 7
- Watchers: 6
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
BIP47 Payment Code support for bitcore
=======
[](https://www.npmjs.org/package/bitcore-payment-code)
[](https://travis-ci.org/bitpay/bitcore-payment-code)
[](https://coveralls.io/r/bitpay/bitcore-payment-code)
A module for [bitcore](https://github.com/bitpay/bitcore) that implements [Payment Code](https://github.com/bitcoin/bips/blob/master/bip-0047.mediawiki)
## Getting Started
This library is distributed in both the npm and bower packaging systems.
```sh
npm install bitcore-payment-code
bower install bitcore-payment-code
```
```javascript
// Generating a Payment code and its notification address for Alice
var PaymentCode = require('bitcore-payment-code');
// Alice's extended private key: MasterPrivKey
var xPrivKey = MasterPrivKey.derive("m/47'/0'/0'"); // See BIP47 for details
var xPubKey = xPrivKey.hdPublicKey;
var alicePc = new PaymentCode([xPubKey]); // Generate a payment Code
//also, new PaymentCode([xPubKey0, ..., xPubKeyN], m) // Multisig M-N
var serializedPaymentCode = alicePc.toString(); // PaymentCode to share
var aliceNotificationPubKey = alicePc.publicKey;
var aliceNotificationAddress = aliceNotificationPubKey.toAddress();
// Making a payment to Bob
var paymentInfo = alice.makePaymentInfo(BobPaymentCode, xPrivKey, index, outpoint);
// Index is the alice->bob payment order
// outpoint is where in the transaction the public key will be exposed
// Sample output:
{
publicKeys: [ '023ded791973898f6892cead1b62ba57b9e5dc6c45aeaf0f20813acec96540cec1' ],
paymentAddress: '1AJ3gNTaJ96NBDcj4cVmPZVBB7sF9rVA31',
notificationOutputs: [ '010003874d18c82ce5fa774d3cefa16129159cc893007015e5791c0e1d1edba8d4fec48654656a77d16a1c25aaf61423c56973f71d526aab8a10fcc6cb65f3f21c403d00000000000000000000000000' ],
notificationAddresses: [ '14L2fpcYwQQMmJvVJeewyuvdGfi49HmCZY' ] }
}
// Then alice needs to send a notification TX:
// .from should be a valid UTXO
// Then the TX should be broadcasted... And the actual payment sent to `paymentInfo.paymentAddress`
// For future payments, index should be incremented.
// ===================================================
// Bob retrieval of the payment....
// When Bob receives a TX on his notification address:
```
## Contributing
See [CONTRIBUTING.md](https://github.com/bitpay/bitcore/blob/master/CONTRIBUTING.md) on the main bitcore repo for information about how to contribute.
## License
Code released under [the MIT license](https://github.com/bitpay/bitcore/blob/master/LICENSE).
Copyright 2015 BitPay, Inc. Bitcore is a trademark maintained by BitPay, Inc.