@btc-vision/transaction 1.0.96 → 1.0.99

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 (477) hide show
  1. package/.babelrc +4 -7
  2. package/.prettierrc.json +11 -11
  3. package/CONTRIBUTING.md +71 -71
  4. package/LICENSE.md +62 -62
  5. package/README.md +76 -76
  6. package/browser/_version.d.ts +1 -1
  7. package/browser/bytecode/Compressor.d.ts +0 -1
  8. package/browser/crypto/crypto-browser.d.ts +1 -30
  9. package/browser/crypto/crypto.d.ts +0 -1
  10. package/browser/generators/AddressGenerator.d.ts +0 -1
  11. package/browser/generators/Generator.d.ts +0 -1
  12. package/browser/generators/builders/CalldataGenerator.d.ts +0 -1
  13. package/browser/generators/builders/DeploymentGenerator.d.ts +0 -1
  14. package/browser/generators/builders/MultiSignGenerator.d.ts +0 -1
  15. package/browser/index.js +1 -1
  16. package/browser/keypair/EcKeyPair.d.ts +0 -1
  17. package/browser/keypair/Wallet.d.ts +0 -1
  18. package/browser/signer/TweakedSigner.d.ts +0 -1
  19. package/browser/transaction/browser/BrowserSignerBase.d.ts +0 -1
  20. package/browser/transaction/browser/extensions/UnisatSigner.d.ts +0 -1
  21. package/browser/transaction/builders/DeploymentTransaction.d.ts +0 -1
  22. package/browser/transaction/builders/InteractionTransaction.d.ts +0 -1
  23. package/browser/transaction/builders/MultiSignTransaction.d.ts +0 -1
  24. package/browser/transaction/builders/SharedInteractionTransaction.d.ts +0 -1
  25. package/browser/transaction/builders/TransactionBuilder.d.ts +0 -1
  26. package/browser/transaction/builders/UnwrapSegwitTransaction.d.ts +0 -1
  27. package/browser/transaction/builders/UnwrapTransaction.d.ts +0 -1
  28. package/browser/transaction/builders/WrapTransaction.d.ts +0 -1
  29. package/browser/transaction/interfaces/ITransactionParameters.d.ts +0 -1
  30. package/browser/transaction/interfaces/Tap.d.ts +0 -1
  31. package/browser/transaction/shared/P2TR_MS.d.ts +0 -1
  32. package/browser/transaction/shared/TweakedTransaction.d.ts +0 -1
  33. package/browser/utils/BitcoinUtils.d.ts +0 -1
  34. package/browser/verification/TapscriptVerificator.d.ts +0 -1
  35. package/browser/wbtc/WrappedGenerationParameters.d.ts +0 -1
  36. package/build/bytecode/Compressor.d.ts +0 -1
  37. package/build/bytecode/Compressor.js +4 -4
  38. package/build/crypto/crypto.d.ts +0 -1
  39. package/build/generators/AddressGenerator.d.ts +0 -1
  40. package/build/generators/Generator.d.ts +0 -1
  41. package/build/generators/Generator.js +3 -5
  42. package/build/generators/builders/CalldataGenerator.d.ts +0 -1
  43. package/build/generators/builders/DeploymentGenerator.d.ts +0 -1
  44. package/build/generators/builders/{MultisignGenerator.d.ts → MultiSignGenerator.d.ts} +0 -1
  45. package/build/generators/builders/{MultisignGenerator.js → MultiSignGenerator.js} +1 -1
  46. package/build/keypair/EcKeyPair.d.ts +0 -1
  47. package/build/keypair/EcKeyPair.js +2 -2
  48. package/build/keypair/Wallet.d.ts +0 -1
  49. package/build/keypair/Wallet.js +0 -5
  50. package/build/metadata/ContractBaseMetadata.js +0 -1
  51. package/build/metadata/contracts/wBTC.js +3 -5
  52. package/build/metadata/tokens.js +27 -25
  53. package/build/signer/TweakedSigner.d.ts +0 -1
  54. package/build/transaction/browser/BrowserSignerBase.d.ts +0 -1
  55. package/build/transaction/browser/extensions/UnisatSigner.d.ts +0 -1
  56. package/build/transaction/browser/extensions/UnisatSigner.js +1 -6
  57. package/build/transaction/builders/DeploymentTransaction.d.ts +0 -1
  58. package/build/transaction/builders/DeploymentTransaction.js +25 -33
  59. package/build/transaction/builders/FundingTransaction.js +1 -3
  60. package/build/transaction/builders/InteractionTransaction.d.ts +0 -1
  61. package/build/transaction/builders/InteractionTransaction.js +2 -5
  62. package/build/transaction/builders/MultiSignTransaction.d.ts +0 -1
  63. package/build/transaction/builders/MultiSignTransaction.js +66 -73
  64. package/build/transaction/builders/SharedInteractionTransaction.d.ts +0 -1
  65. package/build/transaction/builders/SharedInteractionTransaction.js +20 -25
  66. package/build/transaction/builders/TransactionBuilder.d.ts +0 -1
  67. package/build/transaction/builders/TransactionBuilder.js +12 -21
  68. package/build/transaction/builders/UnwrapSegwitTransaction.d.ts +0 -1
  69. package/build/transaction/builders/UnwrapSegwitTransaction.js +4 -10
  70. package/build/transaction/builders/UnwrapTransaction.d.ts +0 -1
  71. package/build/transaction/builders/UnwrapTransaction.js +5 -11
  72. package/build/transaction/builders/WrapTransaction.d.ts +0 -1
  73. package/build/transaction/builders/WrapTransaction.js +5 -12
  74. package/build/transaction/interfaces/ITransactionParameters.d.ts +0 -1
  75. package/build/transaction/interfaces/Tap.d.ts +0 -1
  76. package/build/transaction/processor/PsbtTransaction.js +3 -4
  77. package/build/transaction/shared/P2TR_MS.d.ts +0 -1
  78. package/build/transaction/shared/TweakedTransaction.d.ts +0 -1
  79. package/build/transaction/shared/TweakedTransaction.js +11 -16
  80. package/build/utils/BitcoinUtils.d.ts +0 -1
  81. package/build/utxo/OPNetLimitedProvider.js +2 -3
  82. package/build/verification/TapscriptVerificator.d.ts +0 -1
  83. package/build/verification/TapscriptVerificator.js +1 -1
  84. package/build/wbtc/UnwrapGeneration.js +0 -2
  85. package/build/wbtc/WrappedGenerationParameters.d.ts +0 -1
  86. package/build/wbtc/WrappedGenerationParameters.js +0 -6
  87. package/cjs/package.json +3 -0
  88. package/docs/.nojekyll +1 -0
  89. package/docs/assets/highlight.css +43 -0
  90. package/docs/assets/icons.js +15 -0
  91. package/docs/assets/icons.svg +1 -0
  92. package/docs/assets/main.js +59 -0
  93. package/docs/assets/material-style.css +247 -0
  94. package/docs/assets/navigation.js +1 -0
  95. package/docs/assets/search.js +1 -0
  96. package/docs/assets/style.css +1412 -0
  97. package/docs/classes/AddressGenerator.html +177 -0
  98. package/docs/classes/AddressVerificator.html +177 -0
  99. package/docs/classes/BitcoinUtils.html +196 -0
  100. package/docs/classes/CalldataGenerator.html +213 -0
  101. package/docs/classes/Compressor.html +185 -0
  102. package/docs/classes/ContractBaseMetadata.html +182 -0
  103. package/docs/classes/CustomKeypair.html +189 -0
  104. package/docs/classes/DeploymentGenerator.html +201 -0
  105. package/docs/classes/DeploymentTransaction.html +465 -0
  106. package/docs/classes/EcKeyPair.html +280 -0
  107. package/docs/classes/FundingTransaction.html +425 -0
  108. package/docs/classes/Generator.html +199 -0
  109. package/docs/classes/InteractionTransaction.html +467 -0
  110. package/docs/classes/MultiSignGenerator.html +178 -0
  111. package/docs/classes/MultiSignTransaction.html +490 -0
  112. package/docs/classes/OPNetLimitedProvider.html +225 -0
  113. package/docs/classes/OPNetTokenAddressManager.html +182 -0
  114. package/docs/classes/P2TR_MS.html +186 -0
  115. package/docs/classes/PsbtTransaction.html +320 -0
  116. package/docs/classes/SharedInteractionTransaction.html +477 -0
  117. package/docs/classes/TapscriptVerificator.html +180 -0
  118. package/docs/classes/TransactionBuilder.html +423 -0
  119. package/docs/classes/TransactionFactory.html +230 -0
  120. package/docs/classes/TweakedSigner.html +181 -0
  121. package/docs/classes/TweakedTransaction.html +301 -0
  122. package/docs/classes/UnisatSigner.html +199 -0
  123. package/docs/classes/UnwrapGeneration.html +177 -0
  124. package/docs/classes/UnwrapTransaction.html +518 -0
  125. package/docs/classes/Wallet.html +204 -0
  126. package/docs/classes/WrapTransaction.html +509 -0
  127. package/docs/classes/WrappedGeneration.html +187 -0
  128. package/docs/classes/wBTC.html +190 -0
  129. package/docs/enums/ChainId.html +176 -0
  130. package/docs/enums/Consensus.html +204 -0
  131. package/docs/enums/Features.html +175 -0
  132. package/docs/enums/MessageType.html +176 -0
  133. package/docs/enums/OPNetNetwork.html +177 -0
  134. package/docs/enums/PSBTTypes.html +175 -0
  135. package/docs/enums/TransactionSequence.html +177 -0
  136. package/docs/enums/TransactionType.html +181 -0
  137. package/docs/enums/UnisatChainType.html +181 -0
  138. package/docs/enums/UnisatNetwork.html +177 -0
  139. package/docs/hierarchy.html +174 -0
  140. package/docs/index.html +215 -0
  141. package/docs/interfaces/Balance.html +177 -0
  142. package/docs/interfaces/BitcoinTransferResponse.html +178 -0
  143. package/docs/interfaces/BroadcastResponse.html +181 -0
  144. package/docs/interfaces/BroadcastTransactionOptions.html +176 -0
  145. package/docs/interfaces/BroadcastedTransaction.html +184 -0
  146. package/docs/interfaces/ConsensusConfig.html +182 -0
  147. package/docs/interfaces/ContractAddressVerificationParams.html +179 -0
  148. package/docs/interfaces/DeploymentResult.html +178 -0
  149. package/docs/interfaces/FetchUTXOParams.html +178 -0
  150. package/docs/interfaces/FetchUTXOParamsMultiAddress.html +178 -0
  151. package/docs/interfaces/FundingTransactionResponse.html +178 -0
  152. package/docs/interfaces/GenerationConstraints.html +182 -0
  153. package/docs/interfaces/IDeploymentParameters.html +186 -0
  154. package/docs/interfaces/IFundingTransactionParameters.html +186 -0
  155. package/docs/interfaces/IInteractionParameters.html +187 -0
  156. package/docs/interfaces/ITransactionParameters.html +184 -0
  157. package/docs/interfaces/ITweakedTransactionData.html +178 -0
  158. package/docs/interfaces/IUnwrapParameters.html +189 -0
  159. package/docs/interfaces/IWBTCUTXODocument.html +180 -0
  160. package/docs/interfaces/IWallet.html +181 -0
  161. package/docs/interfaces/IWrapParameters.html +190 -0
  162. package/docs/interfaces/MultiSignFromBase64Params.html +188 -0
  163. package/docs/interfaces/MultiSignParameters.html +188 -0
  164. package/docs/interfaces/OPNetTokenMetadata.html +179 -0
  165. package/docs/interfaces/PsbtInputExtended.html +194 -0
  166. package/docs/interfaces/PsbtOutputExtendedAddress.html +183 -0
  167. package/docs/interfaces/PsbtOutputExtendedScript.html +183 -0
  168. package/docs/interfaces/PsbtSignatureOptions.html +176 -0
  169. package/docs/interfaces/PsbtTransactionData.html +179 -0
  170. package/docs/interfaces/RawUTXOResponse.html +178 -0
  171. package/docs/interfaces/SharedInteractionParameters.html +187 -0
  172. package/docs/interfaces/TapLeafScript.html +177 -0
  173. package/docs/interfaces/ToSignInputAddress.html +178 -0
  174. package/docs/interfaces/ToSignInputPublicKey.html +178 -0
  175. package/docs/interfaces/TweakSettings.html +179 -0
  176. package/docs/interfaces/UTXO.html +178 -0
  177. package/docs/interfaces/Unisat.html +190 -0
  178. package/docs/interfaces/UnisatChainInfo.html +177 -0
  179. package/docs/interfaces/UnwrapResult.html +181 -0
  180. package/docs/interfaces/UnwrappedGenerationParameters.html +178 -0
  181. package/docs/interfaces/UpdateInput.html +175 -0
  182. package/docs/interfaces/VaultUTXOs.html +178 -0
  183. package/docs/interfaces/Web3Provider.html +180 -0
  184. package/docs/interfaces/WrapResult.html +179 -0
  185. package/docs/interfaces/WrappedGenerationParameters.html +184 -0
  186. package/docs/modules.html +289 -0
  187. package/docs/types/FromBase64Params.html +174 -0
  188. package/docs/types/IDeploymentParametersWithoutSigner.html +174 -0
  189. package/docs/types/IUnwrapParametersWithoutSigner.html +174 -0
  190. package/docs/types/IWrapParametersWithoutSigner.html +174 -0
  191. package/docs/types/InteractionParametersWithoutSigner.html +174 -0
  192. package/docs/types/PsbtOutputExtended.html +174 -0
  193. package/docs/types/ToSignInput.html +174 -0
  194. package/docs/variables/FACTORY_ADDRESS_FRACTAL.html +174 -0
  195. package/docs/variables/FACTORY_ADDRESS_REGTEST.html +174 -0
  196. package/docs/variables/FACTORY_ADDRESS_TESTNET.html +174 -0
  197. package/docs/variables/MOTO_ADDRESS_FRACTAL.html +174 -0
  198. package/docs/variables/MOTO_ADDRESS_REGTEST.html +174 -0
  199. package/docs/variables/MOTO_ADDRESS_TESTNET.html +174 -0
  200. package/docs/variables/OPNetConsensusConfig.html +174 -0
  201. package/docs/variables/OPNetMetadata.html +174 -0
  202. package/docs/variables/POOL_ADDRESS_FRACTAL.html +174 -0
  203. package/docs/variables/POOL_ADDRESS_REGTEST.html +174 -0
  204. package/docs/variables/POOL_ADDRESS_TESTNET.html +174 -0
  205. package/docs/variables/ROUTER_ADDRESS_FRACTAL.html +174 -0
  206. package/docs/variables/ROUTER_ADDRESS_REGTEST.html +174 -0
  207. package/docs/variables/ROUTER_ADDRESS_TESTNET.html +174 -0
  208. package/docs/variables/RoswellConsensus.html +174 -0
  209. package/docs/variables/WBTC_ADDRESS_FRACTAL.html +174 -0
  210. package/docs/variables/WBTC_ADDRESS_REGTEST.html +174 -0
  211. package/docs/variables/WBTC_ADDRESS_TESTNET.html +174 -0
  212. package/docs/variables/currentConsensus.html +174 -0
  213. package/docs/variables/currentConsensusConfig.html +174 -0
  214. package/docs/variables/version.html +174 -0
  215. package/gulpfile.js +49 -133
  216. package/package.json +112 -113
  217. package/src/bytecode/Compressor.ts +27 -27
  218. package/src/consensus/metadata/RoswellConsensus.ts +26 -26
  219. package/src/crypto/crypto.ts +1 -1
  220. package/src/generators/Generator.ts +75 -75
  221. package/src/generators/builders/MultiSignGenerator.ts +73 -73
  222. package/src/metadata/contracts/wBTC.ts +60 -60
  223. package/src/metadata/tokens.ts +135 -135
  224. package/src/network/ChainId.ts +6 -6
  225. package/src/opnet.ts +82 -82
  226. package/src/signer/TweakedSigner.ts +56 -56
  227. package/src/transaction/builders/DeploymentTransaction.ts +356 -356
  228. package/src/transaction/builders/MultiSignTransaction.ts +659 -659
  229. package/src/transaction/builders/UnwrapSegwitTransaction.ts +365 -365
  230. package/src/transaction/builders/UnwrapTransaction.ts +507 -507
  231. package/src/transaction/enums/TransactionType.ts +9 -9
  232. package/src/transaction/processor/PsbtTransaction.ts +173 -173
  233. package/src/transaction/shared/P2TR_MS.ts +42 -42
  234. package/src/transaction/shared/TweakedTransaction.ts +539 -539
  235. package/src/utils/BitcoinUtils.ts +96 -96
  236. package/tsconfig.base.json +27 -43
  237. package/tsconfig.json +15 -8
  238. package/tsconfig.webpack.json +22 -22
  239. package/EPOCH.md +0 -250
  240. package/VAULT_TARGET_CONSOLIDATION.md +0 -111
  241. package/browser/network/NetworkInformation.d.ts +0 -6
  242. package/browser/transaction/browser/BrowserSigner.d.ts +0 -9
  243. package/browser/transaction/builders/TapUnwarpTransaction.d.ts +0 -40
  244. package/browser/transaction/builders/UnwarpTransaction.d.ts +0 -34
  245. package/browser/utxo/UTXOManager.d.ts +0 -7
  246. package/build/Utils.d.ts +0 -0
  247. package/build/Utils.js +0 -1
  248. package/build/consensus/metadata/RoswsellConsensus.d.ts +0 -2
  249. package/build/consensus/metadata/RoswsellConsensus.js +0 -4
  250. package/build/contracts/ContractMetadataManager.d.ts +0 -0
  251. package/build/contracts/ContractMetadataManager.js +0 -1
  252. package/build/generators/OPNetAddressGenerator.d.ts +0 -0
  253. package/build/generators/OPNetAddressGenerator.js +0 -1
  254. package/build/generators/builders/DeploymentGeneratorV2.d.ts +0 -13
  255. package/build/generators/builders/DeploymentGeneratorV2.js +0 -57
  256. package/build/generators/builders/UnwrapGenerator.d.ts +0 -8
  257. package/build/generators/builders/UnwrapGenerator.js +0 -79
  258. package/build/keypair/interfaces/GeneratedWallet.d.ts +0 -5
  259. package/build/keypair/interfaces/GeneratedWallet.js +0 -1
  260. package/build/metadata/CommonContracts.d.ts +0 -6
  261. package/build/metadata/CommonContracts.js +0 -5
  262. package/build/metadata/ContractMetadataManager.d.ts +0 -1
  263. package/build/metadata/ContractMetadataManager.js +0 -9
  264. package/build/metadata/contracts/ContractBase.d.ts +0 -9
  265. package/build/metadata/contracts/ContractBase.js +0 -13
  266. package/build/metadata/contracts/ContractBaseMetadata.d.ts +0 -9
  267. package/build/metadata/contracts/ContractBaseMetadata.js +0 -13
  268. package/build/metadata/contracts/ContractMetadataManager.d.ts +0 -0
  269. package/build/metadata/contracts/ContractMetadataManager.js +0 -1
  270. package/build/network/NetworkConverter.d.ts +0 -0
  271. package/build/network/NetworkConverter.js +0 -14
  272. package/build/network/NetworkInformation.d.ts +0 -6
  273. package/build/network/NetworkInformation.js +0 -1
  274. package/build/scripts/Regtest.d.ts +0 -2
  275. package/build/scripts/Regtest.js +0 -15
  276. package/build/scripts/test.d.ts +0 -1
  277. package/build/scripts/test.js +0 -74
  278. package/build/signer/Regtest.d.ts +0 -2
  279. package/build/signer/Regtest.js +0 -15
  280. package/build/tests/Regtest.d.ts +0 -3
  281. package/build/tests/Regtest.js +0 -29
  282. package/build/tests/adaptPSBT.d.ts +0 -1
  283. package/build/tests/adaptPSBT.js +0 -44
  284. package/build/tests/btc/send.d.ts +0 -1
  285. package/build/tests/btc/send.js +0 -35
  286. package/build/tests/btc/transfer.d.ts +0 -1
  287. package/build/tests/btc/transfer.js +0 -35
  288. package/build/tests/createPairReg.d.ts +0 -1
  289. package/build/tests/createPairReg.js +0 -73
  290. package/build/tests/deploy/deployMoto.d.ts +0 -4
  291. package/build/tests/deploy/deployMoto.js +0 -89
  292. package/build/tests/deploy/deployPool.d.ts +0 -1
  293. package/build/tests/deploy/deployPool.js +0 -5
  294. package/build/tests/deploy/deployStep1.d.ts +0 -1
  295. package/build/tests/deploy/deployStep1.js +0 -5
  296. package/build/tests/deploy/deployStep2.d.ts +0 -1
  297. package/build/tests/deploy/deployStep2.js +0 -5
  298. package/build/tests/deploy/deployStep3.d.ts +0 -1
  299. package/build/tests/deploy/deployStep3.js +0 -5
  300. package/build/tests/deploy.d.ts +0 -1
  301. package/build/tests/deploy.js +0 -41
  302. package/build/tests/deployMotoRegStep1.d.ts +0 -1
  303. package/build/tests/deployMotoRegStep1.js +0 -85
  304. package/build/tests/deployReg.d.ts +0 -1
  305. package/build/tests/deployReg.js +0 -85
  306. package/build/tests/factory/createPairReg.d.ts +0 -1
  307. package/build/tests/factory/createPairReg.js +0 -13
  308. package/build/tests/gen.d.ts +0 -1
  309. package/build/tests/gen.js +0 -19
  310. package/build/tests/interaction.d.ts +0 -5
  311. package/build/tests/interaction.js +0 -62
  312. package/build/tests/massWrapReg.d.ts +0 -1
  313. package/build/tests/massWrapReg.js +0 -105
  314. package/build/tests/mineReg.d.ts +0 -1
  315. package/build/tests/mineReg.js +0 -19
  316. package/build/tests/moto/airdropToken.d.ts +0 -1
  317. package/build/tests/moto/airdropToken.js +0 -21
  318. package/build/tests/moto/airdropTokens.d.ts +0 -1
  319. package/build/tests/moto/airdropTokens.js +0 -60
  320. package/build/tests/moto/allowance.d.ts +0 -1
  321. package/build/tests/moto/allowance.js +0 -6
  322. package/build/tests/moto/approve.d.ts +0 -1
  323. package/build/tests/moto/approve.js +0 -10
  324. package/build/tests/moto/approveWBTC.d.ts +0 -1
  325. package/build/tests/moto/approveWBTC.js +0 -12
  326. package/build/tests/moto/balanceOf.d.ts +0 -1
  327. package/build/tests/moto/balanceOf.js +0 -12
  328. package/build/tests/moto/transfer.d.ts +0 -1
  329. package/build/tests/moto/transfer.js +0 -16
  330. package/build/tests/motoswap/airdropToken.d.ts +0 -11
  331. package/build/tests/motoswap/airdropToken.js +0 -36
  332. package/build/tests/motoswap/deployMoto.d.ts +0 -4
  333. package/build/tests/motoswap/deployMoto.js +0 -89
  334. package/build/tests/motoswap/deployMotoRegStep1.d.ts +0 -1
  335. package/build/tests/motoswap/deployMotoRegStep1.js +0 -91
  336. package/build/tests/motoswap/deployMotoRegStep2.d.ts +0 -1
  337. package/build/tests/motoswap/deployMotoRegStep2.js +0 -91
  338. package/build/tests/motoswap/deployPool.d.ts +0 -1
  339. package/build/tests/motoswap/deployPool.js +0 -5
  340. package/build/tests/motoswap/deployStep1.d.ts +0 -1
  341. package/build/tests/motoswap/deployStep1.js +0 -5
  342. package/build/tests/motoswap/deployStep2.d.ts +0 -1
  343. package/build/tests/motoswap/deployStep2.js +0 -5
  344. package/build/tests/motoswap/deployStep3.d.ts +0 -1
  345. package/build/tests/motoswap/deployStep3.js +0 -5
  346. package/build/tests/motoswap/interaction.d.ts +0 -3
  347. package/build/tests/motoswap/interaction.js +0 -63
  348. package/build/tests/motoswap/routerAddLiquidity.d.ts +0 -11
  349. package/build/tests/motoswap/routerAddLiquidity.js +0 -35
  350. package/build/tests/motoswap-router/addLiquidity.d.ts +0 -11
  351. package/build/tests/motoswap-router/addLiquidity.js +0 -36
  352. package/build/tests/motoswap-router/deployMoto.d.ts +0 -4
  353. package/build/tests/motoswap-router/deployMoto.js +0 -89
  354. package/build/tests/motoswap-router/deployPool.d.ts +0 -1
  355. package/build/tests/motoswap-router/deployPool.js +0 -5
  356. package/build/tests/motoswap-router/deployStep1.d.ts +0 -1
  357. package/build/tests/motoswap-router/deployStep1.js +0 -5
  358. package/build/tests/motoswap-router/deployStep2.d.ts +0 -1
  359. package/build/tests/motoswap-router/deployStep2.js +0 -5
  360. package/build/tests/motoswap-router/deployStep3.d.ts +0 -1
  361. package/build/tests/motoswap-router/deployStep3.js +0 -5
  362. package/build/tests/motoswap-router/getAmountsOut.d.ts +0 -5
  363. package/build/tests/motoswap-router/getAmountsOut.js +0 -34
  364. package/build/tests/motoswap-router/routerAddLiquidity.d.ts +0 -11
  365. package/build/tests/motoswap-router/routerAddLiquidity.js +0 -35
  366. package/build/tests/motoswap-router/swap.d.ts +0 -8
  367. package/build/tests/motoswap-router/swap.js +0 -24
  368. package/build/tests/multisign.d.ts +0 -1
  369. package/build/tests/multisign.js +0 -47
  370. package/build/tests/multisign2.d.ts +0 -1
  371. package/build/tests/multisign2.js +0 -27
  372. package/build/tests/pool/DecodePoolAddress.d.ts +0 -6
  373. package/build/tests/pool/DecodePoolAddress.js +0 -12
  374. package/build/tests/pool/decodeReserves.d.ts +0 -5
  375. package/build/tests/pool/decodeReserves.js +0 -13
  376. package/build/tests/pool/reserves.d.ts +0 -1
  377. package/build/tests/pool/reserves.js +0 -18
  378. package/build/tests/shared/Utils.d.ts +0 -2
  379. package/build/tests/shared/Utils.js +0 -14
  380. package/build/tests/shared/interaction.d.ts +0 -7
  381. package/build/tests/shared/interaction.js +0 -85
  382. package/build/tests/shared/tokens.d.ts +0 -6
  383. package/build/tests/shared/tokens.js +0 -5
  384. package/build/tests/stakeReg.d.ts +0 -1
  385. package/build/tests/stakeReg.js +0 -73
  386. package/build/tests/stakedReg.d.ts +0 -1
  387. package/build/tests/stakedReg.js +0 -28
  388. package/build/tests/test.d.ts +0 -1
  389. package/build/tests/test.js +0 -51
  390. package/build/tests/test2.d.ts +0 -1
  391. package/build/tests/test2.js +0 -73
  392. package/build/tests/testReg.d.ts +0 -1
  393. package/build/tests/testReg.js +0 -91
  394. package/build/tests/tokens.d.ts +0 -6
  395. package/build/tests/tokens.js +0 -5
  396. package/build/tests/totalRewardReg.d.ts +0 -1
  397. package/build/tests/totalRewardReg.js +0 -28
  398. package/build/tests/transfer.d.ts +0 -1
  399. package/build/tests/transfer.js +0 -74
  400. package/build/tests/transferReg.d.ts +0 -1
  401. package/build/tests/transferReg.js +0 -74
  402. package/build/tests/unStakeReg.d.ts +0 -1
  403. package/build/tests/unStakeReg.js +0 -72
  404. package/build/tests/unwrapReg.d.ts +0 -1
  405. package/build/tests/unwrapReg.js +0 -61
  406. package/build/tests/unwrapReg2.d.ts +0 -1
  407. package/build/tests/unwrapReg2.js +0 -56
  408. package/build/tests/unwrapRegSegwit.d.ts +0 -1
  409. package/build/tests/unwrapRegSegwit.js +0 -83
  410. package/build/tests/wbtc/approve.d.ts +0 -1
  411. package/build/tests/wbtc/approve.js +0 -6
  412. package/build/tests/wbtc/approveWBTC.d.ts +0 -1
  413. package/build/tests/wbtc/approveWBTC.js +0 -12
  414. package/build/tests/wbtc/massWrapReg.d.ts +0 -1
  415. package/build/tests/wbtc/massWrapReg.js +0 -105
  416. package/build/tests/wbtc/transfer.d.ts +0 -1
  417. package/build/tests/wbtc/transfer.js +0 -16
  418. package/build/tests/wbtc/transferReg.d.ts +0 -1
  419. package/build/tests/wbtc/transferReg.js +0 -16
  420. package/build/tests/wbtc/unStakeReg.d.ts +0 -1
  421. package/build/tests/wbtc/unStakeReg.js +0 -72
  422. package/build/tests/wbtc/unwrapReg.d.ts +0 -1
  423. package/build/tests/wbtc/unwrapReg.js +0 -60
  424. package/build/tests/wbtc/unwrapRegSegwit.d.ts +0 -1
  425. package/build/tests/wbtc/unwrapRegSegwit.js +0 -83
  426. package/build/tests/wbtc/withdrawalRequestReg.d.ts +0 -1
  427. package/build/tests/wbtc/withdrawalRequestReg.js +0 -71
  428. package/build/tests/wbtc/wrapReg.d.ts +0 -1
  429. package/build/tests/wbtc/wrapReg.js +0 -65
  430. package/build/tests/wbtc/wrapTest.d.ts +0 -1
  431. package/build/tests/wbtc/wrapTest.js +0 -66
  432. package/build/tests/withdrawalRequestReg.d.ts +0 -1
  433. package/build/tests/withdrawalRequestReg.js +0 -71
  434. package/build/tests/wrap.d.ts +0 -1
  435. package/build/tests/wrap.js +0 -65
  436. package/build/tests/wrapReg.d.ts +0 -1
  437. package/build/tests/wrapReg.js +0 -68
  438. package/build/tests/wrapTest.d.ts +0 -1
  439. package/build/tests/wrapTest.js +0 -66
  440. package/build/tests/wrapTestg.d.ts +0 -1
  441. package/build/tests/wrapTestg.js +0 -66
  442. package/build/tests/writers/allowance.d.ts +0 -3
  443. package/build/tests/writers/allowance.js +0 -10
  444. package/build/tests/writers/approve.d.ts +0 -4
  445. package/build/tests/writers/approve.js +0 -11
  446. package/build/transaction/TransactionBuilder.d.ts +0 -60
  447. package/build/transaction/TransactionBuilder.js +0 -244
  448. package/build/transaction/browser/BrowserSigner.d.ts +0 -11
  449. package/build/transaction/browser/BrowserSigner.js +0 -10
  450. package/build/transaction/browser/extensions/Unisat.d.ts +0 -54
  451. package/build/transaction/browser/extensions/Unisat.js +0 -11
  452. package/build/transaction/builders/DeploymentTransactionV2.d.ts +0 -36
  453. package/build/transaction/builders/DeploymentTransactionV2.js +0 -192
  454. package/build/transaction/builders/GenericTransaction.d.ts +0 -11
  455. package/build/transaction/builders/GenericTransaction.js +0 -23
  456. package/build/transaction/builders/TapUnwarpTransaction.d.ts +0 -37
  457. package/build/transaction/builders/TapUnwarpTransaction.js +0 -201
  458. package/build/transaction/builders/UnwarpSegwitTransaction.d.ts +0 -34
  459. package/build/transaction/builders/UnwarpSegwitTransaction.js +0 -184
  460. package/build/transaction/builders/UnwarpTransaction.d.ts +0 -35
  461. package/build/transaction/builders/UnwarpTransaction.js +0 -199
  462. package/build/transaction/interfaces/ITransactions.d.ts +0 -32
  463. package/build/transaction/interfaces/ITransactions.js +0 -1
  464. package/build/utxo/IUTXO.d.ts +0 -0
  465. package/build/utxo/IUTXO.js +0 -1
  466. package/build/utxo/OPNetUtils.d.ts +0 -7
  467. package/build/utxo/OPNetUtils.js +0 -47
  468. package/build/utxo/UTXOManager.d.ts +0 -7
  469. package/build/utxo/UTXOManager.js +0 -47
  470. package/build/wbtc/BroadcastResponse.d.ts +0 -0
  471. package/build/wbtc/BroadcastResponse.js +0 -1
  472. package/examples/Deploy.md +0 -188
  473. package/examples/Unwrap.md +0 -165
  474. package/examples/Wrap.md +0 -194
  475. package/tsconfig.cjs.json +0 -13
  476. /package/build/generators/{features.d.ts → Features.d.ts} +0 -0
  477. /package/build/generators/{features.js → Features.js} +0 -0
