@btc-vision/transaction 1.6.18 → 1.7.0

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 (141) 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/Mnemonic.d.ts +29 -0
  12. package/browser/src/mnemonic/MnemonicStrength.d.ts +7 -0
  13. package/browser/{opnet.d.ts → src/opnet.d.ts} +4 -0
  14. package/browser/src/transaction/browser/types/OPWallet.d.ts +14 -0
  15. package/browser/test/address.test.d.ts +1 -0
  16. package/browser/test/addressverificator-mldsa.test.d.ts +1 -0
  17. package/browser/test/derivePath.test.d.ts +1 -0
  18. package/browser/test/messagesigner-mldsa.test.d.ts +1 -0
  19. package/browser/test/messagesigner-schnorr.test.d.ts +1 -0
  20. package/browser/test/network-awareness.test.d.ts +1 -0
  21. package/build/_version.d.ts +1 -1
  22. package/build/_version.js +1 -1
  23. package/build/crypto/crypto-browser.d.ts +11 -0
  24. package/build/crypto/crypto-browser.js +56 -0
  25. package/build/epoch/ChallengeSolution.js +3 -2
  26. package/build/epoch/interfaces/IChallengeSolution.d.ts +2 -0
  27. package/build/keypair/Address.d.ts +7 -4
  28. package/build/keypair/Address.js +88 -37
  29. package/build/keypair/AddressVerificator.d.ts +3 -0
  30. package/build/keypair/AddressVerificator.js +49 -1
  31. package/build/keypair/EcKeyPair.d.ts +3 -2
  32. package/build/keypair/EcKeyPair.js +17 -3
  33. package/build/keypair/MessageSigner.d.ts +9 -0
  34. package/build/keypair/MessageSigner.js +23 -0
  35. package/build/keypair/Wallet.d.ts +20 -3
  36. package/build/keypair/Wallet.js +108 -9
  37. package/build/keypair/interfaces/IWallet.d.ts +2 -0
  38. package/build/mnemonic/Mnemonic.d.ts +29 -0
  39. package/build/mnemonic/Mnemonic.js +98 -0
  40. package/build/mnemonic/MnemonicStrength.d.ts +7 -0
  41. package/build/mnemonic/MnemonicStrength.js +8 -0
  42. package/build/opnet.d.ts +4 -0
  43. package/build/opnet.js +4 -0
  44. package/build/transaction/browser/types/OPWallet.d.ts +14 -0
  45. package/build/transaction/browser/types/OPWallet.js +6 -0
  46. package/gulpfile.js +2 -2
  47. package/package.json +28 -20
  48. package/src/_version.ts +1 -1
  49. package/src/epoch/ChallengeSolution.ts +3 -2
  50. package/src/epoch/interfaces/IChallengeSolution.ts +2 -0
  51. package/src/keypair/Address.ts +145 -43
  52. package/src/keypair/AddressVerificator.ts +87 -2
  53. package/src/keypair/EcKeyPair.ts +58 -6
  54. package/src/keypair/MessageSigner.ts +58 -0
  55. package/src/keypair/Wallet.ts +339 -57
  56. package/src/keypair/interfaces/IWallet.ts +13 -3
  57. package/src/mnemonic/Mnemonic.ts +340 -0
  58. package/src/mnemonic/MnemonicStrength.ts +12 -0
  59. package/src/network/ChainId.ts +1 -4
  60. package/src/opnet.ts +16 -0
  61. package/src/transaction/browser/types/OPWallet.ts +73 -0
  62. package/test/address.test.ts +1068 -0
  63. package/test/addressverificator-mldsa.test.ts +473 -0
  64. package/test/derivePath.test.ts +234 -0
  65. package/test/messagesigner-mldsa.test.ts +1060 -0
  66. package/test/messagesigner-schnorr.test.ts +1011 -0
  67. package/test/network-awareness.test.ts +163 -0
  68. package/tsconfig.json +1 -1
  69. package/vitest.config.ts +21 -0
  70. package/browser/_version.d.ts +0 -1
  71. package/browser/keypair/Wallet.d.ts +0 -30
  72. /package/browser/{abi → src/abi}/ABICoder.d.ts +0 -0
  73. /package/browser/{buffer → src/buffer}/BinaryReader.d.ts +0 -0
  74. /package/browser/{buffer → src/buffer}/BinaryWriter.d.ts +0 -0
  75. /package/browser/{bytecode → src/bytecode}/Compressor.d.ts +0 -0
  76. /package/browser/{consensus → src/consensus}/Consensus.d.ts +0 -0
  77. /package/browser/{consensus → src/consensus}/ConsensusConfig.d.ts +0 -0
  78. /package/browser/{consensus → src/consensus}/metadata/RoswellConsensus.d.ts +0 -0
  79. /package/browser/{crypto → src/crypto}/crypto-browser.d.ts +0 -0
  80. /package/browser/{crypto → src/crypto}/crypto.d.ts +0 -0
  81. /package/browser/{deterministic → src/deterministic}/AddressMap.d.ts +0 -0
  82. /package/browser/{deterministic → src/deterministic}/AddressSet.d.ts +0 -0
  83. /package/browser/{deterministic → src/deterministic}/DeterministicMap.d.ts +0 -0
  84. /package/browser/{deterministic → src/deterministic}/DeterministicSet.d.ts +0 -0
  85. /package/browser/{deterministic → src/deterministic}/Map.d.ts +0 -0
  86. /package/browser/{epoch → src/epoch}/ChallengeSolution.d.ts +0 -0
  87. /package/browser/{epoch → src/epoch}/validator/EpochValidator.d.ts +0 -0
  88. /package/browser/{event → src/event}/NetEvent.d.ts +0 -0
  89. /package/browser/{generators → src/generators}/AddressGenerator.d.ts +0 -0
  90. /package/browser/{generators → src/generators}/Features.d.ts +0 -0
  91. /package/browser/{generators → src/generators}/Generator.d.ts +0 -0
  92. /package/browser/{generators → src/generators}/builders/CalldataGenerator.d.ts +0 -0
  93. /package/browser/{generators → src/generators}/builders/CustomGenerator.d.ts +0 -0
  94. /package/browser/{generators → src/generators}/builders/DeploymentGenerator.d.ts +0 -0
  95. /package/browser/{generators → src/generators}/builders/LegacyCalldataGenerator.d.ts +0 -0
  96. /package/browser/{generators → src/generators}/builders/MultiSignGenerator.d.ts +0 -0
  97. /package/browser/{generators → src/generators}/builders/P2WDAGenerator.d.ts +0 -0
  98. /package/browser/{index.d.ts → src/index.d.ts} +0 -0
  99. /package/browser/{keypair → src/keypair}/Secp256k1PointDeriver.d.ts +0 -0
  100. /package/browser/{metadata → src/metadata}/ContractBaseMetadata.d.ts +0 -0
  101. /package/browser/{metadata → src/metadata}/tokens.d.ts +0 -0
  102. /package/browser/{network → src/network}/ChainId.d.ts +0 -0
  103. /package/browser/{p2wda → src/p2wda}/P2WDADetector.d.ts +0 -0
  104. /package/browser/{signer → src/signer}/SignerUtils.d.ts +0 -0
  105. /package/browser/{signer → src/signer}/TweakedSigner.d.ts +0 -0
  106. /package/browser/{transaction → src/transaction}/ContractAddress.d.ts +0 -0
  107. /package/browser/{transaction → src/transaction}/TransactionFactory.d.ts +0 -0
  108. /package/browser/{transaction → src/transaction}/browser/BrowserSignerBase.d.ts +0 -0
  109. /package/browser/{transaction → src/transaction}/browser/Web3Provider.d.ts +0 -0
  110. /package/browser/{transaction → src/transaction}/browser/extensions/UnisatSigner.d.ts +0 -0
  111. /package/browser/{transaction → src/transaction}/browser/extensions/XverseSigner.d.ts +0 -0
  112. /package/browser/{transaction → src/transaction}/browser/types/Unisat.d.ts +0 -0
  113. /package/browser/{transaction → src/transaction}/browser/types/Xverse.d.ts +0 -0
  114. /package/browser/{transaction → src/transaction}/builders/CancelTransaction.d.ts +0 -0
  115. /package/browser/{transaction → src/transaction}/builders/ChallengeSolutionTransaction.d.ts +0 -0
  116. /package/browser/{transaction → src/transaction}/builders/CustomScriptTransaction.d.ts +0 -0
  117. /package/browser/{transaction → src/transaction}/builders/DeploymentTransaction.d.ts +0 -0
  118. /package/browser/{transaction → src/transaction}/builders/FundingTransaction.d.ts +0 -0
  119. /package/browser/{transaction → src/transaction}/builders/InteractionTransaction.d.ts +0 -0
  120. /package/browser/{transaction → src/transaction}/builders/InteractionTransactionP2WDA.d.ts +0 -0
  121. /package/browser/{transaction → src/transaction}/builders/MultiSignTransaction.d.ts +0 -0
  122. /package/browser/{transaction → src/transaction}/builders/SharedInteractionTransaction.d.ts +0 -0
  123. /package/browser/{transaction → src/transaction}/builders/TransactionBuilder.d.ts +0 -0
  124. /package/browser/{transaction → src/transaction}/enums/TransactionType.d.ts +0 -0
  125. /package/browser/{transaction → src/transaction}/interfaces/ITransactionParameters.d.ts +0 -0
  126. /package/browser/{transaction → src/transaction}/interfaces/Tap.d.ts +0 -0
  127. /package/browser/{transaction → src/transaction}/mineable/IP2WSHAddress.d.ts +0 -0
  128. /package/browser/{transaction → src/transaction}/mineable/TimelockGenerator.d.ts +0 -0
  129. /package/browser/{transaction → src/transaction}/processor/PsbtTransaction.d.ts +0 -0
  130. /package/browser/{transaction → src/transaction}/psbt/PSBTTypes.d.ts +0 -0
  131. /package/browser/{transaction → src/transaction}/shared/P2TR_MS.d.ts +0 -0
  132. /package/browser/{transaction → src/transaction}/shared/TweakedTransaction.d.ts +0 -0
  133. /package/browser/{utils → src/utils}/BitcoinUtils.d.ts +0 -0
  134. /package/browser/{utils → src/utils}/BufferHelper.d.ts +0 -0
  135. /package/browser/{utils → src/utils}/StringToBuffer.d.ts +0 -0
  136. /package/browser/{utils → src/utils}/lengths.d.ts +0 -0
  137. /package/browser/{utils → src/utils}/types.d.ts +0 -0
  138. /package/browser/{utxo → src/utxo}/OPNetLimitedProvider.d.ts +0 -0
  139. /package/browser/{utxo → src/utxo}/interfaces/BroadcastResponse.d.ts +0 -0
  140. /package/browser/{utxo → src/utxo}/interfaces/IUTXO.d.ts +0 -0
  141. /package/browser/{verification → src/verification}/TapscriptVerificator.d.ts +0 -0
