@btc-vision/transaction 1.0.61 → 1.0.63

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 (276) 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/TransactionFactory.d.ts +1 -0
  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/metadata/tokens.js +1 -1
  11. package/build/transaction/TransactionFactory.d.ts +1 -0
  12. package/build/transaction/TransactionFactory.js +4 -0
  13. package/gulpfile.js +152 -152
  14. package/package.json +1 -1
  15. package/src/_version.ts +1 -1
  16. package/src/consensus/Consensus.ts +36 -36
  17. package/src/consensus/ConsensusConfig.ts +39 -39
  18. package/src/crypto/crypto-browser.js +75 -75
  19. package/src/generators/AddressGenerator.ts +24 -24
  20. package/src/generators/Features.ts +5 -5
  21. package/src/generators/Generator.ts +75 -75
  22. package/src/generators/builders/CalldataGenerator.ts +148 -148
  23. package/src/generators/builders/DeploymentGenerator.ts +66 -66
  24. package/src/index.ts +4 -4
  25. package/src/keypair/AddressVerificator.ts +40 -40
  26. package/src/keypair/EcKeyPair.ts +282 -282
  27. package/src/keypair/Wallet.ts +97 -97
  28. package/src/keypair/interfaces/IWallet.ts +19 -19
  29. package/src/metadata/ContractBaseMetadata.ts +23 -23
  30. package/src/metadata/tokens.ts +1 -1
  31. package/src/network/NetworkInformation.ts +7 -7
  32. package/src/opnet.ts +84 -84
  33. package/src/transaction/TransactionFactory.ts +6 -0
  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/interfaces/Tap.ts +26 -26
  43. package/src/transaction/psbt/PSBTTypes.ts +3 -3
  44. package/src/transaction/shared/TweakedTransaction.ts +537 -537
  45. package/src/utxo/OPNetLimitedProvider.ts +244 -244
  46. package/src/utxo/interfaces/BroadcastResponse.ts +10 -10
  47. package/src/utxo/interfaces/IUTXO.ts +29 -29
  48. package/src/verification/TapscriptVerificator.ts +89 -89
  49. package/src/wbtc/Generate.ts +40 -40
  50. package/src/wbtc/UnwrapGeneration.ts +13 -13
  51. package/src/wbtc/WrappedGenerationParameters.ts +33 -33
  52. package/webpack.config.js +78 -78
  53. package/build/Utils.d.ts +0 -0
  54. package/build/Utils.js +0 -1
  55. package/build/consensus/metadata/RoswsellConsensus.d.ts +0 -2
  56. package/build/consensus/metadata/RoswsellConsensus.js +0 -4
  57. package/build/contracts/ContractMetadataManager.d.ts +0 -0
  58. package/build/contracts/ContractMetadataManager.js +0 -1
  59. package/build/generators/OPNetAddressGenerator.d.ts +0 -0
  60. package/build/generators/OPNetAddressGenerator.js +0 -1
  61. package/build/generators/builders/UnwrapGenerator.d.ts +0 -8
  62. package/build/generators/builders/UnwrapGenerator.js +0 -79
  63. package/build/keypair/interfaces/GeneratedWallet.d.ts +0 -5
  64. package/build/keypair/interfaces/GeneratedWallet.js +0 -1
  65. package/build/metadata/CommonContracts.d.ts +0 -6
  66. package/build/metadata/CommonContracts.js +0 -5
  67. package/build/metadata/ContractMetadataManager.d.ts +0 -1
  68. package/build/metadata/ContractMetadataManager.js +0 -9
  69. package/build/metadata/contracts/ContractBase.d.ts +0 -9
  70. package/build/metadata/contracts/ContractBase.js +0 -13
  71. package/build/metadata/contracts/ContractBaseMetadata.d.ts +0 -9
  72. package/build/metadata/contracts/ContractBaseMetadata.js +0 -13
  73. package/build/metadata/contracts/ContractMetadataManager.d.ts +0 -0
  74. package/build/metadata/contracts/ContractMetadataManager.js +0 -1
  75. package/build/network/NetworkConverter.d.ts +0 -0
  76. package/build/network/NetworkConverter.js +0 -14
  77. package/build/scripts/Regtest.d.ts +0 -2
  78. package/build/scripts/Regtest.js +0 -15
  79. package/build/scripts/test.d.ts +0 -1
  80. package/build/scripts/test.js +0 -74
  81. package/build/signer/Regtest.d.ts +0 -2
  82. package/build/signer/Regtest.js +0 -15
  83. package/build/tests/Regtest.d.ts +0 -3
  84. package/build/tests/Regtest.js +0 -29
  85. package/build/tests/adaptPSBT.d.ts +0 -1
  86. package/build/tests/adaptPSBT.js +0 -44
  87. package/build/tests/btc/send.d.ts +0 -1
  88. package/build/tests/btc/send.js +0 -35
  89. package/build/tests/btc/transfer.d.ts +0 -1
  90. package/build/tests/btc/transfer.js +0 -35
  91. package/build/tests/createPairReg.d.ts +0 -1
  92. package/build/tests/createPairReg.js +0 -73
  93. package/build/tests/deploy/deployMoto.d.ts +0 -4
  94. package/build/tests/deploy/deployMoto.js +0 -89
  95. package/build/tests/deploy/deployPool.d.ts +0 -1
  96. package/build/tests/deploy/deployPool.js +0 -5
  97. package/build/tests/deploy/deployStep1.d.ts +0 -1
  98. package/build/tests/deploy/deployStep1.js +0 -5
  99. package/build/tests/deploy/deployStep2.d.ts +0 -1
  100. package/build/tests/deploy/deployStep2.js +0 -5
  101. package/build/tests/deploy/deployStep3.d.ts +0 -1
  102. package/build/tests/deploy/deployStep3.js +0 -5
  103. package/build/tests/deploy.d.ts +0 -1
  104. package/build/tests/deploy.js +0 -41
  105. package/build/tests/deployMotoRegStep1.d.ts +0 -1
  106. package/build/tests/deployMotoRegStep1.js +0 -85
  107. package/build/tests/deployReg.d.ts +0 -1
  108. package/build/tests/deployReg.js +0 -85
  109. package/build/tests/factory/createPairReg.d.ts +0 -1
  110. package/build/tests/factory/createPairReg.js +0 -13
  111. package/build/tests/gen.d.ts +0 -1
  112. package/build/tests/gen.js +0 -19
  113. package/build/tests/interaction.d.ts +0 -5
  114. package/build/tests/interaction.js +0 -62
  115. package/build/tests/massWrapReg.d.ts +0 -1
  116. package/build/tests/massWrapReg.js +0 -105
  117. package/build/tests/mineReg.d.ts +0 -1
  118. package/build/tests/mineReg.js +0 -19
  119. package/build/tests/moto/airdropToken.d.ts +0 -1
  120. package/build/tests/moto/airdropToken.js +0 -21
  121. package/build/tests/moto/airdropTokens.d.ts +0 -1
  122. package/build/tests/moto/airdropTokens.js +0 -60
  123. package/build/tests/moto/allowance.d.ts +0 -1
  124. package/build/tests/moto/allowance.js +0 -6
  125. package/build/tests/moto/approve.d.ts +0 -1
  126. package/build/tests/moto/approve.js +0 -10
  127. package/build/tests/moto/approveWBTC.d.ts +0 -1
  128. package/build/tests/moto/approveWBTC.js +0 -12
  129. package/build/tests/moto/balanceOf.d.ts +0 -1
  130. package/build/tests/moto/balanceOf.js +0 -12
  131. package/build/tests/moto/transfer.d.ts +0 -1
  132. package/build/tests/moto/transfer.js +0 -16
  133. package/build/tests/motoswap/airdropToken.d.ts +0 -11
  134. package/build/tests/motoswap/airdropToken.js +0 -36
  135. package/build/tests/motoswap/deployMoto.d.ts +0 -4
  136. package/build/tests/motoswap/deployMoto.js +0 -89
  137. package/build/tests/motoswap/deployMotoRegStep1.d.ts +0 -1
  138. package/build/tests/motoswap/deployMotoRegStep1.js +0 -91
  139. package/build/tests/motoswap/deployMotoRegStep2.d.ts +0 -1
  140. package/build/tests/motoswap/deployMotoRegStep2.js +0 -91
  141. package/build/tests/motoswap/deployPool.d.ts +0 -1
  142. package/build/tests/motoswap/deployPool.js +0 -5
  143. package/build/tests/motoswap/deployStep1.d.ts +0 -1
  144. package/build/tests/motoswap/deployStep1.js +0 -5
  145. package/build/tests/motoswap/deployStep2.d.ts +0 -1
  146. package/build/tests/motoswap/deployStep2.js +0 -5
  147. package/build/tests/motoswap/deployStep3.d.ts +0 -1
  148. package/build/tests/motoswap/deployStep3.js +0 -5
  149. package/build/tests/motoswap/interaction.d.ts +0 -3
  150. package/build/tests/motoswap/interaction.js +0 -63
  151. package/build/tests/motoswap/routerAddLiquidity.d.ts +0 -11
  152. package/build/tests/motoswap/routerAddLiquidity.js +0 -35
  153. package/build/tests/motoswap-router/addLiquidity.d.ts +0 -11
  154. package/build/tests/motoswap-router/addLiquidity.js +0 -36
  155. package/build/tests/motoswap-router/deployMoto.d.ts +0 -4
  156. package/build/tests/motoswap-router/deployMoto.js +0 -89
  157. package/build/tests/motoswap-router/deployPool.d.ts +0 -1
  158. package/build/tests/motoswap-router/deployPool.js +0 -5
  159. package/build/tests/motoswap-router/deployStep1.d.ts +0 -1
  160. package/build/tests/motoswap-router/deployStep1.js +0 -5
  161. package/build/tests/motoswap-router/deployStep2.d.ts +0 -1
  162. package/build/tests/motoswap-router/deployStep2.js +0 -5
  163. package/build/tests/motoswap-router/deployStep3.d.ts +0 -1
  164. package/build/tests/motoswap-router/deployStep3.js +0 -5
  165. package/build/tests/motoswap-router/getAmountsOut.d.ts +0 -5
  166. package/build/tests/motoswap-router/getAmountsOut.js +0 -34
  167. package/build/tests/motoswap-router/routerAddLiquidity.d.ts +0 -11
  168. package/build/tests/motoswap-router/routerAddLiquidity.js +0 -35
  169. package/build/tests/motoswap-router/swap.d.ts +0 -8
  170. package/build/tests/motoswap-router/swap.js +0 -24
  171. package/build/tests/multisign.d.ts +0 -1
  172. package/build/tests/multisign.js +0 -47
  173. package/build/tests/multisign2.d.ts +0 -1
  174. package/build/tests/multisign2.js +0 -27
  175. package/build/tests/pool/DecodePoolAddress.d.ts +0 -6
  176. package/build/tests/pool/DecodePoolAddress.js +0 -12
  177. package/build/tests/pool/decodeReserves.d.ts +0 -5
  178. package/build/tests/pool/decodeReserves.js +0 -13
  179. package/build/tests/pool/reserves.d.ts +0 -1
  180. package/build/tests/pool/reserves.js +0 -18
  181. package/build/tests/shared/Utils.d.ts +0 -2
  182. package/build/tests/shared/Utils.js +0 -14
  183. package/build/tests/shared/interaction.d.ts +0 -7
  184. package/build/tests/shared/interaction.js +0 -85
  185. package/build/tests/shared/tokens.d.ts +0 -6
  186. package/build/tests/shared/tokens.js +0 -5
  187. package/build/tests/stakeReg.d.ts +0 -1
  188. package/build/tests/stakeReg.js +0 -73
  189. package/build/tests/stakedReg.d.ts +0 -1
  190. package/build/tests/stakedReg.js +0 -28
  191. package/build/tests/test.d.ts +0 -1
  192. package/build/tests/test.js +0 -51
  193. package/build/tests/test2.d.ts +0 -1
  194. package/build/tests/test2.js +0 -73
  195. package/build/tests/testReg.d.ts +0 -1
  196. package/build/tests/testReg.js +0 -91
  197. package/build/tests/tokens.d.ts +0 -6
  198. package/build/tests/tokens.js +0 -5
  199. package/build/tests/totalRewardReg.d.ts +0 -1
  200. package/build/tests/totalRewardReg.js +0 -28
  201. package/build/tests/transfer.d.ts +0 -1
  202. package/build/tests/transfer.js +0 -74
  203. package/build/tests/transferReg.d.ts +0 -1
  204. package/build/tests/transferReg.js +0 -74
  205. package/build/tests/unStakeReg.d.ts +0 -1
  206. package/build/tests/unStakeReg.js +0 -72
  207. package/build/tests/unwrapReg.d.ts +0 -1
  208. package/build/tests/unwrapReg.js +0 -61
  209. package/build/tests/unwrapReg2.d.ts +0 -1
  210. package/build/tests/unwrapReg2.js +0 -56
  211. package/build/tests/unwrapRegSegwit.d.ts +0 -1
  212. package/build/tests/unwrapRegSegwit.js +0 -83
  213. package/build/tests/wbtc/approve.d.ts +0 -1
  214. package/build/tests/wbtc/approve.js +0 -6
  215. package/build/tests/wbtc/approveWBTC.d.ts +0 -1
  216. package/build/tests/wbtc/approveWBTC.js +0 -12
  217. package/build/tests/wbtc/massWrapReg.d.ts +0 -1
  218. package/build/tests/wbtc/massWrapReg.js +0 -105
  219. package/build/tests/wbtc/transfer.d.ts +0 -1
  220. package/build/tests/wbtc/transfer.js +0 -16
  221. package/build/tests/wbtc/transferReg.d.ts +0 -1
  222. package/build/tests/wbtc/transferReg.js +0 -16
  223. package/build/tests/wbtc/unStakeReg.d.ts +0 -1
  224. package/build/tests/wbtc/unStakeReg.js +0 -72
  225. package/build/tests/wbtc/unwrapReg.d.ts +0 -1
  226. package/build/tests/wbtc/unwrapReg.js +0 -60
  227. package/build/tests/wbtc/unwrapRegSegwit.d.ts +0 -1
  228. package/build/tests/wbtc/unwrapRegSegwit.js +0 -83
  229. package/build/tests/wbtc/withdrawalRequestReg.d.ts +0 -1
  230. package/build/tests/wbtc/withdrawalRequestReg.js +0 -71
  231. package/build/tests/wbtc/wrapReg.d.ts +0 -1
  232. package/build/tests/wbtc/wrapReg.js +0 -65
  233. package/build/tests/wbtc/wrapTest.d.ts +0 -1
  234. package/build/tests/wbtc/wrapTest.js +0 -66
  235. package/build/tests/withdrawalRequestReg.d.ts +0 -1
  236. package/build/tests/withdrawalRequestReg.js +0 -71
  237. package/build/tests/wrap.d.ts +0 -1
  238. package/build/tests/wrap.js +0 -65
  239. package/build/tests/wrapReg.d.ts +0 -1
  240. package/build/tests/wrapReg.js +0 -68
  241. package/build/tests/wrapTest.d.ts +0 -1
  242. package/build/tests/wrapTest.js +0 -66
  243. package/build/tests/wrapTestg.d.ts +0 -1
  244. package/build/tests/wrapTestg.js +0 -66
  245. package/build/tests/writers/allowance.d.ts +0 -3
  246. package/build/tests/writers/allowance.js +0 -10
  247. package/build/tests/writers/approve.d.ts +0 -4
  248. package/build/tests/writers/approve.js +0 -11
  249. package/build/transaction/TransactionBuilder.d.ts +0 -60
  250. package/build/transaction/TransactionBuilder.js +0 -244
  251. package/build/transaction/browser/BrowserSigner.d.ts +0 -11
  252. package/build/transaction/browser/BrowserSigner.js +0 -10
  253. package/build/transaction/browser/extensions/Unisat.d.ts +0 -54
  254. package/build/transaction/browser/extensions/Unisat.js +0 -11
  255. package/build/transaction/builders/GenericTransaction.d.ts +0 -11
  256. package/build/transaction/builders/GenericTransaction.js +0 -23
  257. package/build/transaction/builders/TapUnwarpTransaction.d.ts +0 -37
  258. package/build/transaction/builders/TapUnwarpTransaction.js +0 -201
  259. package/build/transaction/builders/UnwarpSegwitTransaction.d.ts +0 -34
  260. package/build/transaction/builders/UnwarpSegwitTransaction.js +0 -184
  261. package/build/transaction/builders/UnwarpTransaction.d.ts +0 -35
  262. package/build/transaction/builders/UnwarpTransaction.js +0 -199
  263. package/build/transaction/interfaces/ITransactions.d.ts +0 -32
  264. package/build/transaction/interfaces/ITransactions.js +0 -1
  265. package/build/utxo/IUTXO.d.ts +0 -0
  266. package/build/utxo/IUTXO.js +0 -1
  267. package/build/utxo/OPNetUtils.d.ts +0 -7
  268. package/build/utxo/OPNetUtils.js +0 -47
  269. package/build/utxo/UTXOManager.d.ts +0 -7
  270. package/build/utxo/UTXOManager.js +0 -47
  271. package/build/wbtc/BroadcastResponse.d.ts +0 -0
  272. package/build/wbtc/BroadcastResponse.js +0 -1
  273. /package/build/generators/{features.d.ts → Features.d.ts} +0 -0
  274. /package/build/generators/{features.js → Features.js} +0 -0
  275. /package/build/generators/builders/{MultisignGenerator.d.ts → MultiSignGenerator.d.ts} +0 -0
  276. /package/build/generators/builders/{MultisignGenerator.js → MultiSignGenerator.js} +0 -0
