@btc-vision/transaction 1.2.2 → 1.2.3

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 (80) hide show
  1. package/browser/_version.d.ts +1 -1
  2. package/browser/crypto/crypto-browser.d.ts +1 -1
  3. package/browser/generators/builders/CalldataGenerator.d.ts +1 -1
  4. package/browser/generators/builders/DeploymentGenerator.d.ts +1 -1
  5. package/browser/generators/builders/MineableReward.d.ts +7 -0
  6. package/browser/index.js +1 -1
  7. package/browser/opnet.d.ts +4 -0
  8. package/browser/transaction/TransactionFactory.d.ts +19 -4
  9. package/browser/transaction/browser/WalletConnection.d.ts +18 -0
  10. package/browser/transaction/browser/types/Xverse.d.ts +24 -10
  11. package/browser/transaction/builders/ChallengeSolutionTransaction.d.ts +18 -0
  12. package/browser/transaction/builders/DeploymentTransaction.d.ts +4 -0
  13. package/browser/transaction/builders/SharedInteractionTransaction.d.ts +5 -0
  14. package/browser/transaction/builders/TransactionBuilder.d.ts +2 -0
  15. package/browser/transaction/enums/TransactionType.d.ts +3 -4
  16. package/browser/transaction/interfaces/ITransactionParameters.d.ts +6 -0
  17. package/browser/transaction/mineable/ChallengeGenerator.d.ts +9 -0
  18. package/browser/utxo/interfaces/IUTXO.d.ts +1 -1
  19. package/browser/verification/TapscriptVerificator.d.ts +1 -1
  20. package/build/_version.d.ts +1 -1
  21. package/build/_version.js +1 -1
  22. package/build/generators/Generator.js +1 -1
  23. package/build/generators/builders/CalldataGenerator.d.ts +1 -1
  24. package/build/generators/builders/CalldataGenerator.js +7 -26
  25. package/build/generators/builders/DeploymentGenerator.d.ts +1 -1
  26. package/build/generators/builders/DeploymentGenerator.js +9 -6
  27. package/build/generators/builders/LegacyCalldataGenerator.js +5 -1
  28. package/build/generators/builders/MineableReward.d.ts +7 -0
  29. package/build/generators/builders/MineableReward.js +47 -0
  30. package/build/opnet.d.ts +4 -0
  31. package/build/opnet.js +4 -0
  32. package/build/transaction/TransactionFactory.d.ts +19 -4
  33. package/build/transaction/TransactionFactory.js +32 -0
  34. package/build/transaction/browser/WalletConnection.d.ts +18 -0
  35. package/build/transaction/browser/WalletConnection.js +95 -0
  36. package/build/transaction/browser/extensions/UnisatSigner.js +5 -2
  37. package/build/transaction/browser/extensions/XverseSigner.js +15 -9
  38. package/build/transaction/browser/types/Xverse.d.ts +24 -10
  39. package/build/transaction/builders/ChallengeSolutionTransaction.d.ts +18 -0
  40. package/build/transaction/builders/ChallengeSolutionTransaction.js +51 -0
  41. package/build/transaction/builders/DeploymentTransaction.d.ts +4 -0
  42. package/build/transaction/builders/DeploymentTransaction.js +23 -4
  43. package/build/transaction/builders/InteractionTransaction.js +1 -1
  44. package/build/transaction/builders/SharedInteractionTransaction.d.ts +5 -0
  45. package/build/transaction/builders/SharedInteractionTransaction.js +35 -13
  46. package/build/transaction/builders/TransactionBuilder.d.ts +2 -0
  47. package/build/transaction/builders/TransactionBuilder.js +2 -0
  48. package/build/transaction/enums/TransactionType.d.ts +3 -4
  49. package/build/transaction/enums/TransactionType.js +3 -4
  50. package/build/transaction/interfaces/ITransactionParameters.d.ts +6 -0
  51. package/build/transaction/mineable/ChallengeGenerator.d.ts +9 -0
  52. package/build/transaction/mineable/ChallengeGenerator.js +28 -0
  53. package/build/transaction/shared/TweakedTransaction.js +1 -1
  54. package/build/utxo/interfaces/IUTXO.d.ts +1 -1
  55. package/build/verification/TapscriptVerificator.d.ts +1 -1
  56. package/build/verification/TapscriptVerificator.js +2 -8
  57. package/package.json +3 -3
  58. package/src/_version.ts +1 -1
  59. package/src/generators/Generator.ts +1 -1
  60. package/src/generators/builders/CalldataGenerator.ts +10 -41
  61. package/src/generators/builders/DeploymentGenerator.ts +18 -7
  62. package/src/generators/builders/LegacyCalldataGenerator.ts +5 -1
  63. package/src/generators/builders/MineableReward.ts +63 -0
  64. package/src/opnet.ts +5 -0
  65. package/src/transaction/TransactionFactory.ts +66 -3
  66. package/src/transaction/browser/WalletConnection.ts +110 -0
  67. package/src/transaction/browser/extensions/UnisatSigner.ts +7 -3
  68. package/src/transaction/browser/extensions/XverseSigner.ts +24 -23
  69. package/src/transaction/browser/types/Xverse.ts +50 -36
  70. package/src/transaction/builders/ChallengeSolutionTransaction.ts +88 -0
  71. package/src/transaction/builders/DeploymentTransaction.ts +46 -3
  72. package/src/transaction/builders/InteractionTransaction.ts +1 -0
  73. package/src/transaction/builders/SharedInteractionTransaction.ts +54 -14
  74. package/src/transaction/builders/TransactionBuilder.ts +3 -0
  75. package/src/transaction/enums/TransactionType.ts +3 -4
  76. package/src/transaction/interfaces/ITransactionParameters.ts +8 -15
  77. package/src/transaction/mineable/ChallengeGenerator.ts +39 -0
  78. package/src/transaction/shared/TweakedTransaction.ts +1 -1
  79. package/src/utxo/interfaces/IUTXO.ts +1 -1
  80. package/src/verification/TapscriptVerificator.ts +3 -18