@@ -0,0 +1,29 @@
1
+ import { BIP32Interface, MLDSASecurityLevel, QuantumBIP32Interface } from '@btc-vision/bip32';
2
+ import { Network } from '@btc-vision/bitcoin';
3
+ import { Wallet } from '../keypair/Wallet.js';
4
+ import { MnemonicStrength } from './MnemonicStrength.js';
5
+ export declare class Mnemonic {
6
+ private readonly _phrase;
7
+ private readonly _passphrase;
8
+ private readonly _network;
9
+ private readonly _securityLevel;
10
+ private readonly _seed;
11
+ private readonly _classicalRoot;
12
+ private readonly _quantumRoot;
13
+ constructor(phrase: string, passphrase?: string, network?: Network, securityLevel?: MLDSASecurityLevel);
14
+ get phrase(): string;
15
+ get network(): Network;
16
+ get securityLevel(): MLDSASecurityLevel;
17
+ get seed(): Buffer;
18
+ static generatePhrase(strength?: MnemonicStrength): string;
19
+ static generate(strength?: MnemonicStrength, passphrase?: string, network?: Network, securityLevel?: MLDSASecurityLevel): Mnemonic;
20
+ static validate(phrase: string): boolean;
21
+ derive(index?: number, account?: number, isChange?: boolean): Wallet;
22
+ deriveMultiple(count: number, startIndex?: number, account?: number, isChange?: boolean): Wallet[];
23
+ deriveCustomPath(classicalPath: string, quantumPath: string): Wallet;
24
+ getClassicalRoot(): BIP32Interface;
25
+ getQuantumRoot(): QuantumBIP32Interface;
26
+ private buildClassicalPath;
27
+ private buildQuantumPath;
28
+ private getCoinType;
29
+ }
@@ -0,0 +1,98 @@
1
+ import * as bip39 from 'bip39';
2
+ import { BIP32Factory, MLDSASecurityLevel, QuantumBIP32Factory, } from '@btc-vision/bip32';
3
+ import * as ecc from '@bitcoinerlab/secp256k1';
4
+ import { initEccLib, networks } from '@btc-vision/bitcoin';
5
+ import { Wallet } from '../keypair/Wallet.js';
6
+ import { MnemonicStrength } from './MnemonicStrength.js';
7
+ initEccLib(ecc);
8
+ const bip32 = BIP32Factory(ecc);
9
+ export class Mnemonic {
10
+ constructor(phrase, passphrase = '', network = networks.bitcoin, securityLevel = MLDSASecurityLevel.LEVEL2) {
11
+ if (!bip39.validateMnemonic(phrase)) {
12
+ throw new Error('Invalid mnemonic phrase');
13
+ }
14
+ this._phrase = phrase;
15
+ this._passphrase = passphrase;
16
+ this._network = network;
17
+ this._securityLevel = securityLevel;
18
+ this._seed = bip39.mnemonicToSeedSync(this._phrase, this._passphrase);
19
+ this._classicalRoot = bip32.fromSeed(this._seed, this._network);
20
+ this._quantumRoot = QuantumBIP32Factory.fromSeed(this._seed, this._network, this._securityLevel);
21
+ }
22
+ get phrase() {
23
+ return this._phrase;
24
+ }
25
+ get network() {
26
+ return this._network;
27
+ }
28
+ get securityLevel() {
29
+ return this._securityLevel;
30
+ }
31
+ get seed() {
32
+ return Buffer.from(this._seed);
33
+ }
34
+ static generatePhrase(strength = MnemonicStrength.MAXIMUM) {
35
+ return bip39.generateMnemonic(strength);
36
+ }
37
+ static generate(strength = MnemonicStrength.MAXIMUM, passphrase = '', network = networks.bitcoin, securityLevel = MLDSASecurityLevel.LEVEL2) {
38
+ const phrase = bip39.generateMnemonic(strength);
39
+ return new Mnemonic(phrase, passphrase, network, securityLevel);
40
+ }
41
+ static validate(phrase) {
42
+ return bip39.validateMnemonic(phrase);
43
+ }
44
+ derive(index = 0, account = 0, isChange = false) {
45
+ const classicalPath = this.buildClassicalPath(account, index, isChange);
46
+ const classicalChild = this._classicalRoot.derivePath(classicalPath);
47
+ if (!classicalChild.privateKey) {
48
+ throw new Error(`Failed to derive classical private key at index ${index}`);
49
+ }
50
+ const quantumPath = this.buildQuantumPath(account, index, isChange);
51
+ const quantumChild = this._quantumRoot.derivePath(quantumPath);
52
+ if (!quantumChild.privateKey) {
53
+ throw new Error(`Failed to derive quantum private key at index ${index}`);
54
+ }
55
+ return new Wallet(Buffer.from(classicalChild.privateKey).toString('hex'), Buffer.from(quantumChild.privateKey).toString('hex'), this._network, this._securityLevel);
56
+ }
57
+ deriveMultiple(count, startIndex = 0, account = 0, isChange = false) {
58
+ const wallets = [];
59
+ for (let i = 0; i < count; i++) {
60
+ wallets.push(this.derive(startIndex + i, account, isChange));
61
+ }
62
+ return wallets;
63
+ }
64
+ deriveCustomPath(classicalPath, quantumPath) {
65
+ const classicalChild = this._classicalRoot.derivePath(classicalPath);
66
+ const quantumChild = this._quantumRoot.derivePath(quantumPath);
67
+ if (!classicalChild.privateKey) {
68
+ throw new Error(`Failed to derive classical private key at path ${classicalPath}`);
69
+ }
70
+ if (!quantumChild.privateKey) {
71
+ throw new Error(`Failed to derive quantum private key at path ${quantumPath}`);
72
+ }
73
+ return new Wallet(Buffer.from(classicalChild.privateKey).toString('hex'), Buffer.from(quantumChild.privateKey).toString('hex'), this._network, this._securityLevel);
74
+ }
75
+ getClassicalRoot() {
76
+ return this._classicalRoot;
77
+ }
78
+ getQuantumRoot() {
79
+ return this._quantumRoot;
80
+ }
81
+ buildClassicalPath(account, index, isChange) {
82
+ const coinType = this.getCoinType();
83
+ const change = isChange ? 1 : 0;
84
+ return `m/84'/${coinType}'/${account}'/${change}/${index}`;
85
+ }
86
+ buildQuantumPath(account, index, isChange) {
87
+ const coinType = this.getCoinType();
88
+ const change = isChange ? 1 : 0;
89
+ return `m/360'/${coinType}'/${account}'/${change}/${index}`;
90
+ }
91
+ getCoinType() {
92
+ if (this._network.bech32 === networks.testnet.bech32 ||
93
+ this._network.bech32 === networks.regtest.bech32) {
94
+ return 1;
95
+ }
96
+ return 0;
97
+ }
98
+ }
@@ -0,0 +1,7 @@
1
+ export declare enum MnemonicStrength {
2
+ MINIMUM = 128,
3
+ LOW = 160,
4
+ MEDIUM = 192,
5
+ HIGH = 224,
6
+ MAXIMUM = 256
7
+ }
@@ -0,0 +1,8 @@
1
+ export var MnemonicStrength;
2
+ (function (MnemonicStrength) {
3
+ MnemonicStrength[MnemonicStrength["MINIMUM"] = 128] = "MINIMUM";
4
+ MnemonicStrength[MnemonicStrength["LOW"] = 160] = "LOW";
5
+ MnemonicStrength[MnemonicStrength["MEDIUM"] = 192] = "MEDIUM";
6
+ MnemonicStrength[MnemonicStrength["HIGH"] = 224] = "HIGH";
7
+ MnemonicStrength[MnemonicStrength["MAXIMUM"] = 256] = "MAXIMUM";
8
+ })(MnemonicStrength || (MnemonicStrength = {}));
package/build/opnet.d.ts CHANGED
@@ -19,6 +19,9 @@ export * from './keypair/EcKeyPair.js';
19
19
  export * from './keypair/interfaces/IWallet.js';
