diff --git a/README.md b/README.md index f20209e..503cbaf 100644 --- a/README.md +++ b/README.md @@ -8,27 +8,46 @@ typescript ```typescript import ECPairFactory from 'ecpair'; import * as ecc from 'tiny-secp256k1'; -import BIP47Factory from '../ts-src'; +import BIP47Factory from '.'; // You must wrap a tiny-secp256k1 compatible implementation const ECPair = ECPairFactory(ecc); +const aliceSeedPhrase = 'response seminar brave tip suit recall often sound stick owner lottery motion'; +const bobSeedPhrase = 'reward upper indicate eight swift arch injury crystal super wrestle already dentist'; +const bobPaymentCode = 'PM8TJS2JxQ5ztXUpBBRnpTbcUXbUHy2T1abfrb3KkAAtMEGNbey4oumH7Hc578WgQJhPjBxteQ5GHHToTYHE3A1w6p7tU6KSoFmWBVbFGjKPisZDbP97'; -// bip47 from seed phrase -let aliceBip47 = BIP47Factory(ecc).fromBip39Seed("response seminar brave tip suit recall often sound stick owner lottery motion"); +// alice private bip47 +const aliceBip47 = BIP47Factory(ecc).fromBip39Seed(aliceSeedPhrase); // base58 payment code -let alicePaymentCode = bip47.getSerializedPaymentCode() +const alicePaymentCode = aliceBip47.getSerializedPaymentCode(); // P2PKH notification address -let aliceNotificationAddress = bip47.getNotificationAddress() - +const aliceNotificationAddress = aliceBip47.getNotificationAddress(); // bip47 from payment code -let bopBip47 = BIP47Factory(ecc).fromPaymentCode("PM8TJS2JxQ5ztXUpBBRnpTbcUXbUHy2T1abfrb3KkAAtMEGNbey4oumH7Hc578WgQJhPjBxteQ5GHHToTYHE3A1w6p7tU6KSoFmWBVbFGjKPisZDbP97"); +const bobPublicBip47 = BIP47Factory(ecc).fromPaymentCode(bobPaymentCode); + +// third payment address from alice to bob +const paymentAddress = aliceBip47.getPaymentAddress(bobPublicBip47.getPaymentCodeNode(), 2); + +// bob private bip47 +const bobPrivateBip47 = BIP47Factory(ecc).fromBip39Seed(bobSeedPhrase); +// third alice to bob wallet (bip32) +const wallet = bobPrivateBip47.getPaymentWallet(aliceBip47.getPaymentCodeNode(), 2); + +// third wallet private key +const privateKey = wallet.privateKey?.toString('hex'); + +// examples of how to generate blinded payment code +// and retrieving payment code from notification transaction +// can be found in tests ``` +see tests for more examples. + ## Supported Functionality - generate payment code from seed phrase or seed hex diff --git a/src/test.js b/src/test.js new file mode 100644 index 0000000..2097d15 --- /dev/null +++ b/src/test.js @@ -0,0 +1,30 @@ +"use strict"; +var _a; +Object.defineProperty(exports, "__esModule", { value: true }); +const ecpair_1 = require("ecpair"); +const ecc = require("tiny-secp256k1"); +const _1 = require("."); +// You must wrap a tiny-secp256k1 compatible implementation +const ECPair = (0, ecpair_1.default)(ecc); +const aliceSeedPhrase = 'response seminar brave tip suit recall often sound stick owner lottery motion'; +const bobSeedPhrase = 'reward upper indicate eight swift arch injury crystal super wrestle already dentist'; +const bobPaymentCode = 'PM8TJS2JxQ5ztXUpBBRnpTbcUXbUHy2T1abfrb3KkAAtMEGNbey4oumH7Hc578WgQJhPjBxteQ5GHHToTYHE3A1w6p7tU6KSoFmWBVbFGjKPisZDbP97'; +// alice private bip47 +const aliceBip47 = (0, _1.default)(ecc).fromBip39Seed(aliceSeedPhrase); +// base58 payment code +const alicePaymentCode = aliceBip47.getSerializedPaymentCode(); +// P2PKH notification address +const aliceNotificationAddress = aliceBip47.getNotificationAddress(); +// bip47 from payment code +const bobPublicBip47 = (0, _1.default)(ecc).fromPaymentCode(bobPaymentCode); +// third payment address from alice to bob +const paymentAddress = aliceBip47.getPaymentAddress(bobPublicBip47.getPaymentCodeNode(), 2); +// bob private bip47 +const bobPrivateBip47 = (0, _1.default)(ecc).fromBip39Seed(bobSeedPhrase); +// third alice to bob wallet (bip32) +const wallet = bobPrivateBip47.getPaymentWallet(aliceBip47.getPaymentCodeNode(), 2); +// third wallet private key +const privateKey = (_a = wallet.privateKey) === null || _a === void 0 ? void 0 : _a.toString('hex'); +// examples of how to generate blinded payment code +// and retrieving payment code from notification transaction +// can be found in tests diff --git a/tests/bip47.test.ts b/tests/bip47.test.ts index 408cfa9..a2bcc59 100644 --- a/tests/bip47.test.ts +++ b/tests/bip47.test.ts @@ -130,5 +130,6 @@ describe('Notification Transaction and blinded payment code exchange', () => { ); expect(p).to.equal(alice.paymentCode); - }); + }) + }); diff --git a/ts-src/test.ts b/ts-src/test.ts new file mode 100644 index 0000000..9b3ac0f --- /dev/null +++ b/ts-src/test.ts @@ -0,0 +1,37 @@ +import ECPairFactory from 'ecpair'; +import * as ecc from 'tiny-secp256k1'; +import BIP47Factory from '.'; +// You must wrap a tiny-secp256k1 compatible implementation +const ECPair = ECPairFactory(ecc); + +const aliceSeedPhrase = 'response seminar brave tip suit recall often sound stick owner lottery motion'; +const bobSeedPhrase = 'reward upper indicate eight swift arch injury crystal super wrestle already dentist'; +const bobPaymentCode = 'PM8TJS2JxQ5ztXUpBBRnpTbcUXbUHy2T1abfrb3KkAAtMEGNbey4oumH7Hc578WgQJhPjBxteQ5GHHToTYHE3A1w6p7tU6KSoFmWBVbFGjKPisZDbP97'; + +// alice private bip47 +const aliceBip47 = BIP47Factory(ecc).fromBip39Seed(aliceSeedPhrase); + +// base58 payment code +const alicePaymentCode = aliceBip47.getSerializedPaymentCode(); + +// P2PKH notification address +const aliceNotificationAddress = aliceBip47.getNotificationAddress(); + +// bip47 from payment code +const bobPublicBip47 = BIP47Factory(ecc).fromPaymentCode(bobPaymentCode); + +// third payment address from alice to bob +const paymentAddress = aliceBip47.getPaymentAddress(bobPublicBip47.getPaymentCodeNode(), 2); + +// bob private bip47 +const bobPrivateBip47 = BIP47Factory(ecc).fromBip39Seed(bobSeedPhrase); + +// third alice to bob wallet (bip32) +const wallet = bobPrivateBip47.getPaymentWallet(aliceBip47.getPaymentCodeNode(), 2); + +// third wallet private key +const privateKey = wallet.privateKey?.toString('hex'); + +// examples of how to generate blinded payment code +// and retrieving payment code from notification transaction +// can be found in tests \ No newline at end of file diff --git a/types/test.d.ts b/types/test.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/types/test.d.ts @@ -0,0 +1 @@ +export {};