@@ -3,8 +3,7 @@ export enum TransactionType {
3
3
  FUNDING = 1,
4
4
  DEPLOYMENT = 2,
5
5
  INTERACTION = 3,
6
- WBTC_WRAP = 4,
7
- WBTC_UNWRAP = 5,
8
- MULTI_SIG = 6,
9
- CUSTOM_CODE = 7,
6
+ MULTI_SIG = 4,
7
+ CUSTOM_CODE = 5,
8
+ CHALLENGE_SOLUTION = 6,
10
9
  }
@@ -26,10 +26,17 @@ export interface IFundingTransactionParameters extends ITransactionParameters {
26
26
  splitInputsInto?: number;
27
27
  }
28
28
 
29
+ export interface IChallengeSolutionTransactionParameters extends ITransactionParameters {
30
+ amount: bigint;
31
+
32
+ readonly challengeSolution: Buffer;
33
+ }
34
+
29
35
  export interface SharedInteractionParameters extends ITransactionParameters {
30
36
  calldata?: Buffer;
31
37
  disableAutoRefund?: boolean;
32
38
 
39
+ readonly preimage?: Buffer;
33
40
  readonly randomBytes?: Buffer;
34
41
  }
35
42
 
@@ -39,24 +46,10 @@ export interface IInteractionParameters extends SharedInteractionParameters {
39
46
  readonly to: string;
40
47
  }
41
48
 
42
- /*export interface IWrapParameters extends Omit<SharedInteractionParameters, 'optionalOutputs'> {
43
- readonly to?: string;
44
- readonly from: string;
45
-
46
- readonly amount: bigint;
47
- readonly receiver?: Address;
48
-
49
- readonly generationParameters: WrappedGeneration;
50
- }
51
-
52
- export interface IUnwrapParameters extends Omit<SharedInteractionParameters, 'optionalOutputs'> {
53
- readonly unwrapUTXOs: VaultUTXOs[];
54
- readonly amount: bigint;
55
- }*/
56
-
57
49
  export interface IDeploymentParameters extends Omit<ITransactionParameters, 'to'> {
58
50
  readonly bytecode: Buffer;
59
51
  readonly calldata?: Buffer;
60
52
 
61
53
  readonly randomBytes?: Buffer;
54
+ readonly preimage?: Buffer;
62
55
  }
