@btc-vision/transaction 1.6.19 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/browser/index.js +1 -1
  2. package/browser/index.js.LICENSE.txt +2 -0
  3. package/browser/src/_version.d.ts +1 -0
  4. package/browser/{epoch → src/epoch}/interfaces/IChallengeSolution.d.ts +2 -0
  5. package/browser/{keypair → src/keypair}/Address.d.ts +7 -4
  6. package/browser/{keypair → src/keypair}/AddressVerificator.d.ts +3 -0
  7. package/browser/{keypair → src/keypair}/EcKeyPair.d.ts +3 -2
  8. package/browser/{keypair → src/keypair}/MessageSigner.d.ts +9 -0
  9. package/browser/src/keypair/Wallet.d.ts +47 -0
  10. package/browser/{keypair → src/keypair}/interfaces/IWallet.d.ts +2 -0
  11. package/browser/src/mnemonic/BIPStandard.d.ts +8 -0
  12. package/browser/src/mnemonic/Mnemonic.d.ts +34 -0
  13. package/browser/src/mnemonic/MnemonicStrength.d.ts +7 -0
  14. package/browser/{opnet.d.ts → src/opnet.d.ts} +5 -0
  15. package/browser/src/transaction/browser/types/OPWallet.d.ts +14 -0
  16. package/browser/test/address.test.d.ts +1 -0
  17. package/browser/test/addressverificator-mldsa.test.d.ts +1 -0
  18. package/browser/test/derivePath.test.d.ts +1 -0
  19. package/browser/test/messagesigner-mldsa.test.d.ts +1 -0
  20. package/browser/test/messagesigner-schnorr.test.d.ts +1 -0
  21. package/browser/test/network-awareness.test.d.ts +1 -0
  22. package/build/_version.d.ts +1 -1
  23. package/build/_version.js +1 -1
  24. package/build/crypto/crypto-browser.d.ts +11 -0
  25. package/build/crypto/crypto-browser.js +56 -0
  26. package/build/epoch/ChallengeSolution.js +3 -2
  27. package/build/epoch/interfaces/IChallengeSolution.d.ts +2 -0
  28. package/build/keypair/Address.d.ts +7 -4
  29. package/build/keypair/Address.js +88 -37
  30. package/build/keypair/AddressVerificator.d.ts +3 -0
  31. package/build/keypair/AddressVerificator.js +49 -1
  32. package/build/keypair/EcKeyPair.d.ts +3 -2
  33. package/build/keypair/EcKeyPair.js +17 -3
  34. package/build/keypair/MessageSigner.d.ts +9 -0
  35. package/build/keypair/MessageSigner.js +23 -0
  36. package/build/keypair/Wallet.d.ts +20 -3
  37. package/build/keypair/Wallet.js +108 -9
  38. package/build/keypair/interfaces/IWallet.d.ts +2 -0
  39. package/build/mnemonic/BIPStandard.d.ts +8 -0
  40. package/build/mnemonic/BIPStandard.js +24 -0
  41. package/build/mnemonic/Mnemonic.d.ts +34 -0
  42. package/build/mnemonic/Mnemonic.js +140 -0
  43. package/build/mnemonic/MnemonicStrength.d.ts +7 -0
  44. package/build/mnemonic/MnemonicStrength.js +8 -0
  45. package/build/opnet.d.ts +5 -0
  46. package/build/opnet.js +5 -0
  47. package/build/transaction/browser/types/OPWallet.d.ts +14 -0
  48. package/build/transaction/browser/types/OPWallet.js +6 -0
  49. package/documentation/README.md +32 -0
  50. package/documentation/quantum-support/01-introduction.md +88 -0
  51. package/documentation/quantum-support/02-mnemonic-and-wallet.md +445 -0
  52. package/documentation/quantum-support/03-address-generation.md +329 -0
  53. package/documentation/quantum-support/04-message-signing.md +623 -0
  54. package/documentation/quantum-support/05-address-verification.md +307 -0
  55. package/documentation/quantum-support/README.md +65 -0
  56. package/gulpfile.js +2 -2
  57. package/package.json +25 -17
  58. package/src/_version.ts +1 -1
  59. package/src/epoch/ChallengeSolution.ts +3 -2
  60. package/src/epoch/interfaces/IChallengeSolution.ts +2 -0
  61. package/src/keypair/Address.ts +145 -43
  62. package/src/keypair/AddressVerificator.ts +87 -2
  63. package/src/keypair/EcKeyPair.ts +58 -6
  64. package/src/keypair/MessageSigner.ts +58 -0
  65. package/src/keypair/Wallet.ts +339 -57
  66. package/src/keypair/interfaces/IWallet.ts +13 -3
  67. package/src/mnemonic/BIPStandard.ts +92 -0
  68. package/src/mnemonic/Mnemonic.ts +465 -0
  69. package/src/mnemonic/MnemonicStrength.ts +12 -0
  70. package/src/network/ChainId.ts +1 -4
  71. package/src/opnet.ts +17 -0
  72. package/src/transaction/browser/types/OPWallet.ts +73 -0
  73. package/test/address.test.ts +1068 -0
  74. package/test/addressverificator-mldsa.test.ts +473 -0
  75. package/test/derivePath.test.ts +513 -0
  76. package/test/messagesigner-mldsa.test.ts +1060 -0
  77. package/test/messagesigner-schnorr.test.ts +1011 -0
  78. package/test/network-awareness.test.ts +163 -0
  79. package/tsconfig.json +1 -1
  80. package/vitest.config.ts +21 -0
  81. package/browser/_version.d.ts +0 -1
  82. package/browser/keypair/Wallet.d.ts +0 -30
  83. package/doc/README.md +0 -0
  84. /package/browser/{abi → src/abi}/ABICoder.d.ts +0 -0
  85. /package/browser/{buffer → src/buffer}/BinaryReader.d.ts +0 -0
  86. /package/browser/{buffer → src/buffer}/BinaryWriter.d.ts +0 -0
  87. /package/browser/{bytecode → src/bytecode}/Compressor.d.ts +0 -0
  88. /package/browser/{consensus → src/consensus}/Consensus.d.ts +0 -0
  89. /package/browser/{consensus → src/consensus}/ConsensusConfig.d.ts +0 -0
  90. /package/browser/{consensus → src/consensus}/metadata/RoswellConsensus.d.ts +0 -0
  91. /package/browser/{crypto → src/crypto}/crypto-browser.d.ts +0 -0
  92. /package/browser/{crypto → src/crypto}/crypto.d.ts +0 -0
  93. /package/browser/{deterministic → src/deterministic}/AddressMap.d.ts +0 -0
  94. /package/browser/{deterministic → src/deterministic}/AddressSet.d.ts +0 -0
  95. /package/browser/{deterministic → src/deterministic}/DeterministicMap.d.ts +0 -0
  96. /package/browser/{deterministic → src/deterministic}/DeterministicSet.d.ts +0 -0
  97. /package/browser/{deterministic → src/deterministic}/Map.d.ts +0 -0
  98. /package/browser/{epoch → src/epoch}/ChallengeSolution.d.ts +0 -0
  99. /package/browser/{epoch → src/epoch}/validator/EpochValidator.d.ts +0 -0
  100. /package/browser/{event → src/event}/NetEvent.d.ts +0 -0
  101. /package/browser/{generators → src/generators}/AddressGenerator.d.ts +0 -0
  102. /package/browser/{generators → src/generators}/Features.d.ts +0 -0
  103. /package/browser/{generators → src/generators}/Generator.d.ts +0 -0
  104. /package/browser/{generators → src/generators}/builders/CalldataGenerator.d.ts +0 -0
  105. /package/browser/{generators → src/generators}/builders/CustomGenerator.d.ts +0 -0
  106. /package/browser/{generators → src/generators}/builders/DeploymentGenerator.d.ts +0 -0
  107. /package/browser/{generators → src/generators}/builders/LegacyCalldataGenerator.d.ts +0 -0
  108. /package/browser/{generators → src/generators}/builders/MultiSignGenerator.d.ts +0 -0
  109. /package/browser/{generators → src/generators}/builders/P2WDAGenerator.d.ts +0 -0
  110. /package/browser/{index.d.ts → src/index.d.ts} +0 -0
  111. /package/browser/{keypair → src/keypair}/Secp256k1PointDeriver.d.ts +0 -0
  112. /package/browser/{metadata → src/metadata}/ContractBaseMetadata.d.ts +0 -0
  113. /package/browser/{metadata → src/metadata}/tokens.d.ts +0 -0
  114. /package/browser/{network → src/network}/ChainId.d.ts +0 -0
  115. /package/browser/{p2wda → src/p2wda}/P2WDADetector.d.ts +0 -0
  116. /package/browser/{signer → src/signer}/SignerUtils.d.ts +0 -0
  117. /package/browser/{signer → src/signer}/TweakedSigner.d.ts +0 -0
  118. /package/browser/{transaction → src/transaction}/ContractAddress.d.ts +0 -0
  119. /package/browser/{transaction → src/transaction}/TransactionFactory.d.ts +0 -0
  120. /package/browser/{transaction → src/transaction}/browser/BrowserSignerBase.d.ts +0 -0
  121. /package/browser/{transaction → src/transaction}/browser/Web3Provider.d.ts +0 -0
  122. /package/browser/{transaction → src/transaction}/browser/extensions/UnisatSigner.d.ts +0 -0
  123. /package/browser/{transaction → src/transaction}/browser/extensions/XverseSigner.d.ts +0 -0
  124. /package/browser/{transaction → src/transaction}/browser/types/Unisat.d.ts +0 -0
  125. /package/browser/{transaction → src/transaction}/browser/types/Xverse.d.ts +0 -0
  126. /package/browser/{transaction → src/transaction}/builders/CancelTransaction.d.ts +0 -0
  127. /package/browser/{transaction → src/transaction}/builders/ChallengeSolutionTransaction.d.ts +0 -0
  128. /package/browser/{transaction → src/transaction}/builders/CustomScriptTransaction.d.ts +0 -0
  129. /package/browser/{transaction → src/transaction}/builders/DeploymentTransaction.d.ts +0 -0
  130. /package/browser/{transaction → src/transaction}/builders/FundingTransaction.d.ts +0 -0
  131. /package/browser/{transaction → src/transaction}/builders/InteractionTransaction.d.ts +0 -0
  132. /package/browser/{transaction → src/transaction}/builders/InteractionTransactionP2WDA.d.ts +0 -0
  133. /package/browser/{transaction → src/transaction}/builders/MultiSignTransaction.d.ts +0 -0
  134. /package/browser/{transaction → src/transaction}/builders/SharedInteractionTransaction.d.ts +0 -0
  135. /package/browser/{transaction → src/transaction}/builders/TransactionBuilder.d.ts +0 -0
  136. /package/browser/{transaction → src/transaction}/enums/TransactionType.d.ts +0 -0
  137. /package/browser/{transaction → src/transaction}/interfaces/ITransactionParameters.d.ts +0 -0
  138. /package/browser/{transaction → src/transaction}/interfaces/Tap.d.ts +0 -0
  139. /package/browser/{transaction → src/transaction}/mineable/IP2WSHAddress.d.ts +0 -0
  140. /package/browser/{transaction → src/transaction}/mineable/TimelockGenerator.d.ts +0 -0
  141. /package/browser/{transaction → src/transaction}/processor/PsbtTransaction.d.ts +0 -0
  142. /package/browser/{transaction → src/transaction}/psbt/PSBTTypes.d.ts +0 -0
  143. /package/browser/{transaction → src/transaction}/shared/P2TR_MS.d.ts +0 -0
  144. /package/browser/{transaction → src/transaction}/shared/TweakedTransaction.d.ts +0 -0
  145. /package/browser/{utils → src/utils}/BitcoinUtils.d.ts +0 -0
  146. /package/browser/{utils → src/utils}/BufferHelper.d.ts +0 -0
  147. /package/browser/{utils → src/utils}/StringToBuffer.d.ts +0 -0
  148. /package/browser/{utils → src/utils}/lengths.d.ts +0 -0
  149. /package/browser/{utils → src/utils}/types.d.ts +0 -0
  150. /package/browser/{utxo → src/utxo}/OPNetLimitedProvider.d.ts +0 -0
  151. /package/browser/{utxo → src/utxo}/interfaces/BroadcastResponse.d.ts +0 -0
  152. /package/browser/{utxo → src/utxo}/interfaces/IUTXO.d.ts +0 -0
  153. /package/browser/{verification → src/verification}/TapscriptVerificator.d.ts +0 -0
  154. /package/{doc → documentation}/addresses/P2OP.md +0 -0
  155. /package/{doc → documentation}/addresses/P2WDA.md +0 -0
