@btc-vision/transaction 1.0.53 → 1.0.55

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 (250) hide show
  1. package/.gitattributes +2 -2
  2. package/browser/_version.d.ts +1 -1
  3. package/browser/index.js +1 -1
  4. package/browser/transaction/browser/Web3Provider.d.ts +1 -1
  5. package/browser/transaction/builders/TapUnwarpTransaction.d.ts +40 -40
  6. package/browser/transaction/builders/UnwarpTransaction.d.ts +34 -34
  7. package/browser/utxo/UTXOManager.d.ts +7 -7
  8. package/build/_version.d.ts +1 -1
  9. package/build/_version.js +1 -1
  10. package/build/transaction/browser/Web3Provider.d.ts +1 -1
  11. package/build/transaction/builders/UnwrapTransaction.js +2 -2
  12. package/gulpfile.js +152 -152
  13. package/package.json +3 -1
  14. package/src/_version.ts +1 -1
  15. package/src/consensus/Consensus.ts +36 -36
  16. package/src/consensus/ConsensusConfig.ts +39 -39
  17. package/src/crypto/crypto-browser.js +75 -75
  18. package/src/generators/AddressGenerator.ts +24 -24
  19. package/src/generators/Features.ts +5 -5
  20. package/src/generators/Generator.ts +75 -75
  21. package/src/generators/builders/CalldataGenerator.ts +148 -148
  22. package/src/generators/builders/DeploymentGenerator.ts +66 -66
  23. package/src/index.ts +4 -4
  24. package/src/keypair/AddressVerificator.ts +40 -40
  25. package/src/keypair/EcKeyPair.ts +282 -282
  26. package/src/keypair/Wallet.ts +97 -97
  27. package/src/keypair/interfaces/IWallet.ts +19 -19
  28. package/src/metadata/ContractBaseMetadata.ts +23 -23
  29. package/src/metadata/contracts/wBTC.ts +45 -45
  30. package/src/metadata/tokens.ts +7 -7
  31. package/src/network/NetworkInformation.ts +7 -7
  32. package/src/opnet.ts +84 -84
  33. package/src/transaction/TransactionFactory.ts +466 -466
  34. package/src/transaction/browser/BrowserSignerBase.ts +37 -37
  35. package/src/transaction/browser/Web3Provider.ts +46 -46
  36. package/src/transaction/browser/extensions/UnisatSigner.ts +218 -218
  37. package/src/transaction/browser/types/Unisat.ts +80 -80
  38. package/src/transaction/builders/FundingTransaction.ts +40 -40
  39. package/src/transaction/builders/InteractionTransaction.ts +38 -38
  40. package/src/transaction/builders/SharedInteractionTransaction.ts +368 -368
  41. package/src/transaction/builders/TransactionBuilder.ts +665 -665
  42. package/src/transaction/builders/UnwrapTransaction.ts +2 -2
  43. package/src/transaction/interfaces/ITransactionParameters.ts +55 -55
  44. package/src/transaction/interfaces/Tap.ts +26 -26
  45. package/src/transaction/psbt/PSBTTypes.ts +3 -3
  46. package/src/transaction/shared/TweakedTransaction.ts +537 -537
  47. package/src/utxo/OPNetLimitedProvider.ts +244 -244
  48. package/src/utxo/interfaces/BroadcastResponse.ts +10 -10
  49. package/src/utxo/interfaces/IUTXO.ts +29 -29
  50. package/src/verification/TapscriptVerificator.ts +89 -89
  51. package/src/wbtc/Generate.ts +40 -40
  52. package/src/wbtc/UnwrapGeneration.ts +13 -13
  53. package/src/wbtc/WrappedGenerationParameters.ts +33 -33
  54. package/webpack.config.js +78 -78
  55. package/build/Utils.d.ts +0 -0
  56. package/build/Utils.js +0 -1
  57. package/build/consensus/metadata/RoswsellConsensus.d.ts +0 -2
  58. package/build/consensus/metadata/RoswsellConsensus.js +0 -4
  59. package/build/contracts/ContractMetadataManager.d.ts +0 -0
  60. package/build/contracts/ContractMetadataManager.js +0 -1
  61. package/build/generators/OPNetAddressGenerator.d.ts +0 -0
  62. package/build/generators/OPNetAddressGenerator.js +0 -1
  63. package/build/generators/builders/UnwrapGenerator.d.ts +0 -8
  64. package/build/generators/builders/UnwrapGenerator.js +0 -79
  65. package/build/keypair/interfaces/GeneratedWallet.d.ts +0 -5
  66. package/build/keypair/interfaces/GeneratedWallet.js +0 -1
  67. package/build/metadata/CommonContracts.d.ts +0 -6
  68. package/build/metadata/CommonContracts.js +0 -5
  69. package/build/metadata/ContractMetadataManager.d.ts +0 -1
  70. package/build/metadata/ContractMetadataManager.js +0 -9
  71. package/build/metadata/contracts/ContractBase.d.ts +0 -9
  72. package/build/metadata/contracts/ContractBase.js +0 -13
  73. package/build/metadata/contracts/ContractBaseMetadata.d.ts +0 -9
  74. package/build/metadata/contracts/ContractBaseMetadata.js +0 -13
  75. package/build/metadata/contracts/ContractMetadataManager.d.ts +0 -0
  76. package/build/metadata/contracts/ContractMetadataManager.js +0 -1
  77. package/build/network/NetworkConverter.d.ts +0 -0
  78. package/build/network/NetworkConverter.js +0 -14
  79. package/build/scripts/Regtest.d.ts +0 -2
  80. package/build/scripts/Regtest.js +0 -15
  81. package/build/scripts/test.d.ts +0 -1
  82. package/build/scripts/test.js +0 -74
  83. package/build/signer/Regtest.d.ts +0 -2
  84. package/build/signer/Regtest.js +0 -15
  85. package/build/tests/Regtest.d.ts +0 -3
  86. package/build/tests/Regtest.js +0 -29
  87. package/build/tests/adaptPSBT.d.ts +0 -1
  88. package/build/tests/adaptPSBT.js +0 -44
  89. package/build/tests/btc/send.d.ts +0 -1
  90. package/build/tests/btc/send.js +0 -35
  91. package/build/tests/btc/transfer.d.ts +0 -1
  92. package/build/tests/btc/transfer.js +0 -35
  93. package/build/tests/createPairReg.d.ts +0 -1
  94. package/build/tests/createPairReg.js +0 -73
  95. package/build/tests/deploy.d.ts +0 -1
  96. package/build/tests/deploy.js +0 -41
  97. package/build/tests/deployMotoRegStep1.d.ts +0 -1
  98. package/build/tests/deployMotoRegStep1.js +0 -85
  99. package/build/tests/deployReg.d.ts +0 -1
  100. package/build/tests/deployReg.js +0 -85
  101. package/build/tests/factory/createPairReg.d.ts +0 -1
  102. package/build/tests/factory/createPairReg.js +0 -13
  103. package/build/tests/gen.d.ts +0 -1
  104. package/build/tests/gen.js +0 -19
  105. package/build/tests/interaction.d.ts +0 -5
  106. package/build/tests/interaction.js +0 -62
  107. package/build/tests/massWrapReg.d.ts +0 -1
  108. package/build/tests/massWrapReg.js +0 -105
  109. package/build/tests/mineReg.d.ts +0 -1
  110. package/build/tests/mineReg.js +0 -19
  111. package/build/tests/moto/airdropToken.d.ts +0 -1
  112. package/build/tests/moto/airdropToken.js +0 -21
  113. package/build/tests/moto/airdropTokens.d.ts +0 -1
  114. package/build/tests/moto/airdropTokens.js +0 -60
  115. package/build/tests/moto/allowance.d.ts +0 -1
  116. package/build/tests/moto/allowance.js +0 -4
  117. package/build/tests/moto/approve.d.ts +0 -1
  118. package/build/tests/moto/approve.js +0 -10
  119. package/build/tests/moto/approveWBTC.d.ts +0 -1
  120. package/build/tests/moto/approveWBTC.js +0 -12
  121. package/build/tests/moto/balanceOf.d.ts +0 -1
  122. package/build/tests/moto/balanceOf.js +0 -12
  123. package/build/tests/moto/transfer.d.ts +0 -1
  124. package/build/tests/moto/transfer.js +0 -16
  125. package/build/tests/motoswap/airdropToken.d.ts +0 -11
  126. package/build/tests/motoswap/airdropToken.js +0 -36
  127. package/build/tests/motoswap/deployMoto.d.ts +0 -4
  128. package/build/tests/motoswap/deployMoto.js +0 -89
  129. package/build/tests/motoswap/deployMotoRegStep1.d.ts +0 -1
  130. package/build/tests/motoswap/deployMotoRegStep1.js +0 -91
  131. package/build/tests/motoswap/deployMotoRegStep2.d.ts +0 -1
  132. package/build/tests/motoswap/deployMotoRegStep2.js +0 -91
  133. package/build/tests/motoswap/deployPool.d.ts +0 -1
  134. package/build/tests/motoswap/deployPool.js +0 -5
  135. package/build/tests/motoswap/deployStep1.d.ts +0 -1
  136. package/build/tests/motoswap/deployStep1.js +0 -5
  137. package/build/tests/motoswap/deployStep2.d.ts +0 -1
  138. package/build/tests/motoswap/deployStep2.js +0 -5
  139. package/build/tests/motoswap/deployStep3.d.ts +0 -1
  140. package/build/tests/motoswap/deployStep3.js +0 -5
  141. package/build/tests/motoswap/interaction.d.ts +0 -3
  142. package/build/tests/motoswap/interaction.js +0 -63
  143. package/build/tests/motoswap/routerAddLiquidity.d.ts +0 -11
  144. package/build/tests/motoswap/routerAddLiquidity.js +0 -35
  145. package/build/tests/multisign.d.ts +0 -1
  146. package/build/tests/multisign.js +0 -47
  147. package/build/tests/multisign2.d.ts +0 -1
  148. package/build/tests/multisign2.js +0 -27
  149. package/build/tests/pool/DecodePoolAddress.d.ts +0 -6
  150. package/build/tests/pool/DecodePoolAddress.js +0 -12
  151. package/build/tests/pool/decodeReserves.d.ts +0 -5
  152. package/build/tests/pool/decodeReserves.js +0 -13
  153. package/build/tests/pool/reserves.d.ts +0 -1
  154. package/build/tests/pool/reserves.js +0 -10
  155. package/build/tests/shared/Utils.d.ts +0 -2
  156. package/build/tests/shared/Utils.js +0 -9
  157. package/build/tests/shared/interaction.d.ts +0 -7
  158. package/build/tests/shared/interaction.js +0 -85
  159. package/build/tests/shared/tokens.d.ts +0 -6
  160. package/build/tests/shared/tokens.js +0 -5
  161. package/build/tests/stakeReg.d.ts +0 -1
  162. package/build/tests/stakeReg.js +0 -73
  163. package/build/tests/stakedReg.d.ts +0 -1
  164. package/build/tests/stakedReg.js +0 -28
  165. package/build/tests/test.d.ts +0 -1
  166. package/build/tests/test.js +0 -51
  167. package/build/tests/test2.d.ts +0 -1
  168. package/build/tests/test2.js +0 -73
  169. package/build/tests/testReg.d.ts +0 -1
  170. package/build/tests/testReg.js +0 -91
  171. package/build/tests/tokens.d.ts +0 -6
  172. package/build/tests/tokens.js +0 -5
  173. package/build/tests/totalRewardReg.d.ts +0 -1
  174. package/build/tests/totalRewardReg.js +0 -28
  175. package/build/tests/transfer.d.ts +0 -1
  176. package/build/tests/transfer.js +0 -74
  177. package/build/tests/transferReg.d.ts +0 -1
  178. package/build/tests/transferReg.js +0 -74
  179. package/build/tests/unStakeReg.d.ts +0 -1
  180. package/build/tests/unStakeReg.js +0 -72
  181. package/build/tests/unwrapReg.d.ts +0 -1
  182. package/build/tests/unwrapReg.js +0 -61
  183. package/build/tests/unwrapReg2.d.ts +0 -1
  184. package/build/tests/unwrapReg2.js +0 -56
  185. package/build/tests/unwrapRegSegwit.d.ts +0 -1
  186. package/build/tests/unwrapRegSegwit.js +0 -83
  187. package/build/tests/wbtc/approve.d.ts +0 -1
  188. package/build/tests/wbtc/approve.js +0 -6
  189. package/build/tests/wbtc/approveWBTC.d.ts +0 -1
  190. package/build/tests/wbtc/approveWBTC.js +0 -12
  191. package/build/tests/wbtc/massWrapReg.d.ts +0 -1
  192. package/build/tests/wbtc/massWrapReg.js +0 -105
  193. package/build/tests/wbtc/transfer.d.ts +0 -1
  194. package/build/tests/wbtc/transfer.js +0 -16
  195. package/build/tests/wbtc/transferReg.d.ts +0 -1
  196. package/build/tests/wbtc/transferReg.js +0 -16
  197. package/build/tests/wbtc/unStakeReg.d.ts +0 -1
  198. package/build/tests/wbtc/unStakeReg.js +0 -72
  199. package/build/tests/wbtc/unwrapReg.d.ts +0 -1
  200. package/build/tests/wbtc/unwrapReg.js +0 -60
  201. package/build/tests/wbtc/unwrapRegSegwit.d.ts +0 -1
  202. package/build/tests/wbtc/unwrapRegSegwit.js +0 -83
  203. package/build/tests/wbtc/withdrawalRequestReg.d.ts +0 -1
  204. package/build/tests/wbtc/withdrawalRequestReg.js +0 -71
  205. package/build/tests/wbtc/wrapReg.d.ts +0 -1
  206. package/build/tests/wbtc/wrapReg.js +0 -65
  207. package/build/tests/wbtc/wrapTest.d.ts +0 -1
  208. package/build/tests/wbtc/wrapTest.js +0 -66
  209. package/build/tests/withdrawalRequestReg.d.ts +0 -1
  210. package/build/tests/withdrawalRequestReg.js +0 -71
  211. package/build/tests/wrap.d.ts +0 -1
  212. package/build/tests/wrap.js +0 -65
  213. package/build/tests/wrapReg.d.ts +0 -1
  214. package/build/tests/wrapReg.js +0 -68
  215. package/build/tests/wrapTest.d.ts +0 -1
  216. package/build/tests/wrapTest.js +0 -66
  217. package/build/tests/wrapTestg.d.ts +0 -1
  218. package/build/tests/wrapTestg.js +0 -66
  219. package/build/tests/writers/allowance.d.ts +0 -3
  220. package/build/tests/writers/allowance.js +0 -10
  221. package/build/tests/writers/approve.d.ts +0 -4
  222. package/build/tests/writers/approve.js +0 -11
  223. package/build/transaction/TransactionBuilder.d.ts +0 -60
  224. package/build/transaction/TransactionBuilder.js +0 -244
  225. package/build/transaction/browser/BrowserSigner.d.ts +0 -11
  226. package/build/transaction/browser/BrowserSigner.js +0 -10
  227. package/build/transaction/browser/extensions/Unisat.d.ts +0 -54
  228. package/build/transaction/browser/extensions/Unisat.js +0 -11
  229. package/build/transaction/builders/GenericTransaction.d.ts +0 -11
  230. package/build/transaction/builders/GenericTransaction.js +0 -23
  231. package/build/transaction/builders/TapUnwarpTransaction.d.ts +0 -37
  232. package/build/transaction/builders/TapUnwarpTransaction.js +0 -201
  233. package/build/transaction/builders/UnwarpSegwitTransaction.d.ts +0 -34
  234. package/build/transaction/builders/UnwarpSegwitTransaction.js +0 -184
  235. package/build/transaction/builders/UnwarpTransaction.d.ts +0 -35
  236. package/build/transaction/builders/UnwarpTransaction.js +0 -199
  237. package/build/transaction/interfaces/ITransactions.d.ts +0 -32
  238. package/build/transaction/interfaces/ITransactions.js +0 -1
  239. package/build/utxo/IUTXO.d.ts +0 -0
  240. package/build/utxo/IUTXO.js +0 -1
  241. package/build/utxo/OPNetUtils.d.ts +0 -7
  242. package/build/utxo/OPNetUtils.js +0 -47
  243. package/build/utxo/UTXOManager.d.ts +0 -7
  244. package/build/utxo/UTXOManager.js +0 -47
  245. package/build/wbtc/BroadcastResponse.d.ts +0 -0
  246. package/build/wbtc/BroadcastResponse.js +0 -1
  247. /package/build/generators/{features.d.ts → Features.d.ts} +0 -0
  248. /package/build/generators/{features.js → Features.js} +0 -0
  249. /package/build/generators/builders/{MultisignGenerator.d.ts → MultiSignGenerator.d.ts} +0 -0
  250. /package/build/generators/builders/{MultisignGenerator.js → MultiSignGenerator.js} +0 -0