@@ -0,0 +1,39 @@
1
+ import bitcoin, { Network } from '@btc-vision/bitcoin';
2
+ import { MineableReward } from '../../generators/builders/MineableReward.js';
3
+
4
+ export interface IMineableReward {
5
+ address: string;
6
+ p2shOutputScript: Buffer;
7
+ redeemScript: Buffer;
8
+ }
9
+
10
+ export class ChallengeGenerator {
11
+ public static generateMineableReward(preimage1: Buffer, network: Network): IMineableReward {
12
+ const mineableReward = new MineableReward(Buffer.alloc(0), network);
13
+ const redeemScript = mineableReward.compile(preimage1);
14
+ const p2sh = bitcoin.payments.p2sh({
15
+ redeem: { output: redeemScript },
16
+ network,
17
+ });
18
+
19
+ const outputRedeem: Buffer | undefined = p2sh.redeem?.output;
20
+ if (!outputRedeem) {
21
+ throw new Error('Output redeem is required');
22
+ }
23
+
24
+ if (!p2sh.address) {
25
+ throw new Error('P2SH address is required');
26
+ }
27
+
28
+ const p2shOutputScript: Buffer | undefined = p2sh?.redeem?.output;
29
+ if (!p2shOutputScript) {
30
+ throw new Error('No redeem output');
31
+ }
32
+
33
+ return {
34
+ address: p2sh.address,
35
+ p2shOutputScript,
36
+ redeemScript: redeemScript,
37
+ };
38
+ }
39
+ }
@@ -814,7 +814,7 @@ export abstract class TweakedTransaction extends Logger {
814
814
  } => {
815
815
  const inputDecoded = this.inputs[inputIndex];
816
816
  if (isP2SH && input.partialSig && inputDecoded && inputDecoded.redeemScript) {
817
- const signatures = input.partialSig.map((sig) => sig.signature);
817
+ const signatures = input.partialSig.map((sig) => sig.signature) || [];
818
818
  const scriptSig = script.compile([...signatures, inputDecoded.redeemScript]);
819
819
 
820
820
  return {
@@ -1,4 +1,4 @@
1
- import { ScriptPubKey } from '@btc-vision/bsi-bitcoin-rpc';
1
+ import { ScriptPubKey } from '@btc-vision/bitcoin-rpc';
2
2
 
3
3
  export interface UTXO {
4
4
  readonly transactionId: string;
@@ -9,13 +9,13 @@ import {
9
9
  } from '@btc-vision/bitcoin';
10
10
  import { DeploymentGenerator } from '../generators/builders/DeploymentGenerator.js';
11
11
  import { TransactionBuilder } from '../transaction/builders/TransactionBuilder.js';
12
- import { Address } from '../keypair/Address.js';
13
12
 
14
13
  export interface ContractAddressVerificationParams {
15
14
  readonly deployerPubKey: Buffer;
16
15
  readonly contractSaltPubKey: Buffer;
17
16
  readonly originalSalt: Buffer;
18
17
  readonly bytecode: Buffer;
18
+ readonly preimage: Buffer;
19
19
  readonly calldata?: Buffer;
20
20
  readonly network?: Network;
21
21
  }
@@ -36,6 +36,7 @@ export class TapscriptVerificator {
36
36
  const compiledTargetScript: Buffer = scriptBuilder.compile(
37
37
  params.bytecode,
38
38
  params.originalSalt,
39
+ params.preimage,
39
40
  params.calldata,
40
41
  );
41
42
 
@@ -67,6 +68,7 @@ export class TapscriptVerificator {
67
68
  const compiledTargetScript: Buffer = scriptBuilder.compile(
68
69
  params.bytecode,
69
70
  params.originalSalt,
71
+ params.preimage,
70
72
  params.calldata,
71
73
  );
72
74
 
@@ -112,23 +114,6 @@ export class TapscriptVerificator {
112
114
  return bitCrypto.hash256(buf);
113
115
  }
114
116
 
115
- public static generateContractVirtualAddress(
116
- deployerPubKey: Buffer,
117
- bytecode: Buffer,
118
- saltHash: Buffer,
119
- network: Network = networks.bitcoin,
120
- ): string {
121
- const virtualAddress: Buffer = TapscriptVerificator.getContractSeed(
122
- deployerPubKey,
123
- bytecode,
124
- saltHash,
125
- );
126
-
127
- const address = new Address(virtualAddress);
128
-
129
- return address.p2tr(network);
130
- }
131
-
132
117
  public static generateAddressFromScript(
133
118
  params: ContractAddressVerificationParams,
134
119
  scriptTree: Taptree,