@@ -0,0 +1,163 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { MLDSASecurityLevel, Mnemonic } from '../build/opnet.js';
3
+ import { networks } from '@btc-vision/bitcoin';
4
+
5
+ describe('Network Awareness', () => {
6
+ const testMnemonic =
7
+ 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
8
+
9
+ describe('Mnemonic network awareness', () => {
10
+ it('should derive different classical keys for different networks', () => {
11
+ const mnemonicMainnet = new Mnemonic(
12
+ testMnemonic,
13
+ '',
14
+ networks.bitcoin,
15
+ MLDSASecurityLevel.LEVEL2,
16
+ );
17
+ const mnemonicTestnet = new Mnemonic(
18
+ testMnemonic,
19
+ '',
20
+ networks.testnet,
21
+ MLDSASecurityLevel.LEVEL2,
22
+ );
23
+
24
+ const walletMainnet = mnemonicMainnet.derive(0);
25
+ const walletTestnet = mnemonicTestnet.derive(0);
26
+
27
+ // Classical private keys should be different
28
+ expect(walletMainnet.toPrivateKeyHex()).not.toBe(walletTestnet.toPrivateKeyHex());
29
+ });
30
+
31
+ it('should derive different quantum keys for different networks', () => {
32
+ const mnemonicMainnet = new Mnemonic(
33
+ testMnemonic,
34
+ '',
35
+ networks.bitcoin,
36
+ MLDSASecurityLevel.LEVEL2,
37
+ );
38
+ const mnemonicTestnet = new Mnemonic(
39
+ testMnemonic,
40
+ '',
41
+ networks.testnet,
42
+ MLDSASecurityLevel.LEVEL2,
43
+ );
44
+
45
+ const walletMainnet = mnemonicMainnet.derive(0);
46
+ const walletTestnet = mnemonicTestnet.derive(0);
47
+
48
+ // Quantum private keys should be different
49
+ expect(walletMainnet.quantumPrivateKeyHex).not.toBe(walletTestnet.quantumPrivateKeyHex);
50
+ });
51
+
52
+ it('should generate correct address prefixes for mainnet', () => {
53
+ const mnemonic = new Mnemonic(
54
+ testMnemonic,
55
+ '',
56
+ networks.bitcoin,
57
+ MLDSASecurityLevel.LEVEL2,
58
+ );
59
+ const wallet = mnemonic.derive(0);
60
+
61
+ expect(wallet.p2tr).toMatch(/^bc1/);
62
+ expect(wallet.p2wpkh).toMatch(/^bc1/);
63
+ });
64
+
65
+ it('should generate correct address prefixes for testnet', () => {
66
+ const mnemonic = new Mnemonic(
67
+ testMnemonic,
68
+ '',
69
+ networks.testnet,
70
+ MLDSASecurityLevel.LEVEL2,
71
+ );
72
+ const wallet = mnemonic.derive(0);
73
+
74
+ expect(wallet.p2tr).toMatch(/^tb1/);
75
+ expect(wallet.p2wpkh).toMatch(/^tb1/);
76
+ });
77
+
78
+ it('should generate correct address prefixes for regtest', () => {
79
+ const mnemonic = new Mnemonic(
80
+ testMnemonic,
81
+ '',
82
+ networks.regtest,
83
+ MLDSASecurityLevel.LEVEL2,
84
+ );
85
+ const wallet = mnemonic.derive(0);
86
+
87
+ expect(wallet.p2tr).toMatch(/^bcrt1/);
88
+ expect(wallet.p2wpkh).toMatch(/^bcrt1/);
89
+ });
90
+ });
91
+
92
+ describe('Testnet and regtest parity', () => {
93
+ it('should derive same keys for testnet and regtest (BIP32 behavior)', () => {
94
+ const mnemonicTestnet = new Mnemonic(
95
+ testMnemonic,
96
+ '',
97
+ networks.testnet,
98
+ MLDSASecurityLevel.LEVEL2,
99
+ );
100
+ const mnemonicRegtest = new Mnemonic(
101
+ testMnemonic,
102
+ '',
103
+ networks.regtest,
104
+ MLDSASecurityLevel.LEVEL2,
105
+ );
106
+
107
+ const walletTestnet = mnemonicTestnet.derive(0);
108
+ const walletRegtest = mnemonicRegtest.derive(0);
109
+
110
+ // Testnet and regtest should have same private keys (BIP32 uses same version bytes)
111
+ expect(walletTestnet.toPrivateKeyHex()).toBe(walletRegtest.toPrivateKeyHex());
112
+ expect(walletTestnet.quantumPrivateKeyHex).toBe(walletRegtest.quantumPrivateKeyHex);
113
+
114
+ // But addresses should differ due to different prefixes
115
+ expect(walletTestnet.p2tr).not.toBe(walletRegtest.p2tr);
116
+ expect(walletTestnet.p2wpkh).not.toBe(walletRegtest.p2wpkh);
117
+ });
118
+ });
119
+
120
+ describe('Network preservation through derivation', () => {
121
+ it('should preserve mainnet through derivePath', () => {
122
+ const mnemonic = new Mnemonic(
123
+ testMnemonic,
124
+ '',
125
+ networks.bitcoin,
126
+ MLDSASecurityLevel.LEVEL2,
127
+ );
128
+ const parent = mnemonic.derive(0);
129
+ const child = parent.derivePath('m/0');
130
+
131
+ expect(child.network.bech32).toBe('bc');
132
+ expect(child.p2tr).toMatch(/^bc1/);
133
+ });
134
+
135
+ it('should preserve testnet through derivePath', () => {
136
+ const mnemonic = new Mnemonic(
137
+ testMnemonic,
138
+ '',
139
+ networks.testnet,
140
+ MLDSASecurityLevel.LEVEL2,
141
+ );
142
+ const parent = mnemonic.derive(0);
143
+ const child = parent.derivePath('m/0');
144
+
145
+ expect(child.network.bech32).toBe('tb');
146
+ expect(child.p2tr).toMatch(/^tb1/);
147
+ });
148
+
149
+ it('should preserve regtest through derivePath', () => {
150
+ const mnemonic = new Mnemonic(
151
+ testMnemonic,
152
+ '',
153
+ networks.regtest,
154
+ MLDSASecurityLevel.LEVEL2,
155
+ );
156
+ const parent = mnemonic.derive(0);
157
+ const child = parent.derivePath('m/0');
158
+
159
+ expect(child.network.bech32).toBe('bcrt');
160
+ expect(child.p2tr).toMatch(/^bcrt1/);
161
+ });
162
+ });
163
+ });
package/tsconfig.json CHANGED
@@ -10,6 +10,6 @@
10
10
  "skipLibCheck": true,