@@ -1,66 +0,0 @@
1
- import { Wallet } from '../../keypair/Wallet.js';
2
- import { Testnet } from '../Regtest.js';
3
- import { OPNetLimitedProvider } from '../../utxo/OPNetLimitedProvider.js';
4
- import { networks } from 'bitcoinjs-lib';
5
- import { TransactionFactory } from '../../transaction/TransactionFactory.js';
6
- import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
7
- const network = networks.testnet;
8
- const rpc = new BitcoinRPC();
9
- const wallet = new Wallet(Testnet.wallet, network);
10
- const opnet = new OPNetLimitedProvider('https://testnet.opnet.org');
11
- const factory = new TransactionFactory();
12
- const shouldMineBlock = true;
13
- async function mineBlock() {
14
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
15
- if (!ok) {
16
- throw new Error('Could not mine block');
17
- }
18
- console.log(`Mined block`, ok);
19
- return !!ok.length;
20
- }
21
- await rpc.init(Testnet.config);
22
- const wrapAmount = 1n * 100000000n;
23
- const utxoSetting = {
24
- addresses: [wallet.p2wpkh, wallet.p2tr],
25
- minAmount: 10000n,
26
- requestedAmount: wrapAmount,
27
- };
28
- const utxos = await opnet.fetchUTXOMultiAddr(utxoSetting);
29
- if (!utxos) {
30
- throw new Error('No UTXOs found');
31
- }
32
- const generationParameters = await opnet.fetchWrapParameters(wrapAmount);
33
- if (!generationParameters) {
34
- throw new Error('No generation parameters found');
35
- }
36
- const wrapParameters = {
37
- from: wallet.p2wpkh,
38
- utxos: utxos,
39
- signer: wallet.keypair,
40
- network: network,
41
- feeRate: 500,
42
- priorityFee: 50000n,
43
- receiver: wallet.p2tr,
44
- amount: wrapAmount,
45
- generationParameters: generationParameters,
46
- };
47
- const finalTx = await factory.wrap(wrapParameters);
48
- console.log(`Final transaction:`, finalTx);
49
- const firstTxBroadcast = await rpc.sendRawTransaction({
50
- hexstring: finalTx.transaction[0],
51
- });
52
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
53
- if (!firstTxBroadcast) {
54
- throw new Error('Could not broadcast first transaction');
55
- }
56
- const secondTxBroadcast = await rpc.sendRawTransaction({
57
- hexstring: finalTx.transaction[1],
58
- });
59
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
60
- if (!secondTxBroadcast) {
61
- throw new Error('Could not broadcast second transaction');
62
- }
63
- if (shouldMineBlock) {
64
- await mineBlock();
65
- }
66
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,71 +0,0 @@
1
- import { wBTC } from '../metadata/contracts/wBTC.js';
2
- import { Wallet } from '../keypair/Wallet.js';
3
- import { Regtest } from './Regtest.js';
4
- import { OPNetLimitedProvider } from '../utxo/OPNetLimitedProvider.js';
5
- import { networks } from 'bitcoinjs-lib';
6
- import { TransactionFactory } from '../transaction/TransactionFactory.js';
7
- import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
8
- import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
9
- const network = networks.regtest;
10
- const rpc = new BitcoinRPC();
11
- const wBtc = new wBTC(network);
12
- const wallet = new Wallet(Regtest.wallet, network);
13
- const utxoManager = new OPNetLimitedProvider('http://localhost:9001');
14
- const factory = new TransactionFactory();
15
- const abiCoder = new ABICoder();
16
- const stakeSelector = Number(`0x` + abiCoder.encodeSelector('requestWithdrawal'));
17
- function generateCalldata(amount) {
18
- const addCalldata = new BinaryWriter();
19
- addCalldata.writeSelector(stakeSelector);
20
- addCalldata.writeU256(amount);
21
- return Buffer.from(addCalldata.getBuffer());
22
- }
23
- const shouldMineBlock = true;
24
- async function mineBlock() {
25
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
26
- if (!ok) {
27
- throw new Error('Could not mine block');
28
- }
29
- console.log(`Mined block`, ok);
30
- return !!ok.length;
31
- }
32
- await rpc.init(Regtest.config);
33
- const utxoSetting = {
34
- addresses: [wallet.p2wpkh, wallet.p2tr],
35
- minAmount: 10000n,
36
- requestedAmount: 100000n,
37
- };
38
- const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
39
- if (!utxos) {
40
- throw new Error('No UTXOs found');
41
- }
42
- const calldata = generateCalldata(252600n);
43
- const interactionParameters = {
44
- from: wallet.p2wpkh,
45
- to: wBtc.getAddress(),
46
- utxos: utxos,
47
- signer: wallet.keypair,
48
- network: network,
49
- feeRate: 1000,
50
- priorityFee: 100000n,
51
- calldata: calldata,
52
- };
53
- const finalTx = factory.signInteraction(interactionParameters);
54
- const firstTxBroadcast = await rpc.sendRawTransaction({
55
- hexstring: finalTx[0],
56
- });
57
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
58
- if (!firstTxBroadcast) {
59
- throw new Error('Could not broadcast first transaction');
60
- }
61
- const secondTxBroadcast = await rpc.sendRawTransaction({
62
- hexstring: finalTx[1],
63
- });
64
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
65
- if (!secondTxBroadcast) {
66
- throw new Error('Could not broadcast second transaction');
67
- }
68
- if (shouldMineBlock) {
69
- await mineBlock();
70
- }
71
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,65 +0,0 @@
1
- import { Wallet } from '../keypair/Wallet.js';
2
- import { Regtest } from './Regtest.js';
3
- import { OPNetLimitedProvider } from '../utxo/OPNetLimitedProvider.js';
4
- import { networks } from 'bitcoinjs-lib';
5
- import { TransactionFactory } from '../transaction/TransactionFactory.js';
6
- import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
7
- const network = networks.regtest;
8
- const rpc = new BitcoinRPC();
9
- const wallet = new Wallet(Regtest.wallet, network);
10
- const opnet = new OPNetLimitedProvider('http://localhost:9001');
11
- const factory = new TransactionFactory();
12
- const shouldMineBlock = false;
13
- async function mineBlock() {
14
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
15
- if (!ok) {
16
- throw new Error('Could not mine block');
17
- }
18
- console.log(`Mined block`, ok);
19
- return !!ok.length;
20
- }
21
- await rpc.init(Regtest.config);
22
- const wrapAmount = 1000000n;
23
- const utxoSetting = {
24
- address: wallet.p2wpkh,
25
- minAmount: 10000n,
26
- requestedAmount: wrapAmount,
27
- };
28
- const utxos = await opnet.fetchUTXO(utxoSetting);
29
- if (!utxos) {
30
- throw new Error('No UTXOs found');
31
- }
32
- const generationParameters = await opnet.fetchWrapParameters(wrapAmount);
33
- if (!generationParameters) {
34
- throw new Error('No generation parameters found');
35
- }
36
- const wrapParameters = {
37
- from: wallet.p2wpkh,
38
- utxos: utxos,
39
- signer: wallet.keypair,
40
- network: network,
41
- feeRate: 1000,
42
- priorityFee: 50000n,
43
- receiver: wallet.p2tr,
44
- amount: wrapAmount,
45
- generationParameters: generationParameters,
46
- };
47
- const finalTx = factory.wrap(wrapParameters);
48
- console.log(`Final transaction:`, finalTx);
49
- const firstTxBroadcast = await rpc.sendRawTransaction({
50
- hexstring: finalTx.transaction[0],
51
- });
52
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
53
- if (!firstTxBroadcast) {
54
- throw new Error('Could not broadcast first transaction');
55
- }
56
- const secondTxBroadcast = await rpc.sendRawTransaction({
57
- hexstring: finalTx.transaction[1],
58
- });
59
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
60
- if (!secondTxBroadcast) {
61
- throw new Error('Could not broadcast second transaction');
62
- }
63
- if (shouldMineBlock) {
64
- await mineBlock();
65
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,68 +0,0 @@
1
- import { Wallet } from '../keypair/Wallet.js';
2
- import { Regtest } from './Regtest.js';
3
- import { OPNetLimitedProvider } from '../utxo/OPNetLimitedProvider.js';
4
- import { networks } from 'bitcoinjs-lib';
5
- import { TransactionFactory } from '../transaction/TransactionFactory.js';
6
- import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
7
- import { currentConsensusConfig } from '../consensus/ConsensusConfig.js';
8
- const network = networks.regtest;
9
- const rpc = new BitcoinRPC();
10
- const wallet = new Wallet(Regtest.wallet, network);
11
- const opnet = new OPNetLimitedProvider('http://localhost:9001');
12
- const factory = new TransactionFactory();
13
- const shouldMineBlock = true;
14
- async function mineBlock() {
15
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
16
- if (!ok) {
17
- throw new Error('Could not mine block');
18
- }
19
- console.log(`Mined block`, ok);
20
- return !!ok.length;
21
- }
22
- await rpc.init(Regtest.config);
23
- const wrapAmount = (currentConsensusConfig.VAULT_MINIMUM_AMOUNT * 30n) / 10n;
24
- const utxoSetting = {
25
- addresses: [wallet.p2wpkh, wallet.p2tr],
26
- minAmount: 10000n,
27
- requestedAmount: wrapAmount + currentConsensusConfig.UNWRAP_CONSOLIDATION_PREPAID_FEES_SAT,
28
- };
29
- const utxos = await opnet.fetchUTXOMultiAddr(utxoSetting);
30
- if (!utxos) {
31
- throw new Error('No UTXOs found');
32
- }
33
- const generationParameters = await opnet.fetchWrapParameters(wrapAmount);
34
- if (!generationParameters) {
35
- throw new Error('No generation parameters found');
36
- }
37
- console.log(`UTXOs:`, utxos);
38
- const wrapParameters = {
39
- from: wallet.p2wpkh,
40
- utxos: utxos,
41
- signer: wallet.keypair,
42
- network: network,
43
- feeRate: 1000,
44
- priorityFee: 100000n,
45
- receiver: wallet.p2tr,
46
- amount: wrapAmount,
47
- generationParameters: generationParameters,
48
- };
49
- const finalTx = factory.wrap(wrapParameters);
50
- console.log(`Final transaction:`, finalTx);
51
- const firstTxBroadcast = await rpc.sendRawTransaction({
52
- hexstring: finalTx.transaction[0],
53
- });
54
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
55
- if (!firstTxBroadcast) {
56
- throw new Error('Could not broadcast first transaction');
57
- }
58
- const secondTxBroadcast = await rpc.sendRawTransaction({
59
- hexstring: finalTx.transaction[1],
60
- });
61
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
62
- if (!secondTxBroadcast) {
63
- throw new Error('Could not broadcast second transaction');
64
- }
65
- if (shouldMineBlock) {
66
- await mineBlock();
67
- }
68
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,66 +0,0 @@
1
- import { Wallet } from '../keypair/Wallet.js';
2
- import { Testnet } from './Regtest.js';
3
- import { OPNetLimitedProvider } from '../utxo/OPNetLimitedProvider.js';
4
- import { networks } from 'bitcoinjs-lib';
5
- import { TransactionFactory } from '../transaction/TransactionFactory.js';
6
- import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
7
- const network = networks.testnet;
8
- const rpc = new BitcoinRPC();
9
- const wallet = new Wallet(Testnet.wallet, network);
10
- const opnet = new OPNetLimitedProvider('https://testnet.opnet.org');
11
- const factory = new TransactionFactory();
12
- const shouldMineBlock = true;
13
- async function mineBlock() {
14
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
15
- if (!ok) {
16
- throw new Error('Could not mine block');
17
- }
18
- console.log(`Mined block`, ok);
19
- return !!ok.length;
20
- }
21
- await rpc.init(Testnet.config);
22
- const wrapAmount = 1n * 100000000n;
23
- const utxoSetting = {
24
- addresses: [wallet.p2wpkh, wallet.p2tr],
25
- minAmount: 10000n,
26
- requestedAmount: wrapAmount,
27
- };
28
- const utxos = await opnet.fetchUTXOMultiAddr(utxoSetting);
29
- if (!utxos) {
30
- throw new Error('No UTXOs found');
31
- }
32
- const generationParameters = await opnet.fetchWrapParameters(wrapAmount);
33
- if (!generationParameters) {
34
- throw new Error('No generation parameters found');
35
- }
36
- const wrapParameters = {
37
- from: wallet.p2wpkh,
38
- utxos: utxos,
39
- signer: wallet.keypair,
40
- network: network,
41
- feeRate: 500,
42
- priorityFee: 50000n,
43
- receiver: wallet.p2tr,
44
- amount: wrapAmount,
45
- generationParameters: generationParameters,
46
- };
47
- const finalTx = factory.wrap(wrapParameters);
48
- console.log(`Final transaction:`, finalTx);
49
- const firstTxBroadcast = await rpc.sendRawTransaction({
50
- hexstring: finalTx.transaction[0],
51
- });
52
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
53
- if (!firstTxBroadcast) {
54
- throw new Error('Could not broadcast first transaction');
55
- }
56
- const secondTxBroadcast = await rpc.sendRawTransaction({
57
- hexstring: finalTx.transaction[1],
58
- });
59
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
60
- if (!secondTxBroadcast) {
61
- throw new Error('Could not broadcast second transaction');
62
- }
63
- if (shouldMineBlock) {
64
- await mineBlock();
65
- }
66
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,66 +0,0 @@
1
- import { Wallet } from '../keypair/Wallet.js';
2
- import { Regtest } from './Regtest.js';
3
- import { OPNetLimitedProvider } from '../utxo/OPNetLimitedProvider.js';
4
- import { networks } from 'bitcoinjs-lib';
5
- import { TransactionFactory } from '../transaction/TransactionFactory.js';
6
- import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
7
- import { wBTC } from '../metadata/contracts/wBTC.js';
8
- const network = networks.regtest;
9
- const rpc = new BitcoinRPC();
10
- const wallet = new Wallet(Regtest.wallet, network);
11
- const opnet = new OPNetLimitedProvider('http://localhost:9001');
12
- const factory = new TransactionFactory();
13
- const wBtc = new wBTC(network);
14
- const shouldMineBlock = true;
15
- async function mineBlock() {
16
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
17
- if (!ok) {
18
- throw new Error('Could not mine block');
19
- }
20
- console.log(`Mined block`, ok);
21
- return !!ok.length;
22
- }
23
- await rpc.init(Regtest.config);
24
- const wrapAmount = 1000000n;
25
- const utxoSetting = {
26
- address: wallet.p2wpkh,
27
- minAmount: 10000n,
28
- requestedAmount: wrapAmount,
29
- };
30
- const utxos = await opnet.fetchUTXO(utxoSetting);
31
- if (!utxos) {
32
- throw new Error('No UTXOs found');
33
- }
34
- const generationParameters = await opnet.fetchWrapParameters(wrapAmount);
35
- if (!generationParameters) {
36
- throw new Error('No generation parameters found');
37
- }
38
- const wrapParameters = {
39
- from: wallet.p2wpkh,
40
- utxos: utxos,
41
- signer: wallet.keypair,
42
- network: network,
43
- feeRate: 150,
44
- priorityFee: 50000n,
45
- amount: wrapAmount,
46
- generationParameters: generationParameters,
47
- };
48
- const finalTx = factory.wrap(wrapParameters);
49
- console.log(`Final transaction:`, finalTx);
50
- const firstTxBroadcast = await rpc.sendRawTransaction({
51
- hexstring: finalTx.transaction[0],
52
- });
53
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
54
- if (!firstTxBroadcast) {
55
- throw new Error('Could not broadcast first transaction');
56
- }
57
- const secondTxBroadcast = await rpc.sendRawTransaction({
58
- hexstring: finalTx.transaction[1],
59
- });
60
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
61
- if (!secondTxBroadcast) {
62
- throw new Error('Could not broadcast second transaction');
63
- }
64
- if (shouldMineBlock) {
65
- await mineBlock();
66
- }
@@ -1,3 +0,0 @@
1
- /// <reference types="node" />
2
- import { Address } from '@btc-vision/bsi-binary';
3
- export declare function allowance(owner: Address, spender: Address): Buffer;
@@ -1,10 +0,0 @@
1
- import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
2
- const abiCoder = new ABICoder();
3
- const allowanceSelector = Number(`0x` + abiCoder.encodeSelector('allowance'));
4
- export function allowance(owner, spender) {
5
- const calldata = new BinaryWriter();
6
- calldata.writeSelector(allowanceSelector);
7
- calldata.writeAddress(owner);
8
- calldata.writeAddress(spender);
9
- return Buffer.from(calldata.getBuffer());
10
- }
@@ -1,4 +0,0 @@
1
- /// <reference types="node" />
2
- import { Address } from '@btc-vision/bsi-binary';
3
- export declare const MAX_UINT256: bigint;
4
- export declare function approve(spender: Address, amount?: bigint): Buffer;
@@ -1,11 +0,0 @@
1
- import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
2
- const abiCoder = new ABICoder();
3
- const approveSelector = Number(`0x` + abiCoder.encodeSelector('approve'));
4
- export const MAX_UINT256 = 2n ** 256n - 2n;
5
- export function approve(spender, amount = MAX_UINT256) {
6
- const calldata = new BinaryWriter();
7
- calldata.writeSelector(approveSelector);
8
- calldata.writeAddress(spender);
9
- calldata.writeU256(amount);
10
- return Buffer.from(calldata.getBuffer());
11
- }
@@ -1,60 +0,0 @@
1
- /// <reference types="node" />
2
- import { Logger } from '@btc-vision/bsi-common';
3
- import { Network, Payment, Psbt, Signer, Transaction } from 'bitcoinjs-lib';
4
- import { PsbtInputExtended, PsbtOutputExtended, UpdateInput } from './interfaces/Tap.js';
5
- import { TransactionType } from './enums/TransactionType.js';
6
- import { ITransactionParameters } from './interfaces/ITransactionParameters.js';
7
- import { Address } from '@btc-vision/bsi-binary';
8
- import { UTXO } from '../utxo/interfaces/IUTXO.js';
9
- export declare abstract class TransactionBuilder<T extends TransactionType> extends Logger {
10
- protected static readonly LOCK_LEAF_SCRIPT: Buffer;
11
- protected static readonly MINIMUM_DUST: bigint;
12
- abstract readonly type: T;
13
- readonly logColor: string;
14
- transactionFee: bigint;
15
- protected readonly transaction: Psbt;
16
- protected readonly inputs: PsbtInputExtended[];
17
- protected readonly updateInputs: UpdateInput[];
18
- protected readonly outputs: PsbtOutputExtended[];
19
- protected feeOutput: PsbtOutputExtended | null;
20
- protected signed: boolean;
21
- protected tapData: Payment | null;
22
- protected scriptData: Payment | null;
23
- protected totalInputAmount: bigint;
24
- protected readonly signer: Signer;
25
- protected readonly network: Network;
26
- protected readonly feeRate: number;
27
- protected readonly priorityFee: bigint;
28
- protected readonly utxos: UTXO[];
29
- protected to: Address | null;
30
- private _maximumFeeRate;
31
- protected constructor(parameters: ITransactionParameters);
32
- setDestinationAddress(address: Address): void;
33
- setMaximumFeeRate(feeRate: number): void;
34
- signTransaction(): string | null;
35
- getTransaction(): Transaction;
36
- getScriptAddress(): string;
37
- getTapAddress(): string;
38
- addInput(input: PsbtInputExtended): void;
39
- addOutput(output: PsbtOutputExtended): void;
40
- protected calculateTotalUTXOAmount(): bigint;
41
- protected calculateTotalVOutAmount(): bigint;
42
- protected addInputsFromUTXO(): void;
43
- protected witnessStackToScriptWitness(witness: Buffer[]): Buffer;
44
- protected internalInit(): void;
45
- protected abstract buildTransaction(to?: Address): void;
46
- protected generateScriptAddress(): Payment;
47
- protected generateTapData(): Payment;
48
- protected updateInput(input: UpdateInput): void;
49
- protected getWitness(): Buffer;
50
- protected getTapOutput(): Buffer;
51
- protected getInputs(): PsbtInputExtended[];
52
- protected getOutputs(): PsbtOutputExtended[];
53
- protected verifyUTXOValidity(): void;
54
- protected setFeeOutput(output: PsbtOutputExtended): void;
55
- protected abstract getSignerKey(): Signer;
56
- protected internalPubKeyToXOnly(): Buffer;
57
- protected signInputs(transaction: Psbt): void;
58
- private internalBuildTransaction;
59
- private estimateTransactionFees;
60
- }