Skip to content

Commit

Permalink
example codes in readme
Browse files Browse the repository at this point in the history
  • Loading branch information
0xoc committed Mar 26, 2022
1 parent 065e088 commit 21f32dd
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 8 deletions.
33 changes: 26 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
30 changes: 30 additions & 0 deletions src/test.js
Original file line number Diff line number Diff line change
@@ -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
3 changes: 2 additions & 1 deletion tests/bip47.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -130,5 +130,6 @@ describe('Notification Transaction and blinded payment code exchange', () => {
);

expect(p).to.equal(alice.paymentCode);
});
})

});
37 changes: 37 additions & 0 deletions ts-src/test.ts
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions types/test.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export {};

0 comments on commit 21f32dd

Please sign in to comment.