@btc-vision/transaction 1.0.85 → 1.0.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +2 -2
- package/browser/_version.d.ts +1 -1
- package/browser/index.js +1 -1
- package/browser/keypair/Wallet.d.ts +3 -0
- package/browser/transaction/builders/TapUnwarpTransaction.d.ts +40 -40
- package/browser/transaction/builders/UnwarpTransaction.d.ts +34 -34
- package/browser/utxo/UTXOManager.d.ts +7 -7
- package/build/Utils.d.ts +0 -0
- package/build/Utils.js +1 -0
- package/build/_version.d.ts +1 -1
- package/build/_version.js +1 -1
- package/build/consensus/metadata/RoswsellConsensus.d.ts +2 -0
- package/build/consensus/metadata/RoswsellConsensus.js +4 -0
- package/build/contracts/ContractMetadataManager.d.ts +0 -0
- package/build/contracts/ContractMetadataManager.js +1 -0
- package/build/generators/OPNetAddressGenerator.d.ts +0 -0
- package/build/generators/OPNetAddressGenerator.js +1 -0
- package/build/generators/builders/UnwrapGenerator.d.ts +8 -0
- package/build/generators/builders/UnwrapGenerator.js +79 -0
- package/build/keypair/Wallet.d.ts +3 -0
- package/build/keypair/Wallet.js +8 -0
- package/build/keypair/interfaces/GeneratedWallet.d.ts +5 -0
- package/build/keypair/interfaces/GeneratedWallet.js +1 -0
- package/build/metadata/CommonContracts.d.ts +6 -0
- package/build/metadata/CommonContracts.js +5 -0
- package/build/metadata/ContractMetadataManager.d.ts +1 -0
- package/build/metadata/ContractMetadataManager.js +9 -0
- package/build/metadata/contracts/ContractBase.d.ts +9 -0
- package/build/metadata/contracts/ContractBase.js +13 -0
- package/build/metadata/contracts/ContractBaseMetadata.d.ts +9 -0
- package/build/metadata/contracts/ContractBaseMetadata.js +13 -0
- package/build/metadata/contracts/ContractMetadataManager.d.ts +0 -0
- package/build/metadata/contracts/ContractMetadataManager.js +1 -0
- package/build/network/NetworkConverter.d.ts +0 -0
- package/build/network/NetworkConverter.js +14 -0
- package/build/scripts/Regtest.d.ts +2 -0
- package/build/scripts/Regtest.js +15 -0
- package/build/scripts/test.d.ts +1 -0
- package/build/scripts/test.js +74 -0
- package/build/signer/Regtest.d.ts +2 -0
- package/build/signer/Regtest.js +15 -0
- package/build/tests/Regtest.d.ts +3 -0
- package/build/tests/Regtest.js +29 -0
- package/build/tests/adaptPSBT.d.ts +1 -0
- package/build/tests/adaptPSBT.js +44 -0
- package/build/tests/btc/send.d.ts +1 -0
- package/build/tests/btc/send.js +35 -0
- package/build/tests/btc/transfer.d.ts +1 -0
- package/build/tests/btc/transfer.js +35 -0
- package/build/tests/createPairReg.d.ts +1 -0
- package/build/tests/createPairReg.js +73 -0
- package/build/tests/deploy/deployMoto.d.ts +4 -0
- package/build/tests/deploy/deployMoto.js +89 -0
- package/build/tests/deploy/deployPool.d.ts +1 -0
- package/build/tests/deploy/deployPool.js +5 -0
- package/build/tests/deploy/deployStep1.d.ts +1 -0
- package/build/tests/deploy/deployStep1.js +5 -0
- package/build/tests/deploy/deployStep2.d.ts +1 -0
- package/build/tests/deploy/deployStep2.js +5 -0
- package/build/tests/deploy/deployStep3.d.ts +1 -0
- package/build/tests/deploy/deployStep3.js +5 -0
- package/build/tests/deploy.d.ts +1 -0
- package/build/tests/deploy.js +41 -0
- package/build/tests/deployMotoRegStep1.d.ts +1 -0
- package/build/tests/deployMotoRegStep1.js +85 -0
- package/build/tests/deployReg.d.ts +1 -0
- package/build/tests/deployReg.js +85 -0
- package/build/tests/factory/createPairReg.d.ts +1 -0
- package/build/tests/factory/createPairReg.js +13 -0
- package/build/tests/gen.d.ts +1 -0
- package/build/tests/gen.js +19 -0
- package/build/tests/interaction.d.ts +5 -0
- package/build/tests/interaction.js +62 -0
- package/build/tests/massWrapReg.d.ts +1 -0
- package/build/tests/massWrapReg.js +105 -0
- package/build/tests/mineReg.d.ts +1 -0
- package/build/tests/mineReg.js +19 -0
- package/build/tests/moto/airdropToken.d.ts +1 -0
- package/build/tests/moto/airdropToken.js +21 -0
- package/build/tests/moto/airdropTokens.d.ts +1 -0
- package/build/tests/moto/airdropTokens.js +60 -0
- package/build/tests/moto/allowance.d.ts +1 -0
- package/build/tests/moto/allowance.js +6 -0
- package/build/tests/moto/approve.d.ts +1 -0
- package/build/tests/moto/approve.js +10 -0
- package/build/tests/moto/approveWBTC.d.ts +1 -0
- package/build/tests/moto/approveWBTC.js +12 -0
- package/build/tests/moto/balanceOf.d.ts +1 -0
- package/build/tests/moto/balanceOf.js +12 -0
- package/build/tests/moto/transfer.d.ts +1 -0
- package/build/tests/moto/transfer.js +16 -0
- package/build/tests/motoswap/airdropToken.d.ts +11 -0
- package/build/tests/motoswap/airdropToken.js +36 -0
- package/build/tests/motoswap/deployMoto.d.ts +4 -0
- package/build/tests/motoswap/deployMoto.js +89 -0
- package/build/tests/motoswap/deployMotoRegStep1.d.ts +1 -0
- package/build/tests/motoswap/deployMotoRegStep1.js +91 -0
- package/build/tests/motoswap/deployMotoRegStep2.d.ts +1 -0
- package/build/tests/motoswap/deployMotoRegStep2.js +91 -0
- package/build/tests/motoswap/deployPool.d.ts +1 -0
- package/build/tests/motoswap/deployPool.js +5 -0
- package/build/tests/motoswap/deployStep1.d.ts +1 -0
- package/build/tests/motoswap/deployStep1.js +5 -0
- package/build/tests/motoswap/deployStep2.d.ts +1 -0
- package/build/tests/motoswap/deployStep2.js +5 -0
- package/build/tests/motoswap/deployStep3.d.ts +1 -0
- package/build/tests/motoswap/deployStep3.js +5 -0
- package/build/tests/motoswap/interaction.d.ts +3 -0
- package/build/tests/motoswap/interaction.js +63 -0
- package/build/tests/motoswap/routerAddLiquidity.d.ts +11 -0
- package/build/tests/motoswap/routerAddLiquidity.js +35 -0
- package/build/tests/motoswap-router/addLiquidity.d.ts +11 -0
- package/build/tests/motoswap-router/addLiquidity.js +36 -0
- package/build/tests/motoswap-router/deployMoto.d.ts +4 -0
- package/build/tests/motoswap-router/deployMoto.js +89 -0
- package/build/tests/motoswap-router/deployPool.d.ts +1 -0
- package/build/tests/motoswap-router/deployPool.js +5 -0
- package/build/tests/motoswap-router/deployStep1.d.ts +1 -0
- package/build/tests/motoswap-router/deployStep1.js +5 -0
- package/build/tests/motoswap-router/deployStep2.d.ts +1 -0
- package/build/tests/motoswap-router/deployStep2.js +5 -0
- package/build/tests/motoswap-router/deployStep3.d.ts +1 -0
- package/build/tests/motoswap-router/deployStep3.js +5 -0
- package/build/tests/motoswap-router/getAmountsOut.d.ts +5 -0
- package/build/tests/motoswap-router/getAmountsOut.js +34 -0
- package/build/tests/motoswap-router/routerAddLiquidity.d.ts +11 -0
- package/build/tests/motoswap-router/routerAddLiquidity.js +35 -0
- package/build/tests/motoswap-router/swap.d.ts +8 -0
- package/build/tests/motoswap-router/swap.js +24 -0
- package/build/tests/multisign.d.ts +1 -0
- package/build/tests/multisign.js +47 -0
- package/build/tests/multisign2.d.ts +1 -0
- package/build/tests/multisign2.js +27 -0
- package/build/tests/pool/DecodePoolAddress.d.ts +6 -0
- package/build/tests/pool/DecodePoolAddress.js +12 -0
- package/build/tests/pool/decodeReserves.d.ts +5 -0
- package/build/tests/pool/decodeReserves.js +13 -0
- package/build/tests/pool/reserves.d.ts +1 -0
- package/build/tests/pool/reserves.js +18 -0
- package/build/tests/shared/Utils.d.ts +2 -0
- package/build/tests/shared/Utils.js +14 -0
- package/build/tests/shared/interaction.d.ts +7 -0
- package/build/tests/shared/interaction.js +85 -0
- package/build/tests/shared/tokens.d.ts +6 -0
- package/build/tests/shared/tokens.js +5 -0
- package/build/tests/stakeReg.d.ts +1 -0
- package/build/tests/stakeReg.js +73 -0
- package/build/tests/stakedReg.d.ts +1 -0
- package/build/tests/stakedReg.js +28 -0
- package/build/tests/test.d.ts +1 -0
- package/build/tests/test.js +51 -0
- package/build/tests/test2.d.ts +1 -0
- package/build/tests/test2.js +73 -0
- package/build/tests/testReg.d.ts +1 -0
- package/build/tests/testReg.js +91 -0
- package/build/tests/tokens.d.ts +6 -0
- package/build/tests/tokens.js +5 -0
- package/build/tests/totalRewardReg.d.ts +1 -0
- package/build/tests/totalRewardReg.js +28 -0
- package/build/tests/transfer.d.ts +1 -0
- package/build/tests/transfer.js +74 -0
- package/build/tests/transferReg.d.ts +1 -0
- package/build/tests/transferReg.js +74 -0
- package/build/tests/unStakeReg.d.ts +1 -0
- package/build/tests/unStakeReg.js +72 -0
- package/build/tests/unwrapReg.d.ts +1 -0
- package/build/tests/unwrapReg.js +61 -0
- package/build/tests/unwrapReg2.d.ts +1 -0
- package/build/tests/unwrapReg2.js +56 -0
- package/build/tests/unwrapRegSegwit.d.ts +1 -0
- package/build/tests/unwrapRegSegwit.js +83 -0
- package/build/tests/wbtc/approve.d.ts +1 -0
- package/build/tests/wbtc/approve.js +6 -0
- package/build/tests/wbtc/approveWBTC.d.ts +1 -0
- package/build/tests/wbtc/approveWBTC.js +12 -0
- package/build/tests/wbtc/massWrapReg.d.ts +1 -0
- package/build/tests/wbtc/massWrapReg.js +105 -0
- package/build/tests/wbtc/transfer.d.ts +1 -0
- package/build/tests/wbtc/transfer.js +16 -0
- package/build/tests/wbtc/transferReg.d.ts +1 -0
- package/build/tests/wbtc/transferReg.js +16 -0
- package/build/tests/wbtc/unStakeReg.d.ts +1 -0
- package/build/tests/wbtc/unStakeReg.js +72 -0
- package/build/tests/wbtc/unwrapReg.d.ts +1 -0
- package/build/tests/wbtc/unwrapReg.js +60 -0
- package/build/tests/wbtc/unwrapRegSegwit.d.ts +1 -0
- package/build/tests/wbtc/unwrapRegSegwit.js +83 -0
- package/build/tests/wbtc/withdrawalRequestReg.d.ts +1 -0
- package/build/tests/wbtc/withdrawalRequestReg.js +71 -0
- package/build/tests/wbtc/wrapReg.d.ts +1 -0
- package/build/tests/wbtc/wrapReg.js +65 -0
- package/build/tests/wbtc/wrapTest.d.ts +1 -0
- package/build/tests/wbtc/wrapTest.js +66 -0
- package/build/tests/withdrawalRequestReg.d.ts +1 -0
- package/build/tests/withdrawalRequestReg.js +71 -0
- package/build/tests/wrap.d.ts +1 -0
- package/build/tests/wrap.js +65 -0
- package/build/tests/wrapReg.d.ts +1 -0
- package/build/tests/wrapReg.js +68 -0
- package/build/tests/wrapTest.d.ts +1 -0
- package/build/tests/wrapTest.js +66 -0
- package/build/tests/wrapTestg.d.ts +1 -0
- package/build/tests/wrapTestg.js +66 -0
- package/build/tests/writers/allowance.d.ts +3 -0
- package/build/tests/writers/allowance.js +10 -0
- package/build/tests/writers/approve.d.ts +4 -0
- package/build/tests/writers/approve.js +11 -0
- package/build/transaction/TransactionBuilder.d.ts +60 -0
- package/build/transaction/TransactionBuilder.js +244 -0
- package/build/transaction/browser/BrowserSigner.d.ts +11 -0
- package/build/transaction/browser/BrowserSigner.js +10 -0
- package/build/transaction/browser/extensions/Unisat.d.ts +54 -0
- package/build/transaction/browser/extensions/Unisat.js +11 -0
- package/build/transaction/builders/GenericTransaction.d.ts +11 -0
- package/build/transaction/builders/GenericTransaction.js +23 -0
- package/build/transaction/builders/TapUnwarpTransaction.d.ts +37 -0
- package/build/transaction/builders/TapUnwarpTransaction.js +201 -0
- package/build/transaction/builders/UnwarpSegwitTransaction.d.ts +34 -0
- package/build/transaction/builders/UnwarpSegwitTransaction.js +184 -0
- package/build/transaction/builders/UnwarpTransaction.d.ts +35 -0
- package/build/transaction/builders/UnwarpTransaction.js +199 -0
- package/build/transaction/interfaces/ITransactions.d.ts +32 -0
- package/build/transaction/interfaces/ITransactions.js +1 -0
- package/build/utxo/IUTXO.d.ts +0 -0
- package/build/utxo/IUTXO.js +1 -0
- package/build/utxo/OPNetUtils.d.ts +7 -0
- package/build/utxo/OPNetUtils.js +47 -0
- package/build/utxo/UTXOManager.d.ts +7 -0
- package/build/utxo/UTXOManager.js +47 -0
- package/build/wbtc/BroadcastResponse.d.ts +0 -0
- package/build/wbtc/BroadcastResponse.js +1 -0
- package/gulpfile.js +152 -152
- package/package.json +109 -109
- package/src/_version.ts +1 -1
- package/src/consensus/Consensus.ts +36 -36
- package/src/consensus/ConsensusConfig.ts +39 -39
- package/src/crypto/crypto-browser.js +75 -75
- package/src/generators/AddressGenerator.ts +24 -24
- package/src/generators/Features.ts +5 -5
- package/src/generators/Generator.ts +75 -75
- package/src/generators/builders/CalldataGenerator.ts +148 -148
- package/src/generators/builders/DeploymentGenerator.ts +66 -66
- package/src/index.ts +4 -4
- package/src/keypair/AddressVerificator.ts +40 -40
- package/src/keypair/EcKeyPair.ts +282 -282
- package/src/keypair/Wallet.ts +120 -97
- package/src/keypair/interfaces/IWallet.ts +19 -19
- package/src/metadata/ContractBaseMetadata.ts +23 -23
- package/src/metadata/contracts/wBTC.ts +60 -60
- package/src/metadata/tokens.ts +135 -135
- package/src/network/NetworkInformation.ts +7 -7
- package/src/transaction/TransactionFactory.ts +496 -496
- package/src/transaction/browser/BrowserSignerBase.ts +37 -37
- package/src/transaction/browser/Web3Provider.ts +46 -46
- package/src/transaction/browser/extensions/UnisatSigner.ts +218 -218
- package/src/transaction/browser/types/Unisat.ts +97 -97
- package/src/transaction/builders/FundingTransaction.ts +40 -40
- package/src/transaction/builders/InteractionTransaction.ts +38 -38
- package/src/transaction/builders/SharedInteractionTransaction.ts +368 -368
- package/src/transaction/builders/TransactionBuilder.ts +665 -665
- package/src/transaction/builders/UnwrapSegwitTransaction.ts +365 -365
- package/src/transaction/builders/UnwrapTransaction.ts +507 -507
- package/src/transaction/builders/WrapTransaction.ts +346 -346
- package/src/transaction/interfaces/ITransactionParameters.ts +59 -59
- package/src/transaction/interfaces/Tap.ts +26 -26
- package/src/transaction/psbt/PSBTTypes.ts +3 -3
- package/src/transaction/shared/TweakedTransaction.ts +539 -539
- package/src/utxo/OPNetLimitedProvider.ts +244 -244
- package/src/utxo/interfaces/BroadcastResponse.ts +10 -10
- package/src/utxo/interfaces/IUTXO.ts +29 -29
- package/src/verification/TapscriptVerificator.ts +89 -89
- package/src/wbtc/Generate.ts +40 -40
- package/src/wbtc/UnwrapGeneration.ts +13 -13
- package/src/wbtc/WrappedGenerationParameters.ts +33 -33
- package/webpack.config.js +78 -78
- /package/build/generators/builders/{MultiSignGenerator.d.ts → MultisignGenerator.d.ts} +0 -0
- /package/build/generators/builders/{MultiSignGenerator.js → MultisignGenerator.js} +0 -0
- /package/build/generators/{Features.d.ts → features.d.ts} +0 -0
- /package/build/generators/{Features.js → features.js} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { networks, Psbt } from 'bitcoinjs-lib';
|
|
2
|
+
import { PsbtTransaction, } from '../transaction/processor/PsbtTransaction.js';
|
|
3
|
+
import { Regtest } from './Regtest.js';
|
|
4
|
+
import { Wallet } from '../keypair/Wallet.js';
|
|
5
|
+
import { EcKeyPair } from '../keypair/EcKeyPair.js';
|
|
6
|
+
const utxos = [
|
|
7
|
+
{
|
|
8
|
+
vault: 'bcrt1ql3dff0w774f627ggw4ejt3pv04u7t73e2sjsqv5ff7qygrhlylzsdh0xna',
|
|
9
|
+
publicKeys: [
|
|
10
|
+
'AgPmjuI2/MNJM9STswWm8MdWEllHHRPs0Q3+DjdjOny+',
|
|
11
|
+
'AtOOpbDsniLbs2QGuqPFu7AnCOK9lNSSl+pvPr0m0Yx3',
|
|
12
|
+
'A4JEwTBwTx5QaLCFORTow27UQvkLQWZguhz6N+d8FczI',
|
|
13
|
+
'A7ZKMoDQJlcQNbzIikCE5MPiFC81RvHHTeTMRx2/bFiO',
|
|
14
|
+
],
|
|
15
|
+
minimum: 2,
|
|
16
|
+
utxos: [
|
|
17
|
+
{
|
|
18
|
+
hash: '82a0d11689c8a5e7155c270a031a7a192f5fcba3a4260fc3510ebd4c73bfa6aa',
|
|
19
|
+
blockId: 619n,
|
|
20
|
+
output: 'ACD8WpS93vVTpXkIdXMlxCx9eeX6OVQlADKJT4BEDv8nxQ==',
|
|
21
|
+
outputIndex: 1,
|
|
22
|
+
value: 100000000n,
|
|
23
|
+
vault: 'bcrt1ql3dff0w774f627ggw4ejt3pv04u7t73e2sjsqv5ff7qygrhlylzsdh0xna',
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
const base64 = '70736274ff010052020000000143a120458c2074a2cb6d08e8b741c18dd50615999b0448b6678748aa9a12906f0000000000fdffffff011027000000000000160014dc0d46077a225cbc9a844750f9bacb9ee5eed4f900000000000100f7020000000001014bc29a0c5878d0e34c7e0e76c97dedfa00daa56fe8210674ed31fb9e96ec16790100000000fdffffff025af601000000000022512058817b9610dc27498639d0c4ae8ca0113ba14da430ff6b78ae75292293212681275e83ec00000000225120cbe1fb2adf81b16ba4afbb38743f4738ccb28170d2efc35a3ca9366ce64ea45102483045022100a3552d46258d93b81dd9dcfaa57a6960cb9ae8d5009ff25940aca13c219eed6402202248161ab18a4741f5299fb8eab9274e2574d510f9cafac8277006a614bf308e0121020373626d317ae8788ce3280b491068610d840c23ecb64c14075bbb9f670af52c0000000001012b5af601000000000022512058817b9610dc27498639d0c4ae8ca0113ba14da430ff6b78ae752922932126810108fd9b010614dc0d46077a225cbc9a844750f9bacb9ee5eed4f9200373626d317ae8788ce3280b491068610d840c23ecb64c14075bbb9f670af52c4104964ea75ea30a5512ade2b830259a2eca4b21e1fd68699d3356b5d81ded56a5c5683236718cff2ed3e6201914039f1fb9f84ea06baa446e47854756421507258341da89e8c09e66a1fd759abe13e01bb0ecdd4fa85c2fb64fb62ea66b2ccaafbca7ceb99598f5f51485e71c55b45275c7643d5d1f757888647f0fb41a7ef9d56eab839d200373626d317ae8788ce3280b491068610d840c23ecb64c14075bbb9f670af52cad20e64ee717cbae471c72c6ed593ad376944885bcc38da475d24248fb49e2310f0dada9146be111472cff4df4c2052061c6c5929fbded8ebd88a91457d3bd43a330a6b08397e767de16fd355a882ef98874519c63036273694f1e1f8b080000000000020a6b9dbfe628033ec0be5001002ece0f292400000067516841c10373626d317ae8788ce3280b491068610d840c23ecb64c14075bbb9f670af52ce7e4d593fcb72926eedbe0d1e311f41acd6f6ef161dcba081a75168ec4dcd3790000';
|
|
29
|
+
const network = networks.regtest;
|
|
30
|
+
const wallet = new Wallet(Regtest.wallet, network);
|
|
31
|
+
const realSigner = Wallet.fromWif('cRHbWamSVDkJWwjq5vMtriuFsWcptWmA7z8Nkqotk9vJ891KMBXc', network);
|
|
32
|
+
const originalTx = Psbt.fromHex(base64, { network: network });
|
|
33
|
+
const rlSigner2 = EcKeyPair.fromPrivateKey(Buffer.from('c3878546c453bca783fd91965218242eecc32d5443764d4a7f233ff018f002e0', 'hex'), network);
|
|
34
|
+
const psbtTransactionData2 = {
|
|
35
|
+
signer: rlSigner2,
|
|
36
|
+
network: network,
|
|
37
|
+
};
|
|
38
|
+
const psbtTransaction2 = PsbtTransaction.fromBase64('AHBzYnT/AQCJAgAAAAGqpr9zTL0OUcMPJqSjy18vGXoaAwonXBXnpciJFtGgggEAAAAA/f///wLgP+4FAAAAACIAIPxalL3e9VOleQh1cyXELH155fo5VCUAMolPgEQO/yfFSgEAAAAAAAAiUSDL4fsq34Gxa6Svuzh0P0c4zLKBcNLvw1o8qTZs5k6kUQAAAAAAAQErAOH1BQAAAAAiACD8WpS93vVTpXkIdXMlxCx9eeX6OVQlADKJT4BEDv8nxSICAgPmjuI2/MNJM9STswWm8MdWEllHHRPs0Q3+DjdjOny+RzBEAiAZRgcFaRr39GY9sko5lKWov4g4i+77dNzCMKHR2WUbHQIgaPfYFjQZt0sCItEkosLeCZD94VPH4T2q/pZXP//x/luBAQMEgQAAAAEFi1IhAgPmjuI2/MNJM9STswWm8MdWEllHHRPs0Q3+DjdjOny+IQLTjqWw7J4i27NkBrqjxbuwJwjivZTUkpfqbz69JtGMdyEDgkTBMHBPHlBosIU5FOjDbtRC+QtBZmC6HPo353wVzMghA7ZKMoDQJlcQNbzIikCE5MPiFC81RvHHTeTMRx2/bFiOVK4AAAA=', psbtTransactionData2);
|
|
39
|
+
psbtTransaction2.ignoreSignatureError();
|
|
40
|
+
const s = await psbtTransaction2.attemptSignAllInputs();
|
|
41
|
+
const f = psbtTransaction2.attemptFinalizeInputs(1);
|
|
42
|
+
console.log(psbtTransaction2, s, f);
|
|
43
|
+
const newPsbt = psbtTransaction2.getTransaction().toHex();
|
|
44
|
+
console.log(newPsbt);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { TransactionFactory } from '../../transaction/TransactionFactory.js';
|
|
2
|
+
import { OPNetLimitedProvider } from '../../utxo/OPNetLimitedProvider.js';
|
|
3
|
+
import { Wallet } from '../../keypair/Wallet.js';
|
|
4
|
+
import { Regtest } from '../Regtest.js';
|
|
5
|
+
import { networks } from 'bitcoinjs-lib';
|
|
6
|
+
const network = networks.regtest;
|
|
7
|
+
const utxoManager = new OPNetLimitedProvider('http://localhost:9001');
|
|
8
|
+
const factory = new TransactionFactory();
|
|
9
|
+
const wallet = new Wallet(Regtest.wallet, network);
|
|
10
|
+
const amount = 100000000n;
|
|
11
|
+
const utxoSetting = {
|
|
12
|
+
addresses: [wallet.p2wpkh, wallet.p2tr],
|
|
13
|
+
minAmount: 10000n,
|
|
14
|
+
requestedAmount: amount,
|
|
15
|
+
};
|
|
16
|
+
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
17
|
+
if (!utxos) {
|
|
18
|
+
throw new Error('No UTXOs found');
|
|
19
|
+
}
|
|
20
|
+
const fundingTransactionParameters = {
|
|
21
|
+
amount: amount,
|
|
22
|
+
feeRate: 500,
|
|
23
|
+
from: wallet.p2wpkh,
|
|
24
|
+
utxos: utxos,
|
|
25
|
+
signer: wallet.keypair,
|
|
26
|
+
network: network,
|
|
27
|
+
priorityFee: 0n,
|
|
28
|
+
to: 'bcrt1pst60scy2zdyxkfzqs593aevx2jypah32zzjjx2kmz57yzf228wjq5wtyc5',
|
|
29
|
+
};
|
|
30
|
+
const fundingTx = await factory.createBTCTransfer(fundingTransactionParameters);
|
|
31
|
+
const broadcastResponse = await utxoManager.broadcastTransaction(fundingTx.tx, false);
|
|
32
|
+
if (!broadcastResponse) {
|
|
33
|
+
throw new Error('Could not broadcast transaction');
|
|
34
|
+
}
|
|
35
|
+
console.log(broadcastResponse);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { TransactionFactory } from '../../transaction/TransactionFactory.js';
|
|
2
|
+
import { OPNetLimitedProvider } from '../../utxo/OPNetLimitedProvider.js';
|
|
3
|
+
import { Wallet } from '../../keypair/Wallet.js';
|
|
4
|
+
import { Regtest } from '../Regtest.js';
|
|
5
|
+
import { networks } from 'bitcoinjs-lib';
|
|
6
|
+
const network = networks.regtest;
|
|
7
|
+
const utxoManager = new OPNetLimitedProvider('http://localhost:9001');
|
|
8
|
+
const factory = new TransactionFactory();
|
|
9
|
+
const wallet = new Wallet(Regtest.wallet, network);
|
|
10
|
+
const amount = 100000000n;
|
|
11
|
+
const utxoSetting = {
|
|
12
|
+
addresses: [wallet.p2wpkh, wallet.p2tr],
|
|
13
|
+
minAmount: 10000n,
|
|
14
|
+
requestedAmount: amount,
|
|
15
|
+
};
|
|
16
|
+
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
17
|
+
if (!utxos) {
|
|
18
|
+
throw new Error('No UTXOs found');
|
|
19
|
+
}
|
|
20
|
+
const fundingTransactionParameters = {
|
|
21
|
+
amount: amount,
|
|
22
|
+
feeRate: 500,
|
|
23
|
+
from: wallet.p2wpkh,
|
|
24
|
+
utxos: utxos,
|
|
25
|
+
signer: wallet.keypair,
|
|
26
|
+
network: network,
|
|
27
|
+
priorityFee: 0n,
|
|
28
|
+
to: 'bcrt1ppqk36azyunxdpadza7gtf568elqxnhu3lwufg98daek3kz07390swyvzd2',
|
|
29
|
+
};
|
|
30
|
+
const fundingTx = await factory.createBTCTransfer(fundingTransactionParameters);
|
|
31
|
+
const broadcastResponse = await utxoManager.broadcastTransaction(fundingTx.tx, false);
|
|
32
|
+
if (!broadcastResponse) {
|
|
33
|
+
throw new Error('Could not broadcast transaction');
|
|
34
|
+
}
|
|
35
|
+
console.log(broadcastResponse);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
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('stake'));
|
|
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 requestedAmount = 1n * 100000000n;
|
|
34
|
+
const utxoSetting = {
|
|
35
|
+
addresses: [wallet.p2wpkh, wallet.p2tr],
|
|
36
|
+
minAmount: 10000n,
|
|
37
|
+
requestedAmount: requestedAmount,
|
|
38
|
+
};
|
|
39
|
+
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
40
|
+
console.log(`UTXOs:`, utxos);
|
|
41
|
+
if (!utxos) {
|
|
42
|
+
throw new Error('No UTXOs found');
|
|
43
|
+
}
|
|
44
|
+
const calldata = generateCalldata(520000n);
|
|
45
|
+
const interactionParameters = {
|
|
46
|
+
from: wallet.p2wpkh,
|
|
47
|
+
to: wBtc.getAddress(),
|
|
48
|
+
utxos: utxos,
|
|
49
|
+
signer: wallet.keypair,
|
|
50
|
+
network: network,
|
|
51
|
+
feeRate: 1000,
|
|
52
|
+
priorityFee: 100000n,
|
|
53
|
+
calldata: calldata,
|
|
54
|
+
};
|
|
55
|
+
const finalTx = factory.signInteraction(interactionParameters);
|
|
56
|
+
const firstTxBroadcast = await rpc.sendRawTransaction({
|
|
57
|
+
hexstring: finalTx[0],
|
|
58
|
+
});
|
|
59
|
+
console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
|
|
60
|
+
if (!firstTxBroadcast) {
|
|
61
|
+
throw new Error('Could not broadcast first transaction');
|
|
62
|
+
}
|
|
63
|
+
const secondTxBroadcast = await rpc.sendRawTransaction({
|
|
64
|
+
hexstring: finalTx[1],
|
|
65
|
+
});
|
|
66
|
+
console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
|
|
67
|
+
if (!secondTxBroadcast) {
|
|
68
|
+
throw new Error('Could not broadcast second transaction');
|
|
69
|
+
}
|
|
70
|
+
if (shouldMineBlock) {
|
|
71
|
+
await mineBlock();
|
|
72
|
+
}
|
|
73
|
+
rpc.destroy();
|
|
@@ -0,0 +1,89 @@
|
|
|
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 * as fs from 'fs';
|
|
8
|
+
import { shuffleArray } from '../shared/Utils.js';
|
|
9
|
+
const network = networks.regtest;
|
|
10
|
+
const rpc = new BitcoinRPC();
|
|
11
|
+
const wallet = new Wallet(Regtest.wallet, network);
|
|
12
|
+
const utxoManager = new OPNetLimitedProvider('http://localhost:9001');
|
|
13
|
+
const factory = new TransactionFactory();
|
|
14
|
+
const shouldMineBlock = false;
|
|
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 requestedAmount = 100000000000n;
|
|
25
|
+
const utxoSetting = {
|
|
26
|
+
addresses: [wallet.p2wpkh, wallet.p2tr],
|
|
27
|
+
minAmount: 10000n,
|
|
28
|
+
requestedAmount: requestedAmount,
|
|
29
|
+
};
|
|
30
|
+
console.log('Fetching UTXOs');
|
|
31
|
+
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
32
|
+
if (!utxos) {
|
|
33
|
+
throw new Error('No UTXOs found');
|
|
34
|
+
}
|
|
35
|
+
console.log('Shuffling UTXOs', utxos.length);
|
|
36
|
+
shuffleArray(utxos);
|
|
37
|
+
export async function deployMoto(contracts) {
|
|
38
|
+
let deployed = [];
|
|
39
|
+
for (let contract of contracts) {
|
|
40
|
+
const bytecode = fs.readFileSync(contract);
|
|
41
|
+
for (let utxo of utxos) {
|
|
42
|
+
const deploymentParameters = {
|
|
43
|
+
from: wallet.p2wpkh,
|
|
44
|
+
utxos: [utxo],
|
|
45
|
+
signer: wallet.keypair,
|
|
46
|
+
network: network,
|
|
47
|
+
feeRate: 500,
|
|
48
|
+
priorityFee: 50000n,
|
|
49
|
+
bytecode: bytecode,
|
|
50
|
+
};
|
|
51
|
+
try {
|
|
52
|
+
const finalTx = await factory.signDeployment(deploymentParameters);
|
|
53
|
+
console.log(`Final transaction:`, finalTx);
|
|
54
|
+
let txid;
|
|
55
|
+
try {
|
|
56
|
+
txid = await utxoManager.broadcastTransaction(finalTx.transaction[0], false);
|
|
57
|
+
console.log(`Transaction ID:`, txid);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (!txid) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
txid = await utxoManager.broadcastTransaction(finalTx.transaction[1], false);
|
|
67
|
+
console.log(`Transaction ID:`, txid);
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (!txid) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
deployed.push({ contract: finalTx.contractAddress, file: contract });
|
|
76
|
+
console.log(`Contract deployed at ${finalTx.contractAddress}`);
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (shouldMineBlock) {
|
|
85
|
+
await mineBlock();
|
|
86
|
+
}
|
|
87
|
+
rpc.destroy();
|
|
88
|
+
return deployed;
|
|
89
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { deployMoto } from './deployMoto.js';
|
|
2
|
+
console.log(`Step 1: Deploying MotoSwap contracts`);
|
|
3
|
+
const contractsToDeploy = ['./bytecode/wbtc.wasm', './bytecode/moto.wasm', './bytecode/pool.wasm'];
|
|
4
|
+
const contracts = await deployMoto(contractsToDeploy);
|
|
5
|
+
console.log(`Contracts deployed:`, contracts);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
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 * as fs from 'node:fs';
|
|
7
|
+
const network = networks.testnet;
|
|
8
|
+
const wallet = new Wallet(Testnet.wallet, network);
|
|
9
|
+
const utxoManager = new OPNetLimitedProvider('https://testnet.opnet.org');
|
|
10
|
+
const factory = new TransactionFactory();
|
|
11
|
+
const utxoSetting = {
|
|
12
|
+
addresses: [wallet.p2tr, wallet.p2wpkh],
|
|
13
|
+
minAmount: 10000n,
|
|
14
|
+
requestedAmount: 100000n,
|
|
15
|
+
};
|
|
16
|
+
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
17
|
+
if (!utxos) {
|
|
18
|
+
throw new Error('No UTXOs found');
|
|
19
|
+
}
|
|
20
|
+
const bytecode = fs.readFileSync('./bytecode/release.wasm');
|
|
21
|
+
const deploymentParameters = {
|
|
22
|
+
from: wallet.p2wpkh,
|
|
23
|
+
utxos: utxos,
|
|
24
|
+
signer: wallet.keypair,
|
|
25
|
+
network: network,
|
|
26
|
+
feeRate: 1000,
|
|
27
|
+
priorityFee: 50000n,
|
|
28
|
+
bytecode: bytecode,
|
|
29
|
+
};
|
|
30
|
+
const finalTx = await factory.signDeployment(deploymentParameters);
|
|
31
|
+
console.log(`Final transaction:`, finalTx);
|
|
32
|
+
const firstTxBroadcast = await utxoManager.broadcastTransaction(finalTx.transaction[0], false);
|
|
33
|
+
console.log(`First transaction broadcasted:`, firstTxBroadcast);
|
|
34
|
+
if (!firstTxBroadcast) {
|
|
35
|
+
throw new Error('Could not broadcast first transaction');
|
|
36
|
+
}
|
|
37
|
+
const secondTxBroadcast = await utxoManager.broadcastTransaction(finalTx.transaction[1], false);
|
|
38
|
+
console.log(`Second transaction broadcasted:`, secondTxBroadcast);
|
|
39
|
+
if (!secondTxBroadcast) {
|
|
40
|
+
throw new Error('Could not broadcast second transaction');
|
|
41
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
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 * as fs from 'fs';
|
|
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 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 requestedAmount = 100000000000n;
|
|
24
|
+
const utxoSetting = {
|
|
25
|
+
addresses: [wallet.p2wpkh, wallet.p2tr],
|
|
26
|
+
minAmount: 10000n,
|
|
27
|
+
requestedAmount: requestedAmount,
|
|
28
|
+
};
|
|
29
|
+
function shuffleArray(array) {
|
|
30
|
+
for (let i = array.length - 1; i > 0; i--) {
|
|
31
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
32
|
+
[array[i], array[j]] = [array[j], array[i]];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
36
|
+
if (!utxos) {
|
|
37
|
+
throw new Error('No UTXOs found');
|
|
38
|
+
}
|
|
39
|
+
shuffleArray(utxos);
|
|
40
|
+
const bytecode = fs.readFileSync('./bytecode/wbtc.wasm');
|
|
41
|
+
for (let utxo of utxos) {
|
|
42
|
+
const deploymentParameters = {
|
|
43
|
+
from: wallet.p2wpkh,
|
|
44
|
+
utxos: [utxo],
|
|
45
|
+
signer: wallet.keypair,
|
|
46
|
+
network: network,
|
|
47
|
+
feeRate: 500,
|
|
48
|
+
priorityFee: 50000n,
|
|
49
|
+
bytecode: bytecode,
|
|
50
|
+
};
|
|
51
|
+
try {
|
|
52
|
+
const finalTx = factory.signDeployment(deploymentParameters);
|
|
53
|
+
console.log(`Final transaction:`, finalTx);
|
|
54
|
+
let txid;
|
|
55
|
+
try {
|
|
56
|
+
txid = await utxoManager.broadcastTransaction(finalTx.transaction[0], false);
|
|
57
|
+
console.log(`Transaction ID:`, txid);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (!txid) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
txid = await utxoManager.broadcastTransaction(finalTx.transaction[1], false);
|
|
67
|
+
console.log(`Transaction ID:`, txid);
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (!txid) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
console.log(`Contract deployed at ${finalTx.contractAddress}`);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
if (shouldMineBlock) {
|
|
83
|
+
await mineBlock();
|
|
84
|
+
}
|
|
85
|
+
rpc.destroy();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
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 * as fs from 'fs';
|
|
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 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 requestedAmount = 100000000000n;
|
|
24
|
+
const utxoSetting = {
|
|
25
|
+
addresses: [wallet.p2wpkh, wallet.p2tr],
|
|
26
|
+
minAmount: 10000n,
|
|
27
|
+
requestedAmount: requestedAmount,
|
|
28
|
+
};
|
|
29
|
+
function shuffleArray(array) {
|
|
30
|
+
for (let i = array.length - 1; i > 0; i--) {
|
|
31
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
32
|
+
[array[i], array[j]] = [array[j], array[i]];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
|
|
36
|
+
if (!utxos) {
|
|
37
|
+
throw new Error('No UTXOs found');
|
|
38
|
+
}
|
|
39
|
+
shuffleArray(utxos);
|
|
40
|
+
const bytecode = fs.readFileSync('./bytecode/wbtc.wasm');
|
|
41
|
+
for (let utxo of utxos) {
|
|
42
|
+
const deploymentParameters = {
|
|
43
|
+
from: wallet.p2wpkh,
|
|
44
|
+
utxos: [utxo],
|
|
45
|
+
signer: wallet.keypair,
|
|
46
|
+
network: network,
|
|
47
|
+
feeRate: 500,
|
|
48
|
+
priorityFee: 50000n,
|
|
49
|
+
bytecode: bytecode,
|
|
50
|
+
};
|
|
51
|
+
try {
|
|
52
|
+
const finalTx = await factory.signDeployment(deploymentParameters);
|
|
53
|
+
console.log(`Final transaction:`, finalTx);
|
|
54
|
+
let txid;
|
|
55
|
+
try {
|
|
56
|
+
txid = await utxoManager.broadcastTransaction(finalTx.transaction[0], false);
|
|
57
|
+
console.log(`Transaction ID:`, txid);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (!txid) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
txid = await utxoManager.broadcastTransaction(finalTx.transaction[1], false);
|
|
67
|
+
console.log(`Transaction ID:`, txid);
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (!txid) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
console.log(`Contract deployed at ${finalTx.contractAddress}`);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
if (shouldMineBlock) {
|
|
83
|
+
await mineBlock();
|
|
84
|
+
}
|
|
85
|
+
rpc.destroy();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
|
|
2
|
+
import { MOTO_ADDRESS_REGTEST, WBTC_ADDRESS_REGTEST } from '../../metadata/tokens.js';
|
|
3
|
+
const abiCoder = new ABICoder();
|
|
4
|
+
const createPoolSelector = Number(`0x` + abiCoder.encodeSelector('createPool'));
|
|
5
|
+
function generateCalldata() {
|
|
6
|
+
const addCalldata = new BinaryWriter();
|
|
7
|
+
addCalldata.writeSelector(createPoolSelector);
|
|
8
|
+
addCalldata.writeAddress(WBTC_ADDRESS_REGTEST);
|
|
9
|
+
addCalldata.writeAddress(MOTO_ADDRESS_REGTEST);
|
|
10
|
+
return Buffer.from(addCalldata.getBuffer());
|
|
11
|
+
}
|
|
12
|
+
const calldata = generateCalldata();
|
|
13
|
+
console.log('createPool', calldata.toString('hex'));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { networks } from 'bitcoinjs-lib';
|
|
2
|
+
import { Regtest } from './Regtest.js';
|
|
3
|
+
import { Wallet } from '../keypair/Wallet.js';
|
|
4
|
+
import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
|
|
5
|
+
const walletTest = new Wallet(Regtest.wallet, networks.testnet);
|
|
6
|
+
console.log(walletTest);
|
|
7
|
+
const wallet = new Wallet(Regtest.wallet, networks.regtest);
|
|
8
|
+
console.log(wallet);
|
|
9
|
+
const selector = new ABICoder().encodeSelector('approve');
|
|
10
|
+
console.log('approve', Number(`0x${selector}`), selector);
|
|
11
|
+
const balanceOf = Number('0x' + new ABICoder().encodeSelector('balanceOf'));
|
|
12
|
+
const totalSupplyS = Number('0x' + new ABICoder().encodeSelector('totalSupply'));
|
|
13
|
+
const balanceCall = new BinaryWriter();
|
|
14
|
+
balanceCall.writeSelector(balanceOf);
|
|
15
|
+
balanceCall.writeAddress('bcrt1pmc2dz8fy4rwghzmfz4hdsennusld8cwgtr0mjxl45wt8cnqcm3psssc327');
|
|
16
|
+
const totalSupply = new BinaryWriter();
|
|
17
|
+
totalSupply.writeSelector(totalSupplyS);
|
|
18
|
+
console.log('balanceOf', balanceOf, Buffer.from(balanceCall.getBuffer()).toString('hex'));
|
|
19
|
+
console.log('totalSupply', totalSupplyS, Buffer.from(totalSupply.getBuffer()).toString('hex'));
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Wallet } from '../keypair/Wallet.js';
|
|
3
|
+
import { Address } from '@btc-vision/bsi-binary';
|
|
4
|
+
export declare const wallet: Wallet;
|
|
5
|
+
export declare function interact(contract: Address, calldata: Buffer, mine?: boolean): Promise<void>;
|