11
11
  "allowSyntheticDefaultImports": true
12
12
  },
13
- "include": ["src/**/*.ts"],
13
+ "include": ["src/**/*.ts", "test/**/*.ts"],
14
14
  "exclude": ["node_modules"]
15
15
  }
@@ -0,0 +1,21 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ globals: true,
6
+ environment: 'node',
7
+ include: ['test/**/*.test.ts', 'test/**/*.spec.ts'],
8
+ coverage: {
9
+ provider: 'v8',
10
+ reporter: ['text', 'json', 'html'],
11
+ exclude: [
12
+ 'node_modules/',
13
+ 'build/',
14
+ 'test/',
15
+ '**/*.d.ts',
16
+ '**/*.config.*',
17
+ '**/mockData',
18
+ ],
19
+ },
20
+ },
21
+ });
@@ -1 +0,0 @@
1
- export declare const version = "1.6.19";
@@ -1,30 +0,0 @@
1
- import { ECPairInterface } from 'ecpair';
2
- import { Network } from '@btc-vision/bitcoin';
3
- import { Address } from './Address.js';
4
- import { IP2WSHAddress } from '../transaction/mineable/IP2WSHAddress.js';
5
- export declare class Wallet {
6
- readonly network: Network;
7
- private readonly _keypair;
8
- private readonly _p2wpkh;
9
- private readonly _p2tr;
10
- private readonly _p2wda;
11
- private readonly _legacy;
12
- private readonly _segwitLegacy;
13
- private readonly _bufferPubKey;
14
- private readonly _tweakedKey;
15
- private readonly _address;
16
- constructor(privateKeyOrWif: string, network?: Network);
17
- get address(): Address;
18
- get tweakedPubKeyKey(): Buffer;
19
- get keypair(): ECPairInterface;
20
- get p2wpkh(): string;
21
- get p2tr(): string;
22
- get p2wda(): IP2WSHAddress;
23
- get legacy(): string;
24
- get addresses(): string[];
25
- get segwitLegacy(): string;
26
- get publicKey(): Buffer;
27
- get xOnly(): Buffer;
28
- static fromWif(wif: string, network?: Network): Wallet;
29
- static new(network?: Network): Wallet;
30
- }
package/doc/README.md DELETED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes