@btc-vision/transaction 1.7.6 → 1.7.10
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.
- package/browser/_version.d.ts +1 -0
- package/browser/chain/ChainData.d.ts +4 -0
- package/browser/{src/deterministic → deterministic}/DeterministicMap.d.ts +3 -3
- package/browser/deterministic/FastMap.d.ts +24 -0
- package/browser/{src/epoch → epoch}/interfaces/IChallengeSolution.d.ts +4 -4
- package/browser/{src/generators → generators}/Features.d.ts +6 -1
- package/browser/{src/generators → generators}/Generator.d.ts +1 -0
- package/browser/generators/MLDSAData.d.ts +15 -0
- package/browser/index.js +1 -1
- package/browser/{src/keypair → keypair}/Address.d.ts +9 -3
- package/browser/{src/keypair → keypair}/MessageSigner.d.ts +9 -0
- package/browser/{src/opnet.d.ts → opnet.d.ts} +2 -1
- package/browser/{src/transaction → transaction}/browser/Web3Provider.d.ts +15 -4
- package/browser/transaction/browser/types/OPWallet.d.ts +6 -0
- package/browser/{src/transaction → transaction}/builders/CustomScriptTransaction.d.ts +1 -0
- package/browser/{src/transaction → transaction}/builders/DeploymentTransaction.d.ts +1 -0
- package/browser/{src/transaction → transaction}/builders/TransactionBuilder.d.ts +4 -0
- package/browser/{src/transaction → transaction}/interfaces/ITransactionParameters.d.ts +3 -0
- package/browser/{src/transaction → transaction}/shared/TweakedTransaction.d.ts +6 -0
- package/browser/{src/utxo → utxo}/OPNetLimitedProvider.d.ts +1 -0
- package/build/_version.d.ts +1 -1
- package/build/_version.js +1 -1
- package/build/chain/ChainData.d.ts +4 -0
- package/build/chain/ChainData.js +20 -0
- package/build/deterministic/AddressMap.js +2 -2
- package/build/deterministic/DeterministicMap.d.ts +3 -3
- package/build/deterministic/DeterministicMap.js +2 -2
- package/build/deterministic/FastMap.d.ts +24 -0
- package/build/deterministic/{Map.js → FastMap.js} +22 -28
- package/build/epoch/ChallengeSolution.js +4 -4
- package/build/epoch/interfaces/IChallengeSolution.d.ts +4 -4
- package/build/generators/Features.d.ts +6 -1
- package/build/generators/Features.js +1 -0
- package/build/generators/Generator.d.ts +1 -0
- package/build/generators/Generator.js +24 -2
- package/build/generators/MLDSAData.d.ts +15 -0
- package/build/generators/MLDSAData.js +19 -0
- package/build/generators/builders/CalldataGenerator.js +1 -1
- package/build/generators/builders/DeploymentGenerator.js +1 -1
- package/build/generators/builders/P2WDAGenerator.js +1 -1
- package/build/keypair/Address.d.ts +9 -3
- package/build/keypair/Address.js +63 -38
- package/build/keypair/MessageSigner.d.ts +9 -0
- package/build/keypair/MessageSigner.js +101 -3
- package/build/opnet.d.ts +2 -1
- package/build/opnet.js +2 -1
- package/build/transaction/TransactionFactory.js +3 -0
- package/build/transaction/browser/Web3Provider.d.ts +15 -4
- package/build/transaction/browser/types/OPWallet.d.ts +2 -10
- package/build/transaction/browser/types/OPWallet.js +4 -2
- package/build/transaction/builders/CustomScriptTransaction.d.ts +1 -0
- package/build/transaction/builders/CustomScriptTransaction.js +3 -0
- package/build/transaction/builders/DeploymentTransaction.d.ts +1 -0
- package/build/transaction/builders/DeploymentTransaction.js +26 -1
- package/build/transaction/builders/InteractionTransaction.js +14 -1
- package/build/transaction/builders/InteractionTransactionP2WDA.js +14 -1
- package/build/transaction/builders/TransactionBuilder.d.ts +4 -0
- package/build/transaction/builders/TransactionBuilder.js +77 -0
- package/build/transaction/interfaces/ITransactionParameters.d.ts +3 -0
- package/build/transaction/shared/P2TR_MS.js +1 -0
- package/build/transaction/shared/TweakedTransaction.d.ts +6 -0
- package/build/transaction/shared/TweakedTransaction.js +19 -0
- package/build/utxo/OPNetLimitedProvider.d.ts +1 -0
- package/build/utxo/OPNetLimitedProvider.js +11 -1
- package/eslint.config.js +2 -1
- package/package.json +1 -1
- package/src/_version.ts +1 -1
- package/src/chain/ChainData.ts +32 -0
- package/src/deterministic/AddressMap.ts +3 -3
- package/src/deterministic/DeterministicMap.ts +9 -6
- package/src/deterministic/{Map.ts → FastMap.ts} +46 -33
- package/src/epoch/ChallengeSolution.ts +4 -4
- package/src/epoch/interfaces/IChallengeSolution.ts +4 -4
- package/src/generators/Features.ts +8 -2
- package/src/generators/Generator.ts +35 -2
- package/src/generators/MLDSAData.ts +30 -0
- package/src/generators/builders/CalldataGenerator.ts +1 -1
- package/src/generators/builders/DeploymentGenerator.ts +2 -1
- package/src/generators/builders/LegacyCalldataGenerator.ts +1 -0
- package/src/generators/builders/P2WDAGenerator.ts +5 -1
- package/src/keypair/Address.ts +78 -38
- package/src/keypair/MessageSigner.ts +214 -15
- package/src/opnet.ts +3 -1
- package/src/transaction/TransactionFactory.ts +3 -0
- package/src/transaction/browser/Web3Provider.ts +64 -4
- package/src/transaction/browser/types/OPWallet.ts +6 -53
- package/src/transaction/builders/CustomScriptTransaction.ts +4 -0
- package/src/transaction/builders/DeploymentTransaction.ts +36 -8
- package/src/transaction/builders/InteractionTransaction.ts +17 -7
- package/src/transaction/builders/InteractionTransactionP2WDA.ts +17 -7
- package/src/transaction/builders/TransactionBuilder.ts +107 -0
- package/src/transaction/interfaces/ITransactionParameters.ts +12 -0
- package/src/transaction/shared/P2TR_MS.ts +1 -0
- package/src/transaction/shared/TweakedTransaction.ts +35 -0
- package/src/utxo/OPNetLimitedProvider.ts +19 -2
- package/test/address.test.ts +18 -20
- package/test/addressmap.test.ts +783 -0
- package/test/addressverificator-mldsa.test.ts +40 -16
- package/test/fastmap-setall.test.ts +143 -0
- package/test/fastmap.test.ts +917 -0
- package/test/messagesigner-mldsa.test.ts +50 -50
- package/test/messagesigner-schnorr.test.ts +40 -40
- package/test/old/FastBigIntMap.ts +132 -0
- package/test/oldfastmap.test.ts +917 -0
- package/tsconfig.webpack.json +2 -6
- package/webpack.config.js +1 -1
- package/browser/src/_version.d.ts +0 -1
- package/browser/src/deterministic/Map.d.ts +0 -19
- package/browser/src/transaction/browser/types/OPWallet.d.ts +0 -14
- package/browser/test/address.test.d.ts +0 -1
- package/browser/test/addressverificator-mldsa.test.d.ts +0 -1
- package/browser/test/derivePath.test.d.ts +0 -1
- package/browser/test/messagesigner-mldsa.test.d.ts +0 -1
- package/browser/test/messagesigner-schnorr.test.d.ts +0 -1
- package/browser/test/network-awareness.test.d.ts +0 -1
- package/build/deterministic/Map.d.ts +0 -19
- /package/browser/{src/abi → abi}/ABICoder.d.ts +0 -0
- /package/browser/{src/buffer → buffer}/BinaryReader.d.ts +0 -0
- /package/browser/{src/buffer → buffer}/BinaryWriter.d.ts +0 -0
- /package/browser/{src/bytecode → bytecode}/Compressor.d.ts +0 -0
- /package/browser/{src/consensus → consensus}/Consensus.d.ts +0 -0
- /package/browser/{src/consensus → consensus}/ConsensusConfig.d.ts +0 -0
- /package/browser/{src/consensus → consensus}/metadata/RoswellConsensus.d.ts +0 -0
- /package/browser/{src/crypto → crypto}/crypto-browser.d.ts +0 -0
- /package/browser/{src/crypto → crypto}/crypto.d.ts +0 -0
- /package/browser/{src/deterministic → deterministic}/AddressMap.d.ts +0 -0
- /package/browser/{src/deterministic → deterministic}/AddressSet.d.ts +0 -0
- /package/browser/{src/deterministic → deterministic}/CustomMap.d.ts +0 -0
- /package/browser/{src/deterministic → deterministic}/DeterministicSet.d.ts +0 -0
- /package/browser/{src/epoch → epoch}/ChallengeSolution.d.ts +0 -0
- /package/browser/{src/epoch → epoch}/validator/EpochValidator.d.ts +0 -0
- /package/browser/{src/event → event}/NetEvent.d.ts +0 -0
- /package/browser/{src/generators → generators}/AddressGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/CalldataGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/CustomGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/DeploymentGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/LegacyCalldataGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/MultiSignGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/P2WDAGenerator.d.ts +0 -0
- /package/browser/{src/index.d.ts → index.d.ts} +0 -0
- /package/browser/{src/keypair → keypair}/AddressVerificator.d.ts +0 -0
- /package/browser/{src/keypair → keypair}/EcKeyPair.d.ts +0 -0
- /package/browser/{src/keypair → keypair}/Secp256k1PointDeriver.d.ts +0 -0
- /package/browser/{src/keypair → keypair}/Wallet.d.ts +0 -0
- /package/browser/{src/keypair → keypair}/interfaces/IWallet.d.ts +0 -0
- /package/browser/{src/metadata → metadata}/ContractBaseMetadata.d.ts +0 -0
- /package/browser/{src/metadata → metadata}/tokens.d.ts +0 -0
- /package/browser/{src/mnemonic → mnemonic}/BIPStandard.d.ts +0 -0
- /package/browser/{src/mnemonic → mnemonic}/Mnemonic.d.ts +0 -0
- /package/browser/{src/mnemonic → mnemonic}/MnemonicStrength.d.ts +0 -0
- /package/browser/{src/network → network}/ChainId.d.ts +0 -0
- /package/browser/{src/p2wda → p2wda}/P2WDADetector.d.ts +0 -0
- /package/browser/{src/signer → signer}/SignerUtils.d.ts +0 -0
- /package/browser/{src/signer → signer}/TweakedSigner.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/ContractAddress.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/TransactionFactory.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/BrowserSignerBase.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/extensions/UnisatSigner.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/extensions/XverseSigner.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/types/Unisat.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/types/Xverse.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/CancelTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/ChallengeSolutionTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/FundingTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/InteractionTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/InteractionTransactionP2WDA.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/MultiSignTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/SharedInteractionTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/enums/TransactionType.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/interfaces/Tap.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/mineable/IP2WSHAddress.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/mineable/TimelockGenerator.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/processor/PsbtTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/psbt/PSBTTypes.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/shared/P2TR_MS.d.ts +0 -0
- /package/browser/{src/utils → utils}/BitcoinUtils.d.ts +0 -0
- /package/browser/{src/utils → utils}/BufferHelper.d.ts +0 -0
- /package/browser/{src/utils → utils}/StringToBuffer.d.ts +0 -0
- /package/browser/{src/utils → utils}/lengths.d.ts +0 -0
- /package/browser/{src/utils → utils}/types.d.ts +0 -0
- /package/browser/{src/utxo → utxo}/interfaces/BroadcastResponse.d.ts +0 -0
- /package/browser/{src/utxo → utxo}/interfaces/IUTXO.d.ts +0 -0
- /package/browser/{src/verification → verification}/TapscriptVerificator.d.ts +0 -0
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import { Network } from '@btc-vision/bitcoin';
|
|
2
2
|
import { IP2WSHAddress } from '../transaction/mineable/IP2WSHAddress.js';
|
|
3
|
+
import { MLDSASecurityLevel } from '@btc-vision/bip32';
|
|
3
4
|
export declare class Address extends Uint8Array {
|
|
4
5
|
#private;
|
|
5
|
-
private
|
|
6
|
+
private legacyPublicKey;
|
|
6
7
|
constructor(mldsaPublicKey?: ArrayLike<number>, publicKeyOrTweak?: ArrayLike<number>);
|
|
8
|
+
get mldsaLevel(): MLDSASecurityLevel | undefined;
|
|
9
|
+
set mldsaLevel(level: MLDSASecurityLevel);
|
|
10
|
+
get originalMDLSAPublicKey(): Uint8Array | undefined;
|
|
11
|
+
set originalMDLSAPublicKey(key: Buffer | Uint8Array);
|
|
7
12
|
get originalPublicKey(): Uint8Array | undefined;
|
|
8
13
|
get mldsaPublicKey(): Uint8Array | undefined;
|
|
9
14
|
private get keyPair();
|
|
10
15
|
static dead(): Address;
|
|
11
|
-
static fromString(mldsaPublicKey: string,
|
|
16
|
+
static fromString(mldsaPublicKey: string, legacyPublicKey?: string): Address;
|
|
12
17
|
static wrap(bytes: ArrayLike<number>): Address;
|
|
13
18
|
static uncompressedToCompressed(publicKey: ArrayLike<number>): Buffer;
|
|
14
19
|
static fromBigInt(value: bigint): Address;
|
|
15
20
|
static fromUint64Array(w0: bigint, w1: bigint, w2: bigint, w3: bigint): Address;
|
|
16
21
|
toUint64Array(): [bigint, bigint, bigint, bigint];
|
|
22
|
+
isDead(): boolean;
|
|
17
23
|
toHex(): string;
|
|
18
24
|
tweakedToHex(): string;
|
|
19
25
|
toBuffer(): Buffer;
|
|
@@ -28,7 +34,7 @@ export declare class Address extends Uint8Array {
|
|
|
28
34
|
lessThan(a: Address): boolean;
|
|
29
35
|
greaterThan(a: Address): boolean;
|
|
30
36
|
set(mldsaPublicKey: ArrayLike<number>): void;
|
|
31
|
-
|
|
37
|
+
isValidLegacyPublicKey(network: Network): boolean;
|
|
32
38
|
p2pk(): string;
|
|
33
39
|
p2wpkh(network: Network): string;
|
|
34
40
|
p2pkh(network: Network): string;
|
|
@@ -13,12 +13,21 @@ export interface MLDSASignedMessage {
|
|
|
13
13
|
}
|
|
14
14
|
declare class MessageSignerBase {
|
|
15
15
|
sha256(message: Buffer | Uint8Array): Buffer;
|
|
16
|
+
trySignSchnorrWithOPWallet(message: Uint8Array | Buffer | string): Promise<SignedMessage | null>;
|
|
17
|
+
trySignMLDSAWithOPWallet(message: Uint8Array | Buffer | string): Promise<MLDSASignedMessage | null>;
|
|
18
|
+
signMessageAuto(message: Uint8Array | Buffer | string, keypair?: ECPairInterface): Promise<SignedMessage>;
|
|
19
|
+
tweakAndSignMessageAuto(message: Uint8Array | Buffer | string, keypair?: ECPairInterface, network?: Network): Promise<SignedMessage>;
|
|
20
|
+
signMLDSAMessageAuto(message: Uint8Array | Buffer | string, mldsaKeypair?: QuantumBIP32Interface): Promise<MLDSASignedMessage>;
|
|
21
|
+
verifyMLDSAWithOPWallet(message: Uint8Array | Buffer | string, signature: MLDSASignedMessage): Promise<boolean | null>;
|
|
22
|
+
getMLDSAPublicKeyFromOPWallet(): Promise<Buffer | null>;
|
|
16
23
|
tweakAndSignMessage(keypair: ECPairInterface, message: Uint8Array | Buffer | string, network: Network): SignedMessage;
|
|
17
24
|
signMessage(keypair: ECPairInterface, message: Uint8Array | Buffer | string): SignedMessage;
|
|
18
25
|
verifySignature(publicKey: Uint8Array | Buffer, message: Uint8Array | Buffer | string, signature: Uint8Array | Buffer): boolean;
|
|
19
26
|
tweakAndVerifySignature(publicKey: Uint8Array | Buffer, message: Uint8Array | Buffer | string, signature: Uint8Array | Buffer): boolean;
|
|
20
27
|
signMLDSAMessage(mldsaKeypair: QuantumBIP32Interface, message: Uint8Array | Buffer | string): MLDSASignedMessage;
|
|
21
28
|
verifyMLDSASignature(mldsaKeypair: QuantumBIP32Interface, message: Uint8Array | Buffer | string, signature: Uint8Array | Buffer): boolean;
|
|
29
|
+
isOPWalletAvailable(): boolean;
|
|
30
|
+
private getOPWallet;
|
|
22
31
|
}
|
|
23
32
|
export declare const MessageSigner: MessageSignerBase;
|
|
24
33
|
export {};
|
|
@@ -23,6 +23,7 @@ export * from './mnemonic/Mnemonic.js';
|
|
|
23
23
|
export * from './mnemonic/MnemonicStrength.js';
|
|
24
24
|
export * from './mnemonic/BIPStandard.js';
|
|
25
25
|
export { MLDSASecurityLevel, MLDSAKeyPair, QuantumBIP32Interface, QuantumBIP32API, QuantumSigner, QuantumBIP32Factory, QuantumDerivationPath, } from '@btc-vision/bip32';
|
|
26
|
+
export * from './generators/MLDSAData.js';
|
|
26
27
|
export * from './metadata/ContractBaseMetadata.js';
|
|
27
28
|
export * from './network/ChainId.js';
|
|
28
29
|
export * from './signer/TweakedSigner.js';
|
|
@@ -75,7 +76,7 @@ export * from './metadata/tokens.js';
|
|
|
75
76
|
export * from './transaction/browser/Web3Provider.js';
|
|
76
77
|
export * from './keypair/Secp256k1PointDeriver.js';
|
|
77
78
|
export * from './transaction/ContractAddress.js';
|
|
78
|
-
export * from './deterministic/
|
|
79
|
+
export * from './deterministic/FastMap.js';
|
|
79
80
|
export * from './deterministic/CustomMap.js';
|
|
80
81
|
declare global {
|
|
81
82
|
interface Window {
|
|
@@ -3,10 +3,11 @@ import { UTXO } from '../../utxo/interfaces/IUTXO.js';
|
|
|
3
3
|
import { CancelledTransaction, DeploymentResult, InteractionResponse } from '../TransactionFactory';
|
|
4
4
|
import { ICustomTransactionParameters } from '../builders/CustomScriptTransaction.js';
|
|
5
5
|
import { ICancelTransactionParameters } from '../builders/CancelTransaction.js';
|
|
6
|
-
|
|
7
|
-
export type
|
|
8
|
-
export type
|
|
9
|
-
export type
|
|
6
|
+
import { MLDSASecurityLevel } from '@btc-vision/bip32';
|
|
7
|
+
export type InteractionParametersWithoutSigner = Omit<IInteractionParameters, 'signer' | 'challenge' | 'mldsaSigner'>;
|
|
8
|
+
export type IDeploymentParametersWithoutSigner = Omit<IDeploymentParameters, 'signer' | 'network' | 'challenge' | 'mldsaSigner'>;
|
|
9
|
+
export type ICustomTransactionWithoutSigner = Omit<ICustomTransactionParameters, 'signer' | 'challenge' | 'mldsaSigner'>;
|
|
10
|
+
export type ICancelTransactionParametersWithoutSigner = Omit<ICancelTransactionParameters, 'signer' | 'challenge' | 'network' | 'mldsaSigner'>;
|
|
10
11
|
export interface BroadcastTransactionOptions {
|
|
11
12
|
raw: string;
|
|
12
13
|
psbt: boolean;
|
|
@@ -17,6 +18,12 @@ export interface BroadcastedTransaction {
|
|
|
17
18
|
readonly error?: string;
|
|
18
19
|
readonly peers?: number;
|
|
19
20
|
}
|
|
21
|
+
export interface MLDSASignature {
|
|
22
|
+
readonly signature: string;
|
|
23
|
+
readonly publicKey: string;
|
|
24
|
+
readonly securityLevel: MLDSASecurityLevel;
|
|
25
|
+
readonly messageHash: string;
|
|
26
|
+
}
|
|
20
27
|
export interface Web3Provider {
|
|
21
28
|
signInteraction(interactionParameters: InteractionParametersWithoutSigner): Promise<InteractionResponse>;
|
|
22
29
|
signAndBroadcastInteraction(interactionParameters: InteractionParametersWithoutSigner): Promise<[BroadcastedTransaction, BroadcastedTransaction, UTXO[], string]>;
|
|
@@ -24,4 +31,8 @@ export interface Web3Provider {
|
|
|
24
31
|
customTransaction(params: ICustomTransactionWithoutSigner): Promise<BroadcastedTransaction>;
|
|
25
32
|
deployContract(params: IDeploymentParametersWithoutSigner): Promise<DeploymentResult>;
|
|
26
33
|
broadcast(transactions: BroadcastTransactionOptions[]): Promise<BroadcastedTransaction[]>;
|
|
34
|
+
signSchnorr(message: string): Promise<string>;
|
|
35
|
+
getMLDSAPublicKey(): Promise<string>;
|
|
36
|
+
signMLDSAMessage(message: string): Promise<MLDSASignature>;
|
|
37
|
+
verifyMLDSASignature(message: string, signature: MLDSASignature): Promise<boolean>;
|
|
27
38
|
}
|
|
@@ -26,6 +26,7 @@ export declare class CustomScriptTransaction extends TransactionBuilder<Transact
|
|
|
26
26
|
constructor(parameters: ICustomTransactionParameters);
|
|
27
27
|
get scriptAddress(): string;
|
|
28
28
|
get p2trAddress(): string;
|
|
29
|
+
exportCompiledTargetScript(): Buffer;
|
|
29
30
|
getRndBytes(): Buffer;
|
|
30
31
|
protected contractSignerXOnlyPubKey(): Buffer;
|
|
31
32
|
protected buildTransaction(): Promise<void>;
|
|
@@ -30,6 +30,7 @@ export declare class DeploymentTransaction extends TransactionBuilder<Transactio
|
|
|
30
30
|
get contractPubKey(): string;
|
|
31
31
|
get contractAddress(): Address;
|
|
32
32
|
get p2trAddress(): string;
|
|
33
|
+
exportCompiledTargetScript(): Buffer;
|
|
33
34
|
getRndBytes(): Buffer;
|
|
34
35
|
getChallenge(): ChallengeSolution;
|
|
35
36
|
getContractAddress(): string;
|
|
@@ -7,6 +7,7 @@ import { ECPairInterface } from 'ecpair';
|
|
|
7
7
|
import { TweakedTransaction } from '../shared/TweakedTransaction.js';
|
|
8
8
|
import { UnisatSigner } from '../browser/extensions/UnisatSigner.js';
|
|
9
9
|
import { IP2WSHAddress } from '../mineable/IP2WSHAddress.js';
|
|
10
|
+
import { Feature, Features } from '../../generators/Features.js';
|
|
10
11
|
export declare const MINIMUM_AMOUNT_REWARD: bigint;
|
|
11
12
|
export declare const MINIMUM_AMOUNT_CA: bigint;
|
|
12
13
|
export declare const ANCHOR_SCRIPT: Buffer<ArrayBuffer>;
|
|
@@ -64,6 +65,9 @@ export declare abstract class TransactionBuilder<T extends TransactionType> exte
|
|
|
64
65
|
protected addRefundOutput(amountSpent: bigint, expectRefund?: boolean): Promise<void>;
|
|
65
66
|
protected defineLockScript(): Buffer;
|
|
66
67
|
protected addValueToToOutput(value: number | bigint): void;
|
|
68
|
+
protected generateLegacySignature(): Buffer;
|
|
69
|
+
protected generateMLDSASignature(): Buffer;
|
|
70
|
+
protected generateMLDSALinkRequest(parameters: ITransactionParameters, features: Feature<Features>[]): void;
|
|
67
71
|
protected getTransactionOPNetFee(): bigint;
|
|
68
72
|
protected calculateTotalUTXOAmount(): bigint;
|
|
69
73
|
protected calculateTotalVOutAmount(): bigint;
|
|
@@ -10,6 +10,8 @@ export interface ITransactionParameters extends ITweakedTransactionData {
|
|
|
10
10
|
readonly from?: string;
|
|
11
11
|
readonly to?: string;
|
|
12
12
|
readonly debugFees?: boolean;
|
|
13
|
+
readonly revealMLDSAPublicKey?: boolean;
|
|
14
|
+
readonly linkMLDSAPublicKeyToAddress?: boolean;
|
|
13
15
|
utxos: UTXO[];
|
|
14
16
|
nonWitnessUtxo?: Buffer;
|
|
15
17
|
estimatedFees?: bigint;
|
|
@@ -22,6 +24,7 @@ export interface ITransactionParameters extends ITweakedTransactionData {
|
|
|
22
24
|
readonly feeRate: number;
|
|
23
25
|
readonly priorityFee: bigint;
|
|
24
26
|
readonly gasSatFee: bigint;
|
|
27
|
+
readonly compiledTargetScript?: Buffer | string;
|
|
25
28
|
}
|
|
26
29
|
export interface IFundingTransactionParameters extends ITransactionParameters {
|
|
27
30
|
amount: bigint;
|
|
@@ -6,8 +6,10 @@ import { TapLeafScript } from '../interfaces/Tap.js';
|
|
|
6
6
|
import { ChainId } from '../../network/ChainId.js';
|
|
7
7
|
import { UnisatSigner } from '../browser/extensions/UnisatSigner.js';
|
|
8
8
|
import { Buffer } from 'buffer';
|
|
9
|
+
import { QuantumBIP32Interface } from '@btc-vision/bip32';
|
|
9
10
|
export type SupportedTransactionVersion = 1 | 2 | 3;
|
|
10
11
|
export interface ITweakedTransactionData {
|
|
12
|
+
readonly mldsaSigner: QuantumBIP32Interface | null;
|
|
11
13
|
readonly signer: Signer | ECPairInterface | UnisatSigner;
|
|
12
14
|
readonly network: Network;
|
|
13
15
|
readonly chainId?: ChainId;
|
|
@@ -47,7 +49,11 @@ export declare abstract class TweakedTransaction extends Logger {
|
|
|
47
49
|
protected noSignatures: boolean;
|
|
48
50
|
protected unlockScript: Buffer[] | undefined;
|
|
49
51
|
protected txVersion: SupportedTransactionVersion;
|
|
52
|
+
protected readonly _mldsaSigner: QuantumBIP32Interface | null;
|
|
53
|
+
protected readonly _hashedPublicKey: Buffer | null;
|
|
50
54
|
protected constructor(data: ITweakedTransactionData);
|
|
55
|
+
protected get mldsaSigner(): QuantumBIP32Interface;
|
|
56
|
+
protected get hashedPublicKey(): Buffer;
|
|
51
57
|
static readScriptWitnessToWitnessStack(buffer: Buffer): Buffer[];
|
|
52
58
|
static preEstimateTaprootTransactionFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numWitnessElements: bigint, witnessElementSize: bigint, emptyWitness: bigint, taprootControlWitnessSize?: bigint, taprootScriptSize?: bigint): bigint;
|
|
53
59
|
protected static signInput(transaction: Psbt, input: PsbtInput, i: number, signer: Signer | ECPairInterface, sighashTypes: number[]): void;
|
|
@@ -6,6 +6,7 @@ export interface WalletUTXOs {
|
|
|
6
6
|
readonly confirmed: RawUTXOResponse[];
|
|
7
7
|
readonly pending: RawUTXOResponse[];
|
|
8
8
|
readonly spentTransactions: RawUTXOResponse[];
|
|
9
|
+
readonly raw: string[];
|
|
9
10
|
}
|
|
10
11
|
export declare class OPNetLimitedProvider {
|
|
11
12
|
private readonly opnetAPIUrl;
|
package/build/_version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "1.7.
|
|
1
|
+
export declare const version = "1.7.10";
|
package/build/_version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '1.7.
|
|
1
|
+
export const version = '1.7.10';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { networks } from '@btc-vision/bitcoin';
|
|
2
|
+
function objectEqual(obj1, obj2) {
|
|
3
|
+
return JSON.stringify(obj1) === JSON.stringify(obj2);
|
|
4
|
+
}
|
|
5
|
+
export function getChainIdHex(network) {
|
|
6
|
+
if (objectEqual(network, networks.bitcoin)) {
|
|
7
|
+
return '000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f';
|
|
8
|
+
}
|
|
9
|
+
if (objectEqual(network, networks.testnet)) {
|
|
10
|
+
return '000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943';
|
|
11
|
+
}
|
|
12
|
+
if (objectEqual(network, networks.regtest)) {
|
|
13
|
+
return '0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206';
|
|
14
|
+
}
|
|
15
|
+
throw new Error('Unsupported network for chain ID retrieval');
|
|
16
|
+
}
|
|
17
|
+
export function getChainId(network) {
|
|
18
|
+
return Uint8Array.from(Buffer.from(getChainIdHex(network), 'hex'));
|
|
19
|
+
}
|
|
20
|
+
export const BITCOIN_PROTOCOL_ID = Uint8Array.from(Buffer.from('e784995a412d773988c4b8e333d7b39dfb3cabf118d0d645411a916ca2407939', 'hex'));
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Address } from '../keypair/Address.js';
|
|
2
|
-
import {
|
|
2
|
+
import { FastMap } from './FastMap.js';
|
|
3
3
|
export class AddressMap {
|
|
4
4
|
constructor(iterable) {
|
|
5
|
-
this.items = new
|
|
5
|
+
this.items = new FastMap();
|
|
6
6
|
if (iterable) {
|
|
7
7
|
for (const [key, value] of iterable) {
|
|
8
8
|
this.set(key, value);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class DeterministicMap<K, V> {
|
|
1
|
+
import { FastMap, PropertyExtendedKey } from './FastMap.js';
|
|
2
|
+
export declare class DeterministicMap<K extends PropertyExtendedKey, V> {
|
|
3
3
|
#private;
|
|
4
4
|
private compareFn;
|
|
5
5
|
private map;
|
|
6
6
|
constructor(compareFn: (a: K, b: K) => number);
|
|
7
7
|
get size(): number;
|
|
8
|
-
static fromMap<K, V>(map:
|
|
8
|
+
static fromMap<K extends PropertyExtendedKey, V>(map: FastMap<K, V>, compareFn: (a: K, b: K) => number): DeterministicMap<K, V>;
|
|
9
9
|
set(key: K, value: V): void;
|
|
10
10
|
get(key: K): V | undefined;
|
|
11
11
|
entries(): IterableIterator<[K, V]>;
|
|
@@ -10,12 +10,12 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
12
|
var _DeterministicMap_keys;
|
|
13
|
-
import {
|
|
13
|
+
import { FastMap } from './FastMap.js';
|
|
14
14
|
export class DeterministicMap {
|
|
15
15
|
constructor(compareFn) {
|
|
16
16
|
this.compareFn = compareFn;
|
|
17
17
|
_DeterministicMap_keys.set(this, void 0);
|
|
18
|
-
this.map = new
|
|
18
|
+
this.map = new FastMap();
|
|
19
19
|
__classPrivateFieldSet(this, _DeterministicMap_keys, [], "f");
|
|
20
20
|
}
|
|
21
21
|
get size() {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type PropertyExtendedKey = PropertyKey | bigint;
|
|
2
|
+
export type FastRecord<V> = {
|
|
3
|
+
[key: string]: V;
|
|
4
|
+
};
|
|
5
|
+
export type IndexKey = string | number;
|
|
6
|
+
export declare class FastMap<K extends PropertyExtendedKey, V> {
|
|
7
|
+
protected _keys: K[];
|
|
8
|
+
protected _values: FastRecord<V>;
|
|
9
|
+
constructor(iterable?: ReadonlyArray<readonly [K, V]> | null | FastMap<K, V>);
|
|
10
|
+
get size(): number;
|
|
11
|
+
setAll(map: FastMap<K, V>): void;
|
|
12
|
+
addAll(map: FastMap<K, V>): void;
|
|
13
|
+
keys(): IterableIterator<K>;
|
|
14
|
+
values(): IterableIterator<V>;
|
|
15
|
+
entries(): IterableIterator<[K, V]>;
|
|
16
|
+
set(key: K, value: V): this;
|
|
17
|
+
indexOf(key: K): number;
|
|
18
|
+
get(key: K): V | undefined;
|
|
19
|
+
has(key: K): boolean;
|
|
20
|
+
delete(key: K): boolean;
|
|
21
|
+
clear(): void;
|
|
22
|
+
forEach(callback: (value: V, key: K, map: FastMap<K, V>) => void, thisArg?: unknown): void;
|
|
23
|
+
[Symbol.iterator](): IterableIterator<[K, V]>;
|
|
24
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export class
|
|
1
|
+
export class FastMap {
|
|
2
2
|
constructor(iterable) {
|
|
3
3
|
this._keys = [];
|
|
4
4
|
this._values = {};
|
|
5
|
-
if (iterable instanceof
|
|
5
|
+
if (iterable instanceof FastMap) {
|
|
6
6
|
this.setAll(iterable);
|
|
7
7
|
}
|
|
8
8
|
else {
|
|
@@ -17,9 +17,8 @@ export class Map {
|
|
|
17
17
|
return this._keys.length;
|
|
18
18
|
}
|
|
19
19
|
setAll(map) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
20
|
+
this._keys = [...map._keys];
|
|
21
|
+
this._values = { ...map._values };
|
|
23
22
|
}
|
|
24
23
|
addAll(map) {
|
|
25
24
|
for (const [key, value] of map.entries()) {
|
|
@@ -31,64 +30,59 @@ export class Map {
|
|
|
31
30
|
}
|
|
32
31
|
*values() {
|
|
33
32
|
for (const key of this._keys) {
|
|
34
|
-
yield this._values[
|
|
33
|
+
yield this._values[key];
|
|
35
34
|
}
|
|
36
35
|
}
|
|
37
36
|
*entries() {
|
|
38
37
|
for (const key of this._keys) {
|
|
39
|
-
yield [key, this._values[
|
|
38
|
+
yield [key, this._values[key]];
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
set(key, value) {
|
|
43
|
-
const keyStr = this.keyToString(key);
|
|
44
42
|
if (!this.has(key)) {
|
|
45
43
|
this._keys.push(key);
|
|
46
44
|
}
|
|
47
|
-
this._values[
|
|
45
|
+
this._values[key] = value;
|
|
46
|
+
return this;
|
|
48
47
|
}
|
|
49
48
|
indexOf(key) {
|
|
49
|
+
if (!this.has(key)) {
|
|
50
|
+
return -1;
|
|
51
|
+
}
|
|
50
52
|
for (let i = 0; i < this._keys.length; i++) {
|
|
51
53
|
if (this._keys[i] === key) {
|
|
52
54
|
return i;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
55
|
-
|
|
57
|
+
throw new Error('Key not found, this should not happen.');
|
|
56
58
|
}
|
|
57
59
|
get(key) {
|
|
58
|
-
return this._values[
|
|
60
|
+
return this._values[key];
|
|
59
61
|
}
|
|
60
62
|
has(key) {
|
|
61
|
-
return Object.prototype.hasOwnProperty.call(this._values,
|
|
63
|
+
return Object.prototype.hasOwnProperty.call(this._values, key);
|
|
62
64
|
}
|
|
63
65
|
delete(key) {
|
|
64
|
-
|
|
65
|
-
if (index === -1) {
|
|
66
|
+
if (!this.has(key)) {
|
|
66
67
|
return false;
|
|
67
68
|
}
|
|
68
|
-
const
|
|
69
|
+
const index = this.indexOf(key);
|
|
69
70
|
this._keys.splice(index, 1);
|
|
70
|
-
delete this._values[
|
|
71
|
+
delete this._values[key];
|
|
71
72
|
return true;
|
|
72
73
|
}
|
|
73
74
|
clear() {
|
|
74
75
|
this._keys = [];
|
|
75
76
|
this._values = {};
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
+
forEach(callback, thisArg) {
|
|
78
79
|
for (const key of this._keys) {
|
|
79
|
-
|
|
80
|
+
callback.call(thisArg, this._values[key], key, this);
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
if (typeof key === 'number' || typeof key === 'boolean') {
|
|
87
|
-
return String(key);
|
|
88
|
-
}
|
|
89
|
-
if (typeof key === 'object' && key !== null) {
|
|
90
|
-
return JSON.stringify(key);
|
|
83
|
+
*[Symbol.iterator]() {
|
|
84
|
+
for (const key of this._keys) {
|
|
85
|
+
yield [key, this._values[key]];
|
|
91
86
|
}
|
|
92
|
-
return String(key);
|
|
93
87
|
}
|
|
94
88
|
}
|
|
@@ -17,7 +17,7 @@ export class ChallengeVerification {
|
|
|
17
17
|
export class ChallengeSubmission {
|
|
18
18
|
constructor(data, epochNumber) {
|
|
19
19
|
this.epochNumber = epochNumber;
|
|
20
|
-
this.publicKey = Address.fromString(data.
|
|
20
|
+
this.publicKey = Address.fromString(data.mldsaPublicKey, data.legacyPublicKey);
|
|
21
21
|
this.solution = stringToBuffer(data.solution);
|
|
22
22
|
this.graffiti = data.graffiti ? stringToBuffer(data.graffiti) : undefined;
|
|
23
23
|
this.signature = stringToBuffer(data.signature);
|
|
@@ -37,7 +37,7 @@ export class ChallengeSubmission {
|
|
|
37
37
|
export class ChallengeSolution {
|
|
38
38
|
constructor(data) {
|
|
39
39
|
this.epochNumber = BigInt(data.epochNumber);
|
|
40
|
-
this.publicKey = Address.fromString(data.
|
|
40
|
+
this.publicKey = Address.fromString(data.mldsaPublicKey, data.legacyPublicKey);
|
|
41
41
|
this.solution = stringToBuffer(data.solution);
|
|
42
42
|
this.salt = stringToBuffer(data.salt);
|
|
43
43
|
this.graffiti = stringToBuffer(data.graffiti);
|
|
@@ -77,8 +77,8 @@ export class ChallengeSolution {
|
|
|
77
77
|
toRaw() {
|
|
78
78
|
return {
|
|
79
79
|
epochNumber: this.epochNumber.toString(),
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
mldsaPublicKey: this.publicKey.toHex(),
|
|
81
|
+
legacyPublicKey: this.publicKey.tweakedToHex(),
|
|
82
82
|
solution: this.toHex(),
|
|
83
83
|
salt: '0x' + this.salt.toString('hex'),
|
|
84
84
|
graffiti: '0x' + this.graffiti.toString('hex'),
|
|
@@ -27,8 +27,8 @@ export interface RawChallengeVerification {
|
|
|
27
27
|
readonly proofs: readonly string[];
|
|
28
28
|
}
|
|
29
29
|
export interface RawChallengeSubmission {
|
|
30
|
-
readonly
|
|
31
|
-
readonly
|
|
30
|
+
readonly mldsaPublicKey: string;
|
|
31
|
+
readonly legacyPublicKey: string;
|
|
32
32
|
readonly solution: string;
|
|
33
33
|
readonly graffiti?: string;
|
|
34
34
|
readonly signature: string;
|
|
@@ -41,8 +41,8 @@ export interface IChallengeSubmission {
|
|
|
41
41
|
}
|
|
42
42
|
export interface RawChallenge {
|
|
43
43
|
readonly epochNumber: string;
|
|
44
|
-
readonly
|
|
45
|
-
readonly
|
|
44
|
+
readonly mldsaPublicKey: string;
|
|
45
|
+
readonly legacyPublicKey: string;
|
|
46
46
|
readonly solution: string;
|
|
47
47
|
readonly salt: string;
|
|
48
48
|
readonly graffiti: string;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { LoadedStorage } from '../transaction/interfaces/ITransactionParameters.js';
|
|
2
2
|
import { ChallengeSubmission } from '../epoch/ChallengeSolution.js';
|
|
3
|
+
import { MLDSARequestData } from './MLDSAData.js';
|
|
3
4
|
export declare enum Features {
|
|
4
5
|
ACCESS_LIST = 1,
|
|
5
|
-
EPOCH_SUBMISSION = 2
|
|
6
|
+
EPOCH_SUBMISSION = 2,
|
|
7
|
+
MLDSA_LINK_PUBKEY = 4
|
|
6
8
|
}
|
|
7
9
|
export interface Feature<T extends Features> {
|
|
8
10
|
opcode: T;
|
|
@@ -14,3 +16,6 @@ export interface AccessListFeature extends Feature<Features.ACCESS_LIST> {
|
|
|
14
16
|
export interface EpochSubmissionFeature extends Feature<Features.EPOCH_SUBMISSION> {
|
|
15
17
|
data: ChallengeSubmission;
|
|
16
18
|
}
|
|
19
|
+
export interface MLDSALinkRequest extends Feature<Features.MLDSA_LINK_PUBKEY> {
|
|
20
|
+
data: MLDSARequestData;
|
|
21
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { networks, toXOnly } from '@btc-vision/bitcoin';
|
|
2
2
|
import { BinaryWriter } from '../buffer/BinaryWriter.js';
|
|
3
|
-
import { Features } from './Features.js';
|
|
3
|
+
import { Features, } from './Features.js';
|
|
4
4
|
import { Address } from '../keypair/Address.js';
|
|
5
5
|
import { Compressor } from '../bytecode/Compressor.js';
|
|
6
6
|
export class Generator {
|
|
@@ -46,6 +46,9 @@ export class Generator {
|
|
|
46
46
|
case Features.EPOCH_SUBMISSION: {
|
|
47
47
|
return this.splitBufferIntoChunks(this.encodeChallengeSubmission(feature));
|
|
48
48
|
}
|
|
49
|
+
case Features.MLDSA_LINK_PUBKEY: {
|
|
50
|
+
return this.splitBufferIntoChunks(this.encodeLinkRequest(feature));
|
|
51
|
+
}
|
|
49
52
|
default:
|
|
50
53
|
throw new Error(`Unknown feature type: ${feature.opcode}`);
|
|
51
54
|
}
|
|
@@ -73,13 +76,32 @@ export class Generator {
|
|
|
73
76
|
throw new Error('Invalid signature in challenge submission feature');
|
|
74
77
|
}
|
|
75
78
|
const writer = new BinaryWriter();
|
|
76
|
-
writer.writeBytes(feature.data.publicKey.
|
|
79
|
+
writer.writeBytes(feature.data.publicKey.toBuffer());
|
|
77
80
|
writer.writeBytes(feature.data.solution);
|
|
78
81
|
if (feature.data.graffiti) {
|
|
79
82
|
writer.writeBytesWithLength(feature.data.graffiti);
|
|
80
83
|
}
|
|
81
84
|
return Buffer.from(writer.getBuffer());
|
|
82
85
|
}
|
|
86
|
+
encodeLinkRequest(feature) {
|
|
87
|
+
const data = feature.data;
|
|
88
|
+
const writer = new BinaryWriter();
|
|
89
|
+
writer.writeU8(data.level);
|
|
90
|
+
writer.writeBytes(data.hashedPublicKey);
|
|
91
|
+
writer.writeBoolean(data.verifyRequest);
|
|
92
|
+
if (data.verifyRequest) {
|
|
93
|
+
if (!data.publicKey || !data.mldsaSignature) {
|
|
94
|
+
throw new Error('MLDSA public key and signature required when verifyRequest is true');
|
|
95
|
+
}
|
|
96
|
+
writer.writeBytes(data.publicKey);
|
|
97
|
+
writer.writeBytes(data.mldsaSignature);
|
|
98
|
+
}
|
|
99
|
+
if (!data.legacySignature || data.legacySignature.length !== 64) {
|
|
100
|
+
throw new Error('Legacy signature must be exactly 64 bytes');
|
|
101
|
+
}
|
|
102
|
+
writer.writeBytes(data.legacySignature);
|
|
103
|
+
return Buffer.from(writer.getBuffer());
|
|
104
|
+
}
|
|
83
105
|
}
|
|
84
106
|
Generator.DATA_CHUNK_SIZE = 512;
|
|
85
107
|
Generator.MAGIC = Buffer.from('op', 'utf-8');
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MLDSASecurityLevel } from '@btc-vision/bip32';
|
|
2
|
+
export declare enum MLDSAPublicKeyMetadata {
|
|
3
|
+
MLDSA44 = 1312,
|
|
4
|
+
MLDSA65 = 1952,
|
|
5
|
+
MLDSA87 = 2592
|
|
6
|
+
}
|
|
7
|
+
export interface MLDSARequestData {
|
|
8
|
+
readonly verifyRequest: boolean;
|
|
9
|
+
readonly publicKey: Uint8Array | Buffer | null;
|
|
10
|
+
readonly hashedPublicKey: Uint8Array | Buffer;
|
|
11
|
+
readonly level: MLDSASecurityLevel;
|
|
12
|
+
readonly mldsaSignature: Uint8Array | Buffer | null;
|
|
13
|
+
readonly legacySignature: Uint8Array | Buffer;
|
|
14
|
+
}
|
|
15
|
+
export declare function getLevelFromPublicKeyLength(length: number): MLDSASecurityLevel;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MLDSASecurityLevel } from '@btc-vision/bip32';
|
|
2
|
+
export var MLDSAPublicKeyMetadata;
|
|
3
|
+
(function (MLDSAPublicKeyMetadata) {
|
|
4
|
+
MLDSAPublicKeyMetadata[MLDSAPublicKeyMetadata["MLDSA44"] = 1312] = "MLDSA44";
|
|
5
|
+
MLDSAPublicKeyMetadata[MLDSAPublicKeyMetadata["MLDSA65"] = 1952] = "MLDSA65";
|
|
6
|
+
MLDSAPublicKeyMetadata[MLDSAPublicKeyMetadata["MLDSA87"] = 2592] = "MLDSA87";
|
|
7
|
+
})(MLDSAPublicKeyMetadata || (MLDSAPublicKeyMetadata = {}));
|
|
8
|
+
export function getLevelFromPublicKeyLength(length) {
|
|
9
|
+
switch (length) {
|
|
10
|
+
case MLDSAPublicKeyMetadata.MLDSA44:
|
|
11
|
+
return MLDSASecurityLevel.LEVEL2;
|
|
12
|
+
case MLDSAPublicKeyMetadata.MLDSA65:
|
|
13
|
+
return MLDSASecurityLevel.LEVEL3;
|
|
14
|
+
case MLDSAPublicKeyMetadata.MLDSA87:
|
|
15
|
+
return MLDSASecurityLevel.LEVEL5;
|
|
16
|
+
default:
|
|
17
|
+
throw new Error(`Invalid MLDSA public key length: ${length}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -41,7 +41,7 @@ export class CalldataGenerator extends Generator {
|
|
|
41
41
|
let compiledData = [
|
|
42
42
|
this.getHeader(maxPriority, featuresList),
|
|
43
43
|
opcodes.OP_TOALTSTACK,
|
|
44
|
-
challenge.publicKey.
|
|
44
|
+
challenge.publicKey.toBuffer(),
|
|
45
45
|
opcodes.OP_TOALTSTACK,
|
|
46
46
|
challenge.solution,
|
|
47
47
|
opcodes.OP_TOALTSTACK,
|
|
@@ -33,7 +33,7 @@ export class DeploymentGenerator extends Generator {
|
|
|
33
33
|
const compiledData = [
|
|
34
34
|
this.getHeader(maxPriority, featuresList),
|
|
35
35
|
opcodes.OP_TOALTSTACK,
|
|
36
|
-
challenge.publicKey.
|
|
36
|
+
challenge.publicKey.toBuffer(),
|
|
37
37
|
opcodes.OP_TOALTSTACK,
|
|
38
38
|
challenge.solution,
|
|
39
39
|
opcodes.OP_TOALTSTACK,
|
|
@@ -25,7 +25,7 @@ export class P2WDAGenerator extends Generator {
|
|
|
25
25
|
writer.writeU8(P2WDAGenerator.P2WDA_VERSION);
|
|
26
26
|
writer.writeBytes(this.getHeader(maxPriority, features.map((f) => f.opcode)));
|
|
27
27
|
writer.writeBytes(contractSecret);
|
|
28
|
-
writer.writeBytes(challenge.publicKey.
|
|
28
|
+
writer.writeBytes(challenge.publicKey.toBuffer());
|
|
29
29
|
writer.writeBytes(challenge.solution);
|
|
30
30
|
writer.writeU32(calldata.length);
|
|
31
31
|
writer.writeBytes(calldata);
|