20
20
  export * from './keypair/MessageSigner.js';
21
21
  export * from './keypair/Wallet.js';
22
+ export * from './mnemonic/Mnemonic.js';
23
+ export * from './mnemonic/MnemonicStrength.js';
24
+ export { MLDSASecurityLevel, MLDSAKeyPair, QuantumBIP32Interface, QuantumBIP32API, QuantumSigner, QuantumBIP32Factory, QuantumDerivationPath, } from '@btc-vision/bip32';
22
25
  export * from './metadata/ContractBaseMetadata.js';
23
26
  export * from './network/ChainId.js';
24
27
  export * from './signer/TweakedSigner.js';
@@ -66,6 +69,7 @@ export * from './transaction/browser/extensions/UnisatSigner.js';
66
69
  export * from './transaction/browser/extensions/XverseSigner.js';
67
70
  export * from './transaction/browser/types/Unisat.js';
68
71
  export * from './transaction/browser/types/Xverse.js';
72
+ export * from './transaction/browser/types/OPWallet.js';
69
73
  export * from './metadata/tokens.js';
70
74
  export * from './transaction/browser/Web3Provider.js';
71
75
  export * from './keypair/Secp256k1PointDeriver.js';
package/build/opnet.js CHANGED
@@ -18,6 +18,9 @@ export * from './keypair/EcKeyPair.js';
18
18
  export * from './keypair/interfaces/IWallet.js';