@@ -1,199 +0,0 @@
1
- import { TransactionType } from '../enums/TransactionType.js';
2
- import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
3
- import { TransactionBuilder } from './TransactionBuilder.js';
4
- import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
5
- import { wBTC } from '../../metadata/contracts/wBTC.js';
6
- import { payments } from 'bitcoinjs-lib';
7
- import { EcKeyPair } from '../../keypair/EcKeyPair.js';
8
- import { PsbtTransaction } from '../processor/PsbtTransaction.js';
9
- const abiCoder = new ABICoder();
10
- export class UnwrapTransaction extends SharedInteractionTransaction {
11
- static MINIMUM_CONSOLIDATION_AMOUNT = 200000n;
12
- static UNWRAP_SELECTOR = Number('0x' + abiCoder.encodeSelector('burn'));
13
- type = TransactionType.WBTC_UNWRAP;
14
- amount;
15
- compiledTargetScript;
16
- scriptTree;
17
- sighashTypes = [];
18
- contractSecret;
19
- vaultUTXOs;
20
- wbtc;
21
- calculatedSignHash = PsbtTransaction.calculateSignHash(this.sighashTypes);
22
- constructor(parameters) {
23
- if (parameters.amount < TransactionBuilder.MINIMUM_DUST) {
24
- throw new Error('Amount is below dust limit');
25
- }
26
- parameters.disableAutoRefund = true;
27
- parameters.calldata = UnwrapTransaction.generateBurnCalldata(parameters.amount);
28
- super(parameters);
29
- this.wbtc = new wBTC(parameters.network);
30
- this.to = this.wbtc.getAddress();
31
- this.vaultUTXOs = parameters.unwrapUTXOs;
32
- this.amount = parameters.amount;
33
- this.contractSecret = this.generateSecret();
34
- this.compiledTargetScript = this.calldataGenerator.compile(this.calldata, this.contractSecret);
35
- this.scriptTree = this.getScriptTree();
36
- this.internalInit();
37
- }
38
- static generateBurnCalldata(amount) {
39
- if (!amount)
40
- throw new Error('Amount is required');
41
- const bufWriter = new BinaryWriter();
42
- bufWriter.writeSelector(UnwrapTransaction.UNWRAP_SELECTOR);
43
- bufWriter.writeU256(amount);
44
- return Buffer.from(bufWriter.getBuffer());
45
- }
46
- signPSBT() {
47
- if (this.to && !EcKeyPair.verifyContractAddress(this.to, this.network)) {
48
- throw new Error('Invalid contract address. The contract address must be a taproot address.');
49
- }
50
- if (!this.vaultUTXOs.length) {
51
- throw new Error('No vault UTXOs provided');
52
- }
53
- if (this.signed)
54
- throw new Error('Transaction is already signed');
55
- this.signed = true;
56
- this.buildTransaction();
57
- this.ignoreSignatureError();
58
- this.mergeVaults(this.vaultUTXOs);
59
- const builtTx = this.internalBuildTransaction(this.transaction);
60
- if (builtTx) {
61
- return this.transaction;
62
- }
63
- throw new Error('Could not sign transaction');
64
- }
65
- mergeVaults(input) {
66
- const firstVault = input[0];
67
- if (!firstVault) {
68
- throw new Error('No vaults provided');
69
- }
70
- const total = this.getVaultTotalOutputAmount(input);
71
- if (total < this.amount) {
72
- throw new Error(`Total vault amount (${total} sat) is less than the amount to unwrap (${this.amount} sat)`);
73
- }
74
- const outputLeftAmount = this.calculateOutputLeftAmountFromVaults(input);
75
- console.log('outputLeftAmount', outputLeftAmount, this.amount);
76
- if (outputLeftAmount < UnwrapTransaction.MINIMUM_CONSOLIDATION_AMOUNT) {
77
- throw new Error(`Output left amount is below minimum consolidation (${UnwrapTransaction.MINIMUM_CONSOLIDATION_AMOUNT} sat) amount ${outputLeftAmount} for vault ${firstVault.vault}`);
78
- }
79
- this.addOutput({
80
- address: firstVault.vault,
81
- value: Number(outputLeftAmount),
82
- });
83
- this.addOutput({
84
- address: this.from,
85
- value: Number(this.amount),
86
- });
87
- for (const vault of input) {
88
- this.addVaultInputs(vault);
89
- }
90
- }
91
- estimateVaultFees(feeRate, numInputs, numOutputs, numSignatures, numPubkeys) {
92
- const txHeaderSize = 10n;
93
- const inputBaseSize = 41n;
94
- const outputSize = 68n;
95
- const signatureSize = 144n;
96
- const pubkeySize = 34n;
97
- const baseTxSize = txHeaderSize + inputBaseSize * numInputs + outputSize * numOutputs;
98
- const redeemScriptSize = 1n + numPubkeys * (1n + pubkeySize) + 1n + numSignatures;
99
- const witnessSize = numSignatures * signatureSize + numPubkeys * pubkeySize + redeemScriptSize;
100
- const weight = baseTxSize * 3n + (baseTxSize + witnessSize);
101
- const vSize = weight / 4n;
102
- return vSize * feeRate;
103
- }
104
- internalBuildTransaction(transaction) {
105
- if (transaction.data.inputs.length === 0) {
106
- const inputs = this.getInputs();
107
- const outputs = this.getOutputs();
108
- transaction.setMaximumFeeRate(this._maximumFeeRate);
109
- transaction.addInputs(inputs);
110
- for (let i = 0; i < this.updateInputs.length; i++) {
111
- transaction.updateInput(i, this.updateInputs[i]);
112
- }
113
- transaction.addOutputs(outputs);
114
- }
115
- try {
116
- this.signInputs(transaction);
117
- if (this.finalized) {
118
- this.transactionFee = BigInt(transaction.getFee());
119
- }
120
- return true;
121
- }
122
- catch (e) {
123
- const err = e;
124
- this.error(`[internalBuildTransaction] Something went wrong while getting building the transaction: ${err.stack}`);
125
- }
126
- return false;
127
- }
128
- generateMultiSignRedeemScript(publicKeys, minimum) {
129
- const p2ms = payments.p2ms({
130
- m: minimum,
131
- pubkeys: publicKeys.map((key) => Buffer.from(key, 'base64')),
132
- network: this.network,
133
- });
134
- const p2wsh = payments.p2wsh({
135
- redeem: p2ms,
136
- network: this.network,
137
- });
138
- const witnessUtxo = p2wsh.output;
139
- const redeemScript = p2wsh.redeem?.output;
140
- const witnessScript = p2ms.output;
141
- if (!witnessUtxo || !redeemScript || !witnessScript) {
142
- throw new Error('Failed to generate redeem script');
143
- }
144
- return {
145
- witnessUtxo,
146
- redeemScript,
147
- witnessScript,
148
- };
149
- }
150
- addVaultUTXO(utxo, witness) {
151
- console.log(Number(utxo.value), utxo.hash, utxo.outputIndex);
152
- const input = {
153
- hash: utxo.hash,
154
- index: utxo.outputIndex,
155
- witnessUtxo: {
156
- script: Buffer.from(utxo.output, 'base64'),
157
- value: Number(utxo.value),
158
- },
159
- witnessScript: witness.witnessScript,
160
- sequence: this.sequence,
161
- };
162
- if (this.calculatedSignHash) {
163
- input.sighashType = this.calculatedSignHash;
164
- }
165
- this.addInput(input);
166
- }
167
- addVaultInputs(vault, firstSigner = this.signer) {
168
- const p2wshOutput = this.generateMultiSignRedeemScript(vault.publicKeys, vault.minimum);
169
- for (const utxo of vault.utxos) {
170
- const inputIndex = this.transaction.inputCount;
171
- this.addVaultUTXO(utxo, p2wshOutput);
172
- if (firstSigner) {
173
- this.log(`Signing input ${inputIndex} with ${firstSigner.publicKey.toString('hex')}`);
174
- try {
175
- this.signInput(this.transaction, this.transaction.data.inputs[inputIndex], inputIndex, this.signer);
176
- this.log(`Signed input ${inputIndex} with ${firstSigner.publicKey.toString('hex')}`);
177
- }
178
- catch (e) {
179
- if (!this.ignoreSignatureErrors) {
180
- this.warn(`Failed to sign input ${inputIndex} with ${firstSigner.publicKey.toString('hex')} ${e.message}`);
181
- }
182
- }
183
- }
184
- }
185
- }
186
- calculateOutputLeftAmountFromVaults(vaults) {
187
- const total = this.getVaultTotalOutputAmount(vaults);
188
- return total - this.amount;
189
- }
190
- getVaultTotalOutputAmount(vaults) {
191
- let total = BigInt(0);
192
- for (const vault of vaults) {
193
- for (const utxo of vault.utxos) {
194
- total += BigInt(utxo.value);
195
- }
196
- }
197
- return total;
198
- }
199
- }
@@ -1,32 +0,0 @@
1
- /// <reference types="node" />
2
- import { Signer } from 'bitcoinjs-lib';
3
- import { UTXO } from '../../utxo/interfaces/IUTXO.js';
4
- import { ECPairInterface } from 'ecpair';
5
- import { Network } from 'bitcoinjs-lib/src/networks.js';
6
- export interface ITransactionParameters {
7
- readonly from: string;
8
- readonly utxos: UTXO[];
9
- readonly signer: ECPairInterface;
10
- readonly network: Network;
11
- readonly feeRate: number;
12
- readonly priorityFee: bigint;
13
- }
14
- export interface SewgitTransactionParameters extends ITransactionParameters {
15
- }
16
- export interface ITransactionDataContractInteraction extends ITransactionParameters {
17
- readonly contractSecret: Buffer;
18
- readonly calldata: Buffer;
19
- readonly customSigner: Signer;
20
- readonly pubKeys?: Buffer[];
21
- readonly minimumSignatures?: number;
22
- }
23
- export interface ITransactionDataContractInteractionWrap extends ITransactionDataContractInteraction {
24
- readonly amount: bigint;
25
- readonly minimumSignatures: number;
26
- readonly pubKeys: Buffer[];
27
- }
28
- export interface ITransactionDataContractDeployment extends ITransactionParameters {
29
- readonly bytecode: Buffer;
30
- readonly salt: Buffer;
31
- readonly customSigner: Signer;
32
- }
@@ -1 +0,0 @@
1
- export {};
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,7 +0,0 @@
1
- import { FetchUTXOParams, UTXO } from './interfaces/IUTXO.js';
2
- export declare class UTXOManager {
3
- private readonly opnetAPIUrl;
4
- private readonly utxoPath;
5
- constructor(opnetAPIUrl: string);
6
- fetchUTXO(settings: FetchUTXOParams): Promise<UTXO[]>;
7
- }
@@ -1,47 +0,0 @@
1
- export class UTXOManager {
2
- opnetAPIUrl;
3
- utxoPath = 'address/utxos';
4
- constructor(opnetAPIUrl) {
5
- this.opnetAPIUrl = opnetAPIUrl;
6
- }
7
- async fetchUTXO(settings) {
8
- const params = {
9
- method: 'GET',
10
- headers: {
11
- 'Content-Type': 'application/json',
12
- },
13
- };
14
- const url = `${this.opnetAPIUrl}/api/v1/${this.utxoPath}?address=${settings.address}`;
15
- const resp = await fetch(url, params);
16
- if (!resp.ok) {
17
- throw new Error(`Failed to fetch UTXO data: ${resp.statusText}`);
18
- }
19
- const fetchedData = await resp.json();
20
- if (fetchedData.length === 0) {
21
- throw new Error('No UTXO found');
22
- }
23
- const meetCriteria = fetchedData.filter((utxo) => {
24
- return BigInt(utxo.value) >= settings.minAmount;
25
- });
26
- if (meetCriteria.length === 0) {
27
- throw new Error('No UTXO found (minAmount)');
28
- }
29
- let finalUTXOs = [];
30
- let currentAmount = 0n;
31
- const amountRequested = settings.requestedAmount;
32
- for (const utxo of meetCriteria) {
33
- const utxoValue = BigInt(utxo.value);
34
- currentAmount += utxoValue;
35
- finalUTXOs.push({
36
- transactionId: utxo.transactionId,
37
- outputIndex: utxo.outputIndex,
38
- value: utxoValue,
39
- scriptPubKey: utxo.scriptPubKey,
40
- });
41
- if (currentAmount + utxoValue > amountRequested) {
42
- break;
43
- }
44
- }
45
- return finalUTXOs;
46
- }
47
- }
@@ -1,7 +0,0 @@
1
- import { FetchUTXOParams, UTXO } from './interfaces/IUTXO.js';
2
- export declare class UTXOManager {
3
- private readonly opnetAPIUrl;
4
- private readonly utxoPath;
5
- constructor(opnetAPIUrl: string);
6
- fetchUTXO(settings: FetchUTXOParams): Promise<UTXO[]>;
7
- }
@@ -1,47 +0,0 @@
1
- export class UTXOManager {
2
- opnetAPIUrl;
3
- utxoPath = 'address/utxos';
4
- constructor(opnetAPIUrl) {
5
- this.opnetAPIUrl = opnetAPIUrl;
6
- }
7
- async fetchUTXO(settings) {
8
- const params = {
9
- method: 'GET',
10
- headers: {
11
- 'Content-Type': 'application/json',
12
- },
13
- };
14
- const url = `${this.opnetAPIUrl}/api/v1/${this.utxoPath}?address=${settings.address}`;
15
- const resp = await fetch(url, params);
16
- if (!resp.ok) {
17
- throw new Error(`Failed to fetch UTXO data: ${resp.statusText}`);
18
- }
19
- const fetchedData = await resp.json();
20
- if (fetchedData.length === 0) {
21
- throw new Error('No UTXO found');
22
- }
23
- const meetCriteria = fetchedData.filter((utxo) => {
24
- return BigInt(utxo.value) >= settings.minAmount;
25
- });
26
- if (meetCriteria.length === 0) {
27
- throw new Error('No UTXO found (minAmount)');
28
- }
29
- let finalUTXOs = [];
30
- let currentAmount = 0n;
31
- const amountRequested = settings.requestedAmount;
32
- for (const utxo of meetCriteria) {
33
- const utxoValue = BigInt(utxo.value);
34
- currentAmount += utxoValue;
35
- finalUTXOs.push({
36
- transactionId: utxo.transactionId,
37
- outputIndex: utxo.outputIndex,
38
- value: utxoValue,
39
- scriptPubKey: utxo.scriptPubKey,
40
- });
41
- if (currentAmount + utxoValue > amountRequested) {
42
- break;
43
- }
44
- }
45
- return finalUTXOs;
46
- }
47
- }
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,188 +0,0 @@
1
- # Deploying a Smart Contract on OPNet
2
-
3
- WARNING: POSSIBLY OUTDATED
4
-
5
- This guide will walk you through the process of deploying a smart contract on the OPNet protocol. OPNet allows for the
6
- execution of smart contracts on the Bitcoin network, leveraging the security and stability of Bitcoin.
7
-
8
- ## Prerequisites
9
-
10
- - Node.js and npm installed
11
- - Bitcoin regtest wallet
12
- - Access to an OPNet node
13
- - Bitcoin RPC configured for regtest
14
- - Contract bytecode in WebAssembly format
15
-
16
- ## Setup
17
-
18
- First, ensure you have the necessary dependencies installed in your project:
19
-
20
- ```sh
21
- npm i
22
- ```
23
-
24
- ## Step-by-Step Guide
25
-
26
- ### 1. Import Required Libraries
27
-
28
- ```typescript
29
- import { Wallet } from '../keypair/Wallet.js';
30
- import { OPNetLimitedProvider } from '../utxo/OPNetLimitedProvider.js';
31
- import { networks, Network } from 'bitcoinjs-lib';
32
- import { TransactionFactory } from '../transaction/TransactionFactory.js';
33
- import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
34
- import { IDeploymentParameters } from '../transaction/interfaces/ITransactionParameters.js';
35
- import { FetchUTXOParams, UTXO } from '../utxo/interfaces/IUTXO.js';
36
- import * as fs from 'fs';
37
- ```
38
-
39
- ### Setting Up configurations
40
-
41
- We must provide the necessary configurations for the network, wallet, and RPC connection:
42
-
43
- - The opnetNode variable is the URL of the OP_NET node.
44
- - The Testnet variable contains the wallet address, public key, and private key.
45
- - The config variable inside the testnet object contains the network, host, port, username, and password for the RPC
46
- connection.
47
-
48
- ```typescript
49
- const network: Network = networks.testnet;
50
- const opnetNode: string = 'https://testnet.opnet.org';
51
- const Testnet: NetworkInformation = {
52
- wallet: {
53
- address: '', // as BECH32
54
- publicKey: '', // as HEX
55
- privateKey: '', // as WIF
56
- },
57
-
58
- config: {
59
- BITCOIND_NETWORK: BitcoinNetwork.TestNet, // Bitcoin network
60
- BITCOIND_HOST: '', // Bitcoin RPC host
61
- BITCOIND_PORT: 9242, // Bitcoin RPC port
62
-
63
- BITCOIND_USERNAME: '', // Bitcoin RPC username
64
- BITCOIND_PASSWORD: '', // Bitcoin RPC password
65
- },
66
- };
67
- ```
68
-
69
- ### 2. Initialize Network and RPC
70
-
71
- ```typescript
72
- const rpc: BitcoinRPC = new BitcoinRPC();
73
- const wallet: Wallet = new Wallet(Testnet.wallet, network);
74
- ```
75
-
76
- ### 3. Connect to OPNet
77
-
78
- ```typescript
79
- const utxoManager: OPNetLimitedProvider = new OPNetLimitedProvider(opnetNode);
80
- const factory: TransactionFactory = new TransactionFactory();
81
- ```
82
-
83
- ### 4. Mining a Block (Optional)
84
-
85
- If you are using a regtest or need to mine a block to proceed:
86
-
87
- ```typescript
88
- const shouldMineBlock: boolean = true;
89
-
90
- async function mineBlock(): Promise<boolean> {
91
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
92
- if (!ok) {
93
- throw new Error('Could not mine block');
94
- }
95
- console.log(`Mined block`, ok);
96
- return !!ok.length;
97
- }
98
- ```
99
-
100
- ### 5. Initialize RPC with Testnet Configuration
101
-
102
- ```typescript
103
- await rpc.init(Testnet.config);
104
- ```
105
-
106
- ### 6. Define UTXO Settings and Fetch UTXOs
107
-
108
- ```typescript
109
- const utxoSetting: FetchUTXOParams = {
110
- address: wallet.p2wpkh,
111
- minAmount: 10000n,
112
- requestedAmount: 100000n,
113
- };
114
-
115
- const utxos: UTXO[] = await utxoManager.fetchUTXO(utxoSetting);
116
- if (!utxos) {
117
- throw new Error('No UTXOs found');
118
- }
119
- ```
120
-
121
- ### 7. Read Contract Bytecode
122
-
123
- ```typescript
124
- const bytecode = fs.readFileSync('./bytecode/contract.wasm');
125
- ```
126
-
127
- ### 8. Create Deployment Parameters and Finalize Transaction
128
-
129
- Let's create the deployment parameters and finalize the transaction:
130
-
131
- ```typescript
132
- const deploymentParameters: IDeploymentParameters = {
133
- from: wallet.p2wpkh,
134
- utxos: utxos,
135
- signer: wallet.keypair,
136
- network: network,
137
- feeRate: 150,
138
- priorityFee: 50000n,
139
- bytecode: bytecode,
140
- };
141
-
142
- const finalTx = factory.signDeployment(deploymentParameters);
143
- console.log(`Final transaction:`, finalTx);
144
- ```
145
-
146
- ### 9. Broadcast the Transactions
147
-
148
- Broadcast the transactions to the network:
149
-
150
- ```typescript
151
- const firstTxBroadcast = await rpc.sendRawTransaction({
152
- hexstring: finalTx.transaction[0],
153
- });
154
-
155
- console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
156
-
157
- if (!firstTxBroadcast) {
158
- throw new Error('Could not broadcast first transaction');
159
- }
160
-
161
- const secondTxBroadcast = await rpc.sendRawTransaction({
162
- hexstring: finalTx.transaction[1],
163
- });
164
-
165
- console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
166
-
167
- if (!secondTxBroadcast) {
168
- throw new Error('Could not broadcast second transaction');
169
- }
170
- ```
171
-
172
- ### 10. (Optional) Mine a Block
173
-
174
- If you need to mine a block after broadcasting the transactions:
175
-
176
- ```typescript
177
- if (shouldMineBlock) {
178
- await mineBlock();
179
- }
180
- ```
181
-
182
- ## Conclusion
183
-
184
- You have now successfully deployed a smart contract on the OPNet protocol. This contract can interact with the Bitcoin
185
- network, enabling complex functionalities and decentralized applications.
186
-
187
- For any further questions or issues, please refer to the official documentation or reach out to the community for
188
- support.