[BREAKGLASS] bip47 core utility functions
Go to file
zkfriendly df82345409
Merge pull request #9 from BlueWallet/main
feat: create receiver wallet for easier support sending to counterparty's segwit addresses
2024-04-30 10:31:53 +02:00
src feat: create receiver wallet for easier support sending to counterparty's segwit addresses 2024-04-26 23:11:52 +01:00
tests fix: downgrade tiny-secp256k1 and remove xOnlyPointFromPoint 2022-12-11 11:39:23 -05:00
ts-src feat: create receiver wallet for easier support sending to counterparty's segwit addresses 2024-04-26 23:11:52 +01:00
types feat: create receiver wallet for easier support sending to counterparty's segwit addresses 2024-04-26 23:11:52 +01:00
.gitignore refactor code and project structure 2022-03-09 01:22:11 +03:30
.prettierignore refactor code and project structure 2022-03-09 01:22:11 +03:30
.prettierrc.json refactor code and project structure 2022-03-09 01:22:11 +03:30
LICENSE refactor code and project structure 2022-03-09 01:22:11 +03:30
package-lock.json chore: update package-lock.json 2022-12-12 22:14:44 -05:00
package.json chore: v1.0.1 2022-12-11 11:43:48 -05:00
README.md example codes in readme 2022-03-26 07:08:40 -07:00
tsconfig.json fix: downgrade tiny-secp256k1 and remove xOnlyPointFromPoint 2022-12-11 11:39:23 -05:00
tslint.json refactor code and project structure 2022-03-09 01:22:11 +03:30

BIP-47 Reusable Payment Codes

A BIP47 compatible library written in TypeScript with transpiled JavaScript committed to git.

Examples

typescript

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

see tests for more examples.

Supported Functionality

  • generate payment code from seed phrase or seed hex
  • generate payment addresses
  • generate notification address from payment code
  • generate receiving addresses/privateKeys for a payment code
  • generate blinded payment code for notification transaction
  • retrieve payment code from raw notification transaction

Reference

BIP-47

BIP-47 Test Vectors

Donations

We appreciate your donations if you found this repository useful :)

paynym.is/+frostydarkness08a