@@ -1,91 +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 { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
8
- const network = networks.regtest;
9
- const rpc = new BitcoinRPC();
10
- const wallet = new Wallet(Regtest.wallet, network);
11
- const utxoManager = new OPNetLimitedProvider('http://localhost:9001');
12
- const factory = new TransactionFactory();
13
- const abiCoder = new ABICoder();
14
- const transferSelector = Number(`0x` + abiCoder.encodeSelector('mintAndApproveWBTC'));
15
- function getTransferToCalldata(to, amount) {
16
- const addCalldata = new BinaryWriter();
17
- addCalldata.writeSelector(transferSelector);
18
- addCalldata.writeU256(amount);
19
- addCalldata.writeAddress(to);
20
- return Buffer.from(addCalldata.getBuffer());
21
- }
22
- const shouldMineBlock = true;
23
- async function mineBlock() {
24
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
25
- if (!ok) {
26
- throw new Error('Could not mine block');
27
- }
28
- console.log(`Mined block`, ok);
29
- return !!ok.length;
30
- }
31
- await rpc.init(Regtest.config);
32
- const requestedAmount = 10000000000000n;
33
- const utxoSetting = {
34
- addresses: [wallet.p2wpkh, wallet.p2tr],
35
- minAmount: 10000n,
36
- requestedAmount: requestedAmount,
37
- };
38
- const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
39
- console.log(`UTXOs:`, utxos);
40
- try {
41
- for (let i = 0; i < 3000; i++) {
42
- if (!utxos) {
43
- console.log(`Used all UTXOs`);
44
- throw new Error('No UTXOs found');
45
- }
46
- const calldata = getTransferToCalldata('bcrt1p4q7vkuvy9k0cez7vs4cp9yuwqxafesmdgtu0g5928w9cdvtax54snmucw8', 520000n);
47
- const utxo = utxos.shift();
48
- if (!utxo) {
49
- break;
50
- }
51
- const interactionParameters = {
52
- from: wallet.p2wpkh,
53
- to: 'bcrt1qs3re7ly4we7wtwncfcv22xcsmas0gngalazm9f',
54
- utxos: [utxo],
55
- signer: wallet.keypair,
56
- network: network,
57
- feeRate: 1000,
58
- priorityFee: 100000n,
59
- calldata: calldata,
60
- };
61
- try {
62
- const finalTx = await factory.signInteraction(interactionParameters);
63
- const firstTxBroadcast = await rpc
64
- .sendRawTransaction({
65
- hexstring: finalTx[0],
66
- })
67
- .catch((e) => { });
68
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
69
- if (!firstTxBroadcast) {
70
- continue;
71
- }
72
- const secondTxBroadcast = await rpc
73
- .sendRawTransaction({
74
- hexstring: finalTx[1],
75
- })
76
- .catch((e) => { });
77
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
78
- if (!secondTxBroadcast) {
79
- }
80
- }
81
- catch (e) { }
82
- }
83
- }
84
- catch (e) {
85
- console.error(e);
86
- }
87
- console.log(`All transactions broadcasted`);
88
- if (shouldMineBlock) {
89
- await mineBlock();
90
- }
91
- rpc.destroy();
@@ -1,6 +0,0 @@
1
- import { Address } from '@btc-vision/bsi-binary';
2
- export declare const FACTORY_ADDRESS: Address;
3
- export declare const POOL_ADDRESS: Address;
4
- export declare const WBTC_ADDRESS: Address;
5
- export declare const MOTO_ADDRESS: Address;
6
- export declare const ROUTER_ADDRESS: Address;
@@ -1,5 +0,0 @@
1
- export const FACTORY_ADDRESS = 'bcrt1qkg4gn2g0zwksthnykuv2ey59dek3sg4tegd90c';
2
- export const POOL_ADDRESS = 'bcrt1qljpxj4sg5dd6v8knx5g6jq9ycsr0wgtwfqxfjs';
3
- export const WBTC_ADDRESS = 'bcrt1qq377w5zsu2p8ywfvr6qa86duy9y8wrdl3jf9td';
4
- export const MOTO_ADDRESS = 'bcrt1qwx9h2fvqlzx84t6jhxa424y7g2ynayt8p9rs38';
5
- export const ROUTER_ADDRESS = 'bcrt1qekusxelmczqcw2cy22m4d0rrmkh29xcrtf4a4r';
@@ -1 +0,0 @@
1
- export {};
@@ -1,28 +0,0 @@
1
- import { Wallet } from '../keypair/Wallet.js';
2
- import { Regtest } from './Regtest.js';
3
- import { networks } from 'bitcoinjs-lib';
4
- import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
5
- import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
6
- const network = networks.regtest;
7
- const rpc = new BitcoinRPC();
8
- const wallet = new Wallet(Regtest.wallet, network);
9
- async function mineBlock() {
10
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
11
- if (!ok) {
12
- throw new Error('Could not mine block');
13
- }
14
- console.log(`Mined block`, ok);
15
- return !!ok.length;
16
- }
17
- await rpc.init(Regtest.config);
18
- const wrapAmount = 1n * 100000000n;
19
- const abiCoder = new ABICoder();
20
- const transferSelector = Number(`0x` + abiCoder.encodeSelector('totalStaked'));
21
- function generateCalldata(to, amount) {
22
- const addCalldata = new BinaryWriter();
23
- addCalldata.writeSelector(transferSelector);
24
- return Buffer.from(addCalldata.getBuffer());
25
- }
26
- const call = generateCalldata(wallet.p2tr, wrapAmount);
27
- console.log('call', call.toString('hex'));
28
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,74 +0,0 @@
1
- import { wBTC } from '../metadata/contracts/wBTC.js';
2
- import { Wallet } from '../keypair/Wallet.js';
3
- import { Testnet } 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.testnet;
10
- const rpc = new BitcoinRPC();
11
- const wBtc = new wBTC(network);
12
- const wallet = new Wallet(Testnet.wallet, network);
13
- const utxoManager = new OPNetLimitedProvider('https://testnet.opnet.org');
14
- const factory = new TransactionFactory();
15
- const abiCoder = new ABICoder();
16
- const transferSelector = Number(`0x` + abiCoder.encodeSelector('transfer'));
17
- function getTransferToCalldata(to, amount) {
18
- const addCalldata = new BinaryWriter();
19
- addCalldata.writeSelector(transferSelector);
20
- addCalldata.writeAddress(to);
21
- addCalldata.writeU256(amount);
22
- return Buffer.from(addCalldata.getBuffer());
23
- }
24
- const shouldMineBlock = false;
25
- async function mineBlock() {
26
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
27
- if (!ok) {
28
- throw new Error('Could not mine block');
29
- }
30
- console.log(`Mined block`, ok);
31
- return !!ok.length;
32
- }
33
- (async () => {
34
- await rpc.init(Testnet.config);
35
- const utxoSetting = {
36
- address: wallet.p2wpkh,
37
- minAmount: 10000n,
38
- requestedAmount: 100000n,
39
- };
40
- const utxos = await utxoManager.fetchUTXO(utxoSetting);
41
- console.log(`UTXOs:`, utxos);
42
- if (!utxos) {
43
- throw new Error('No UTXOs found');
44
- }
45
- const calldata = getTransferToCalldata('tb1pt3ncc5ktfzpry2uvnag06v3jkv4quvmdydf09q8fx6rkgd7f5s8q3aenuk', 5000000n);
46
- const interactionParameters = {
47
- from: wallet.p2wpkh,
48
- to: wBtc.getAddress(),
49
- utxos: utxos,
50
- signer: wallet.keypair,
51
- network: network,
52
- feeRate: 1000,
53
- priorityFee: 50000n,
54
- calldata: calldata,
55
- };
56
- const finalTx = await factory.signInteraction(interactionParameters);
57
- const firstTxBroadcast = await rpc.sendRawTransaction({
58
- hexstring: finalTx[0],
59
- });
60
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
61
- if (!firstTxBroadcast) {
62
- throw new Error('Could not broadcast first transaction');
63
- }
64
- const secondTxBroadcast = await rpc.sendRawTransaction({
65
- hexstring: finalTx[1],
66
- });
67
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
68
- if (!secondTxBroadcast) {
69
- throw new Error('Could not broadcast second transaction');
70
- }
71
- if (shouldMineBlock) {
72
- await mineBlock();
73
- }
74
- })();
@@ -1 +0,0 @@
1
- export {};
@@ -1,74 +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 transferSelector = Number(`0x` + abiCoder.encodeSelector('transfer'));
17
- function getTransferToCalldata(to, amount) {
18
- const addCalldata = new BinaryWriter();
19
- addCalldata.writeSelector(transferSelector);
20
- addCalldata.writeAddress(to);
21
- addCalldata.writeU256(amount);
22
- return Buffer.from(addCalldata.getBuffer());
23
- }
24
- const shouldMineBlock = true;
25
- async function mineBlock() {
26
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
27
- if (!ok) {
28
- throw new Error('Could not mine block');
29
- }
30
- console.log(`Mined block`, ok);
31
- return !!ok.length;
32
- }
33
- await rpc.init(Regtest.config);
34
- const requestedAmount = 1n * 100000000n;
35
- const utxoSetting = {
36
- addresses: [wallet.p2wpkh, wallet.p2tr],
37
- minAmount: 10000n,
38
- requestedAmount: requestedAmount,
39
- };
40
- const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
41
- console.log(`UTXOs:`, utxos);
42
- if (!utxos) {
43
- throw new Error('No UTXOs found');
44
- }
45
- const calldata = getTransferToCalldata('bcrt1p4q7vkuvy9k0cez7vs4cp9yuwqxafesmdgtu0g5928w9cdvtax54snmucw8', 520000n);
46
- const interactionParameters = {
47
- from: wallet.p2wpkh,
48
- to: wBtc.getAddress(),
49
- utxos: utxos,
50
- signer: wallet.keypair,
51
- network: network,
52
- feeRate: 1000,
53
- priorityFee: 100000n,
54
- calldata: calldata,
55
- };
56
- const finalTx = factory.signInteraction(interactionParameters);
57
- const firstTxBroadcast = await rpc.sendRawTransaction({
58
- hexstring: finalTx[0],
59
- });
60
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
61
- if (!firstTxBroadcast) {
62
- throw new Error('Could not broadcast first transaction');
63
- }
64
- const secondTxBroadcast = await rpc.sendRawTransaction({
65
- hexstring: finalTx[1],
66
- });
67
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`, finalTx[1]);
68
- if (!secondTxBroadcast) {
69
- throw new Error('Could not broadcast second transaction');
70
- }
71
- if (shouldMineBlock) {
72
- await mineBlock();
73
- }
74
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,72 +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('unstake'));
17
- function generateCalldata() {
18
- const addCalldata = new BinaryWriter();
19
- addCalldata.writeSelector(stakeSelector);
20
- return Buffer.from(addCalldata.getBuffer());
21
- }
22
- const shouldMineBlock = true;
23
- async function mineBlock() {
24
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
25
- if (!ok) {
26
- throw new Error('Could not mine block');
27
- }
28
- console.log(`Mined block`, ok);
29
- return !!ok.length;
30
- }
31
- await rpc.init(Regtest.config);
32
- const requestedAmount = 1n * 100000000n;
33
- const utxoSetting = {
34
- addresses: [wallet.p2wpkh, wallet.p2tr],
35
- minAmount: 10000n,
36
- requestedAmount: requestedAmount,
37
- };
38
- const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
39
- console.log(`UTXOs:`, utxos);
40
- if (!utxos) {
41
- throw new Error('No UTXOs found');
42
- }
43
- const calldata = generateCalldata();
44
- const interactionParameters = {
45
- from: wallet.p2wpkh,
46
- to: wBtc.getAddress(),
47
- utxos: utxos,
48
- signer: wallet.keypair,
49
- network: network,
50
- feeRate: 1000,
51
- priorityFee: 100000n,
52
- calldata: calldata,
53
- };
54
- const finalTx = factory.signInteraction(interactionParameters);
55
- const firstTxBroadcast = await rpc.sendRawTransaction({
56
- hexstring: finalTx[0],
57
- });
58
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
59
- if (!firstTxBroadcast) {
60
- throw new Error('Could not broadcast first transaction');
61
- }
62
- const secondTxBroadcast = await rpc.sendRawTransaction({
63
- hexstring: finalTx[1],
64
- });
65
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
66
- if (!secondTxBroadcast) {
67
- throw new Error('Could not broadcast second transaction');
68
- }
69
- if (shouldMineBlock) {
70
- await mineBlock();
71
- }
72
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,61 +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 utxoSetting = {
23
- addresses: [wallet.p2wpkh, wallet.p2tr],
24
- minAmount: 10000n,
25
- requestedAmount: 300000n,
26
- };
27
- const utxos = await opnet.fetchUTXOMultiAddr(utxoSetting);
28
- if (!utxos) {
29
- throw new Error('No UTXOs found');
30
- }
31
- const unwrapAmount = (25970n + 330n) * 2n + 200000n;
32
- const unwrapUtxos = await opnet.fetchUnWrapParameters(unwrapAmount, wallet.p2tr);
33
- console.log(unwrapAmount);
34
- if (!unwrapUtxos) {
35
- throw new Error('No UTXOs found for unwrap');
36
- }
37
- const balance = unwrapUtxos.balance;
38
- console.log(`Balance:`, balance);
39
- if (unwrapUtxos.vaultUTXOs.length === 0) {
40
- throw new Error('No UTXOs found for unwrap');
41
- }
42
- const unwrapParameters = {
43
- from: wallet.p2tr,
44
- utxos: utxos,
45
- unwrapUTXOs: unwrapUtxos.vaultUTXOs,
46
- signer: wallet.keypair,
47
- network: network,
48
- feeRate: 100,
49
- priorityFee: 10000n,
50
- amount: unwrapAmount,
51
- };
52
- const finalTx = await factory.unwrap(unwrapParameters);
53
- console.log(finalTx);
54
- const tx2 = await opnet.broadcastTransaction(finalTx.fundingTransaction, false);
55
- console.log(`Broadcasted:`, tx2);
56
- const tx3 = await opnet.broadcastTransaction(finalTx.psbt, true);
57
- console.log(`Broadcasted:`, tx3);
58
- if (shouldMineBlock) {
59
- await mineBlock();
60
- }
61
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,56 +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, Psbt } 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 = false;
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 utxoSetting = {
24
- addresses: [wallet.p2wpkh, wallet.p2tr],
25
- minAmount: 10000n,
26
- requestedAmount: 300000n,
27
- };
28
- const utxos = await opnet.fetchUTXOMultiAddr(utxoSetting);
29
- if (!utxos) {
30
- throw new Error('No UTXOs found');
31
- }
32
- const unwrapAmount = currentConsensusConfig.VAULT_MINIMUM_AMOUNT * 10n;
33
- const unwrapUtxos = await opnet.fetchUnWrapParameters(unwrapAmount, wallet.p2tr);
34
- if (!unwrapUtxos) {
35
- throw new Error('No UTXOs found for unwrap');
36
- }
37
- const unwrapParameters = {
38
- from: wallet.p2tr,
39
- utxos: utxos,
40
- unwrapUTXOs: unwrapUtxos.vaultUTXOs,
41
- signer: wallet.keypair,
42
- network: network,
43
- feeRate: 100,
44
- priorityFee: 10000n,
45
- amount: unwrapAmount,
46
- };
47
- const finalTx = await factory.unwrap(unwrapParameters);
48
- const removedFirstTwoChar = finalTx.psbt.slice(4);
49
- const psbtTransaction2 = Psbt.fromHex(removedFirstTwoChar, { network });
50
- console.log(finalTx);
51
- const tx3 = await opnet.broadcastTransaction(finalTx.psbt, true);
52
- console.log(`Broadcasted:`, tx3);
53
- if (shouldMineBlock) {
54
- await mineBlock();
55
- }
56
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,83 +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 { EcKeyPair } from '../keypair/EcKeyPair.js';
8
- import { PsbtTransaction } from '../transaction/processor/PsbtTransaction.js';
9
- import { currentConsensusConfig } from '../consensus/ConsensusConfig.js';
10
- const network = networks.regtest;
11
- const rpc = new BitcoinRPC();
12
- const wallet = new Wallet(Regtest.wallet, network);
13
- const opnet = new OPNetLimitedProvider('http://localhost:9001');
14
- const factory = new TransactionFactory();
15
- const shouldMineBlock = true;
16
- async function mineBlock() {
17
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
18
- if (!ok) {
19
- throw new Error('Could not mine block');
20
- }
21
- console.log(`Mined block`, ok);
22
- return !!ok.length;
23
- }
24
- await rpc.init(Regtest.config);
25
- const utxoSetting = {
26
- addresses: [wallet.p2wpkh, wallet.p2tr],
27
- minAmount: 10000n,
28
- requestedAmount: 300000n,
29
- };
30
- const utxos = await opnet.fetchUTXOMultiAddr(utxoSetting);
31
- if (!utxos) {
32
- throw new Error('No UTXOs found');
33
- }
34
- const unwrapAmount = currentConsensusConfig.VAULT_MINIMUM_AMOUNT;
35
- const unwrapUtxos = await opnet.fetchUnWrapParameters(unwrapAmount, wallet.p2tr);
36
- if (!unwrapUtxos) {
37
- throw new Error('No UTXOs found for unwrap');
38
- }
39
- const unwrapParameters = {
40
- from: wallet.p2tr,
41
- utxos: utxos,
42
- unwrapUTXOs: unwrapUtxos.vaultUTXOs,
43
- signer: wallet.keypair,
44
- network: network,
45
- feeRate: 100,
46
- priorityFee: 10000n,
47
- amount: unwrapAmount,
48
- };
49
- const finalTx = await factory.unwrapSegwit(unwrapParameters);
50
- console.log(finalTx.psbt, finalTx.fundingTransaction);
51
- const rlSigner2 = EcKeyPair.fromPrivateKey(Buffer.from('c3878546c453bca783fd91965218242eecc32d5443764d4a7f233ff018f002e0', 'hex'), network);
52
- const psbtTransactionData2 = {
53
- signer: rlSigner2,
54
- network: network,
55
- };
56
- const removedFirstTwoChar = finalTx.psbt.slice(2);
57
- const psbtTransaction2 = PsbtTransaction.fromHex(removedFirstTwoChar, psbtTransactionData2);
58
- const s = psbtTransaction2.attemptSignAllInputs();
59
- const f = psbtTransaction2.attemptFinalizeInputs(1);
60
- const newPsbt = psbtTransaction2.toHex();
61
- console.log(s, f, newPsbt);
62
- const realSigner = Wallet.fromWif('cRHbWamSVDkJWwjq5vMtriuFsWcptWmA7z8Nkqotk9vJ891KMBXc', network);
63
- const psbtTransactionData3 = {
64
- signer: realSigner.keypair,
65
- network: network,
66
- };
67
- const psbtTransaction3 = PsbtTransaction.fromHex(newPsbt, psbtTransactionData3);
68
- const s2 = psbtTransaction3.attemptSignAllInputs();
69
- const f2 = psbtTransaction3.attemptFinalizeInputs(1);
70
- if (f2) {
71
- console.log('TRANSACTION IS FINALIZED.');
72
- const finalized = psbtTransaction3.final();
73
- console.log('Finalized:', finalized);
74
- const tx2 = await opnet.broadcastTransaction(finalTx.fundingTransaction, false);
75
- console.log(`Broadcasted:`, tx2);
76
- const tx3 = await opnet.broadcastTransaction(finalized, false);
77
- console.log(`Broadcasted:`, tx3);
78
- await mineBlock();
79
- }
80
- else {
81
- throw new Error('Transaction is not finalized');
82
- }
83
- rpc.destroy();
@@ -1 +0,0 @@
1
- export {};
@@ -1,6 +0,0 @@
1
- import { approve, MAX_UINT256 } from '../writers/approve.js';
2
- import { ROUTER_ADDRESS_REGTEST, WBTC_ADDRESS_REGTEST } from '../../metadata/tokens.js';
3
- import { interact } from '../shared/interaction.js';
4
- const calldata = approve(ROUTER_ADDRESS_REGTEST, MAX_UINT256);
5
- console.log('approve ->', calldata.toString('hex'));
6
- await interact(WBTC_ADDRESS_REGTEST, calldata, false);
@@ -1 +0,0 @@
1
- export {};
@@ -1,12 +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
- const MAX_UINT256 = 2n ** 256n - 1n;
5
- function approve(amount = MAX_UINT256) {
6
- const calldata = new BinaryWriter();
7
- calldata.writeSelector(approveSelector);
8
- calldata.writeU256(amount);
9
- return Buffer.from(calldata.getBuffer());
10
- }
11
- const calldata = approve(MAX_UINT256);
12
- console.log('approve ->', calldata.toString('hex'));
@@ -1 +0,0 @@
1
- export {};