19
19
  export * from './keypair/MessageSigner.js';
20
20
  export * from './keypair/Wallet.js';
21
+ export * from './mnemonic/Mnemonic.js';
22
+ export * from './mnemonic/MnemonicStrength.js';
23
+ export { MLDSASecurityLevel, QuantumBIP32Factory, QuantumDerivationPath, } from '@btc-vision/bip32';
21
24
  export * from './metadata/ContractBaseMetadata.js';
22
25
  export * from './network/ChainId.js';
23
26
  export * from './signer/TweakedSigner.js';
@@ -65,6 +68,7 @@ export * from './transaction/browser/extensions/UnisatSigner.js';
65
68
  export * from './transaction/browser/extensions/XverseSigner.js';
66
69
  export * from './transaction/browser/types/Unisat.js';
67
70
  export * from './transaction/browser/types/Xverse.js';
71
+ export * from './transaction/browser/types/OPWallet.js';
68
72
  export * from './metadata/tokens.js';
69
73
  export * from './transaction/browser/Web3Provider.js';
70
74
  export * from './keypair/Secp256k1PointDeriver.js';
@@ -0,0 +1,14 @@
1
+ import { Unisat } from './Unisat.js';
2
+ import { MLDSASecurityLevel } from '@btc-vision/bip32';
3
+ export interface MLDSASignature {
4
+ readonly signature: string;
5
+ readonly publicKey: string;
6
+ readonly securityLevel: MLDSASecurityLevel;
7
+ readonly messageHash: string;
8
+ }
9
+ export interface OPWallet extends Unisat {
10
+ getMLDSAPublicKey(): Promise<string>;
11
+ signMLDSAMessage(message: string): Promise<MLDSASignature>;
12
+ verifyMLDSASignature(message: string, signature: MLDSASignature): Promise<boolean>;
13
+ }
14
+ export declare function isOPWallet(wallet: unknown): wallet is OPWallet;
@@ -0,0 +1,6 @@
1
+ export function isOPWallet(wallet) {
2
+ return (typeof wallet === 'object' &&
3
+ wallet !== null &&
4
+ 'getMLDSAPublicKey' in wallet &&
5
+ 'signMLDSAMessage' in wallet);
6
+ }
package/gulpfile.js CHANGED
@@ -13,8 +13,8 @@ process.on('uncaughtException', function (err) {
13
13
  const tsProject = ts.createProject('tsconfig.json');
14
14
 
15
15
  function buildESM() {
16
- return tsProject
17
- .src()
16
+ return gulp
17
+ .src(['src/**/*.ts', 'src/**/*.js', '!test/**/*'])
18
18
  .pipe(gulpcache('ts-esm'))
19
19
  .pipe(
20
20
  logger({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@btc-vision/transaction",
3
3
  "type": "module",
4
- "version": "1.6.18",
4
+ "version": "1.7.0",
5
5
  "author": "BlobMaster41",
6
6
  "description": "OPNet transaction library allows you to create and sign transactions for the OPNet network.",
7
7
  "engines": {
@@ -61,19 +61,24 @@
61
61
  "build": "gulp build",
62
62
  "setup": "npm i && npm run build",
63
63
  "browserBuild": "webpack --mode production",
64
- "docs": "typedoc --out docs --exclude 'src/tests/*.ts' --tsconfig tsconfig.json --readme README.md --name OPNet --plugin typedoc-material-theme --themeColor '#cb9820' --exclude src/tests/test.ts --exclude src/index.ts src"
64
+ "docs": "typedoc --out docs --exclude 'src/tests/*.ts' --tsconfig tsconfig.json --readme README.md --name OPNet --plugin typedoc-material-theme --themeColor '#cb9820' --exclude src/tests/test.ts --exclude src/index.ts src",
65
+ "test": "npm run build && vitest run",
66
+ "test:watch": "npm run build && vitest",
67
+ "test:ui": "npm run build && vitest --ui",
68
+ "test:coverage": "npm run build && vitest run --coverage"
65
69
  },
66
70
  "devDependencies": {
67
- "@babel/core": "^7.28.0",
71
+ "@babel/core": "^7.28.5",
68
72
  "@babel/plugin-proposal-class-properties": "^7.18.6",
69
- "@babel/plugin-transform-runtime": "^7.28.0",
70
- "@babel/preset-env": "^7.28.0",
73
+ "@babel/plugin-transform-runtime": "^7.28.5",
74
+ "@babel/preset-env": "^7.28.5",
71
75
  "@babel/preset-flow": "^7.27.1",
72
- "@babel/preset-react": "^7.27.1",
73
- "@babel/preset-typescript": "^7.27.1",
74
- "@types/node": "^24.2.1",
76
+ "@babel/preset-react": "^7.28.5",
77
+ "@babel/preset-typescript": "^7.28.5",
78
+ "@types/node": "^24.10.0",
75
79
  "@types/sha.js": "^2.4.4",
76
- "eslint": "^9.33.0",
80
+ "@vitest/ui": "^4.0.8",
81
+ "eslint": "^9.39.1",
77
82
  "gulp": "^5.0.1",
78
83
  "gulp-cached": "^1.1.1",
79
84
  "gulp-typescript": "^6.0.0-alpha.1",
@@ -82,18 +87,21 @@
82
87
  "prettier": "^3.6.2",
83
88
  "stream-browserify": "^3.0.0",
84
89
  "stream-http": "^3.2.0",
85
- "typedoc": "^0.28.10",
86
- "typescript-eslint": "^8.39.1",
90
+ "typedoc": "^0.28.14",
91
+ "typescript-eslint": "^8.46.3",
92
+ "vitest": "^4.0.8",
87
93
  "webpack-cli": "^6.0.1"
88
94
  },
89
95
  "dependencies": {
90
96
  "@babel/plugin-proposal-object-rest-spread": "^7.20.7",
91
97
  "@bitcoinerlab/secp256k1": "^1.2.0",
92
- "@btc-vision/bitcoin": "^6.4.10",
93
- "@btc-vision/bitcoin-rpc": "^1.0.2",
94
- "@btc-vision/logger": "^1.0.6",
95
- "@eslint/js": "^9.33.0",
96
- "@noble/secp256k1": "^2.3.0",
98
+ "@btc-vision/bip32": "^6.0.3",
99
+ "@btc-vision/bitcoin": "^6.4.11",
100
+ "@btc-vision/bitcoin-rpc": "^1.0.5",
101
+ "@btc-vision/logger": "^1.0.7",
102
+ "@btc-vision/post-quantum": "^0.5.3",
103
+ "@eslint/js": "^9.39.1",
104
+ "@noble/secp256k1": "^3.0.0",
97
105
  "assert": "^2.1.0",
98
106
  "babel-loader": "^10.0.0",
99
107
  "babel-plugin-transform-import-meta": "^2.3.3",
@@ -101,7 +109,7 @@
101
109
  "babelify": "^10.0.0",
102
110
  "bech32": "^2.0.0",
103
111
  "bip174": "^2.1.1",
104
- "bip32": "^5.0.0-rc.0",
112
+ "bip39": "^3.1.0",
105
113
  "browserify-zlib": "^0.2.0",
106
114
  "buffer": "^6.0.3",
107
115
  "ecpair": "^2.1.0",
@@ -110,9 +118,9 @@
110
118
  "gulp-logger-new": "^1.0.1",
111
119
  "process": "^0.11.10",
112
120
  "sha.js": "^2.4.12",
113
- "ts-loader": "^9.5.2",
121
+ "ts-loader": "^9.5.4",
114
122
  "ts-node": "^10.9.2",
115
- "typescript": "^5.9.2",
116
- "webpack": "^5.101.0"
123
+ "typescript": "^5.9.3",
124
+ "webpack": "^5.102.1"
117
125
  }
118
126
  }
package/src/_version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '1.6.18';
1
+ export const version = '1.7.0';
@@ -42,7 +42,7 @@ export class ChallengeSubmission implements IChallengeSubmission {
42
42
  data: RawChallengeSubmission,
43
43
  public readonly epochNumber: bigint,
44
44
  ) {
45
- this.publicKey = Address.fromString(data.publicKey);
45
+ this.publicKey = Address.fromString(data.publicKey, data.classicPublicKey);
46
46
  this.solution = stringToBuffer(data.solution);
47
47
  this.graffiti = data.graffiti ? stringToBuffer(data.graffiti) : undefined;
48
48
  this.signature = stringToBuffer(data.signature);
@@ -76,7 +76,7 @@ export class ChallengeSolution implements IChallengeSolution {
76
76
 
77
77
  constructor(data: RawChallenge) {
78
78
  this.epochNumber = BigInt(data.epochNumber);
79
- this.publicKey = Address.fromString(data.publicKey);
79
+ this.publicKey = Address.fromString(data.publicKey, data.classicPublicKey);
80
80
  this.solution = stringToBuffer(data.solution);
81
81
  this.salt = stringToBuffer(data.salt);
82
82
  this.graffiti = stringToBuffer(data.graffiti);
@@ -145,6 +145,7 @@ export class ChallengeSolution implements IChallengeSolution {
145
145
  return {
146
146
  epochNumber: this.epochNumber.toString(),
147
147
  publicKey: this.publicKey.toHex(),
148
+ classicPublicKey: this.publicKey.tweakedToHex(),
148
149
  solution: this.toHex(),
149
150
  salt: '0x' + this.salt.toString('hex'),
150
151
  graffiti: '0x' + this.graffiti.toString('hex'),
@@ -31,6 +31,7 @@ export interface RawChallengeVerification {
31
31
  }
32
32
 
33
33
  export interface RawChallengeSubmission {
34
+ readonly classicPublicKey: string;
34
35
  readonly publicKey: string;
35
36
  readonly solution: string;
36
37
  readonly graffiti?: string;
@@ -46,6 +47,7 @@ export interface IChallengeSubmission {
46
47
 
47
48
  export interface RawChallenge {
48
49
  readonly epochNumber: string;
50
+ readonly classicPublicKey: string;
49
51
  readonly publicKey: string;
50
52
  readonly solution: string;
51
53
  readonly salt: string;