UNPKG

@blockchain-api/bitcoin-js

Version:
145 lines (128 loc) 7.54 kB
import { generateAddressFromMnemonic, generateAddressFromPrivatekey, generateAddressFromXPub, generatePrivateKeyFromMnemonic, generateWallet, isValidAddress } from './litecoin' const mnemonic = 'coyote nephew stable ghost enroll tunnel dizzy endorse garden know device funny swamp rural engine' const accountExtPubkey = 'Ltub2YgNNRVJAvGHYyvZqSFVbb73v6jnXMnU9VJhrBwxSeRHXsUNqegpPq12FDFYybZLKwGZuCtx4bf7D32y9ZMDKXAEPnHS6MjzcRXmZXp78Jw' const accountExtPrivatekey = 'Ltpv77W2me4kvmjKw7Djapm7X1GqUY3bT7Dp4yCgBDBfWTdgwWHJWjePPDtkzrZ2FPm16B1co8ENtmHakheXgVB5ffTDjFgN1ZxTqPjtvJC8YWA' const bip32ExtPubkey = 'Ltub2bDtZaeowggvhcNCFQXvxrGEoUriPDgcsQKqC5MobLPzS2PQT5UTEXSX9Xhd1gcxghJhrAieNpXDbpvs5KwGVhkZxQS7KJAZaY5S7yNUp9R' const bip32ExtPrivatekey = 'Ltpv7A3YxoEGhY9y5jfMzo3YtGS2MvAXJy7xntDoX6bWf9cPqfCL8AS2DvLFuBmZAHjp7VGgBQULyiq3nuSZcVowUj5yWkQrKVGC8dirncGT8d7' const privateKeyBip44AddressIndex0 = 'T4CJrLRH2G5MsQtuWvhrVgBHmmpZWXpZejjg7UNZPdk9fmjJmCMZ' const bip44AddressIndex0 = 'LabEVyQx4VddXo9pSRZpdNfUDXFDDw6LnT' const bip49AddressIndex0 = 'MGwqamWhrJcX3ssGZhRr3iJdRTjjKqfoih' const bip84AddressIndex0 = 'ltc1qklu4tuxy0zvyt8642fv9heg4qyxjdfc9wgcmh8' const bip141AddressIndex0 = 'MEyeKymZ8oyPbmNG1z8CXEr3PPC1ak1EAo' const testnetAccountExtPubkey = 'tpubDCVKQML6TxHkPdWmtBWEHitrf9Gy24w7Ws8u4WoMfRG8mPT5ByjYfwhWgCMPJFqKgbPFVFmeBWiuZbt7y9tbUaR7ZzZca9dw8wbxg5yk2E1' const testnetAccountExtPrivatekey = 'tprv8foHFwHrKac5WAUyzXqdtKEk67m2rjkCwZY7mzm4F9TjvuCJZauxVT5eW3VXje9PxNyee7CQjXqDgvzARLUzDgECWUfHzeKEXsKdWyHpixx' const testnetBip32ExtPubkey = 'tpubDEh1QwGhPMp5PNWMzFF3shrWYN5saSmCJbKS1unFoQZ3QoAX1mxPB9243SjSEq81s9MB5p8hLbUp4EzkomV8GE6yfvPXtWse2QccAz1nG3B' const testnetBip32ExtPrivatekey = 'tprv8hzyGXETEz8QVuUa6baTUJCPyLZwR7aHjHiejPjxP8keaJukPP8nzeQBsLSDLyqrGfb476xou2RNjwt2oHrTUQMYGpBhVVEPMpVYBqR3x5a' const testnetPrivateKeyBip44AddressIndex0 = 'cPcq1pg1in22EJeqNWuFchjvY2w6s27uiGbyKA1p1M1nVNyddK6R' const testnetBip44AddressIndex0 = 'mxTP99tk8fhepLXLExQfYErG9RugtZwdu6' const testnetBip49AddressIndex0 = '2N47TPxbUFNUjFVtwyJy9aB79KXg2vbPvf2' const testnetBip84AddressIndex0 = 'litecointestnet1q7tej0qx4k2yeg46cwdjaz57thhlqf42r4tvac5' const testnetBip141AddressIndex0 = '2MzKi5qHco9dK13iubEkjKYauH2ojQWXn8e' describe('mainnet', () => { const network = "mainnet" test('generateWallet', async () => { const wallet = await generateWallet(network, mnemonic) expect(wallet.mnemonic).toBe(mnemonic) expect(wallet.accountExtPubkey).toBe(accountExtPubkey) expect(wallet.accountExtPrivatekey).toBe(accountExtPrivatekey) expect(wallet.bip32ExtPubkey).toBe(bip32ExtPubkey) expect(wallet.bip32ExtPrivatekey).toBe(bip32ExtPrivatekey) }); test('generateAddressFromMnemonic', async () => { const address = await generateAddressFromMnemonic(network, mnemonic, 0) expect(address).toBe(bip44AddressIndex0) }); test('generateAddressFromPrivatekey', async () => { const address = generateAddressFromPrivatekey(network, privateKeyBip44AddressIndex0) expect(address).toBe(bip44AddressIndex0) }); test('generatePrivateKeyFromMnemonic', async () => { const privateKey = await generatePrivateKeyFromMnemonic(network, mnemonic, 0) expect(privateKey).toBe(privateKeyBip44AddressIndex0) }); test('generateAddressFromXPub', async () => { const address = generateAddressFromXPub(network, bip32ExtPubkey, 0) expect(address).toBe(bip44AddressIndex0) }); test('isValidAddress', async () => { const address1 = bip44AddressIndex0 const checkValidAddress1 = isValidAddress(network, address1) const address2 = bip49AddressIndex0 const checkValidAddress2 = isValidAddress(network, address2) const address3 = bip84AddressIndex0 const checkValidAddress3 = isValidAddress(network, address3) const address4 = bip141AddressIndex0 const checkValidAddress4 = isValidAddress(network, address4) const address5 = testnetBip44AddressIndex0 const checkValidAddress5 = isValidAddress(network, address5) expect(checkValidAddress1).toBe(true) expect(checkValidAddress2).toBe(true) expect(checkValidAddress3).toBe(true) expect(checkValidAddress4).toBe(true) expect(checkValidAddress5).toBe(false) }); }) describe('testnet', () => { const network = "testnet" test('generateWallet', async () => { const wallet = await generateWallet(network, mnemonic) expect(wallet.mnemonic).toBe(mnemonic) expect(wallet.accountExtPubkey).toBe(testnetAccountExtPubkey) expect(wallet.accountExtPrivatekey).toBe(testnetAccountExtPrivatekey) expect(wallet.bip32ExtPubkey).toBe(testnetBip32ExtPubkey) expect(wallet.bip32ExtPrivatekey).toBe(testnetBip32ExtPrivatekey) }); test('generateAddressFromMnemonic', async () => { const address = await generateAddressFromMnemonic(network, mnemonic, 0) expect(address).toBe(testnetBip44AddressIndex0) }); test('generateAddressFromPrivatekey', async () => { const address = generateAddressFromPrivatekey(network, testnetPrivateKeyBip44AddressIndex0) expect(address).toBe(testnetBip44AddressIndex0) }); test('generatePrivateKeyFromMnemonic', async () => { const privateKey = await generatePrivateKeyFromMnemonic(network, mnemonic, 0) expect(privateKey).toBe(testnetPrivateKeyBip44AddressIndex0) }); test('generateAddressFromXPub', async () => { const address = generateAddressFromXPub(network, testnetBip32ExtPubkey, 0) expect(address).toBe(testnetBip44AddressIndex0) }); test('isValidAddress', async () => { const address1 = testnetBip44AddressIndex0 const checkValidAddress1 = isValidAddress(network, address1) const address2 = testnetBip49AddressIndex0 const checkValidAddress2 = isValidAddress(network, address2) const address3 = testnetBip84AddressIndex0 const checkValidAddress3 = isValidAddress(network, address3) const address4 = testnetBip141AddressIndex0 const checkValidAddress4 = isValidAddress(network, address4) const address5 = bip44AddressIndex0 const checkValidAddress5 = isValidAddress(network, address5) expect(checkValidAddress1).toBe(true) expect(checkValidAddress2).toBe(true) expect(checkValidAddress3).toBe(true) expect(checkValidAddress4).toBe(true) expect(checkValidAddress5).toBe(false) }); }) // describe('transaction', () => { // test('signTxOffline by address', async () => { // const outputs = [{ // txHash: '0c6b596c8d77ef84b9d75f0978e0a8add3464712c356f06f234564498501131e', // index: 0, // script: 'a9143e410755b5375e8fdf9bd0f4ee944f22c7c2060587', // value: 5000661330 // } as UTXO] // signTxOffline("mainnet", outputs, privateKeyBip44AddressIndex0, bip44AddressIndex0, 0.001) // }); // test('signTxOffline by address testnet', async () => { // const outputs = [{ // txHash: 'e1433822a5df48c21bc68de00efbd9c7e5c3d0857ccf9d045c1baf7c50d515a3', // index: 0, // script: 'a9143e410755b5375e8fdf9bd0f4ee944f22c7c2060587', // value: 3796821615 // } as UTXO] // signTxOffline("testnet", outputs, testnetPrivateKeyBip44AddressIndex0, testnetBip44AddressIndex0, 0.001) // }); // })