@btc-vision/transaction 1.0.97 → 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.
- package/.babelrc +4 -7
- package/.prettierrc.json +11 -11
- package/CONTRIBUTING.md +71 -71
- package/LICENSE.md +62 -62
- package/README.md +76 -76
- package/browser/_version.d.ts +1 -1
- package/browser/bytecode/Compressor.d.ts +0 -1
- package/browser/crypto/crypto-browser.d.ts +1 -30
- package/browser/crypto/crypto.d.ts +0 -1
- package/browser/generators/AddressGenerator.d.ts +0 -1
- package/browser/generators/Generator.d.ts +0 -1
- package/browser/generators/builders/CalldataGenerator.d.ts +0 -1
- package/browser/generators/builders/DeploymentGenerator.d.ts +0 -1
- package/browser/generators/builders/MultiSignGenerator.d.ts +0 -1
- package/browser/index.js +1 -1
- package/browser/keypair/EcKeyPair.d.ts +0 -1
- package/browser/keypair/Wallet.d.ts +0 -1
- package/browser/signer/TweakedSigner.d.ts +0 -1
- package/browser/transaction/browser/BrowserSignerBase.d.ts +0 -1
- package/browser/transaction/browser/extensions/UnisatSigner.d.ts +0 -1
- package/browser/transaction/builders/DeploymentTransaction.d.ts +0 -1
- package/browser/transaction/builders/InteractionTransaction.d.ts +0 -1
- package/browser/transaction/builders/MultiSignTransaction.d.ts +0 -1
- package/browser/transaction/builders/SharedInteractionTransaction.d.ts +0 -1
- package/browser/transaction/builders/TransactionBuilder.d.ts +0 -1
- package/browser/transaction/builders/UnwrapSegwitTransaction.d.ts +0 -1
- package/browser/transaction/builders/UnwrapTransaction.d.ts +0 -1
- package/browser/transaction/builders/WrapTransaction.d.ts +0 -1
- package/browser/transaction/interfaces/ITransactionParameters.d.ts +0 -1
- package/browser/transaction/interfaces/Tap.d.ts +0 -1
- package/browser/transaction/shared/P2TR_MS.d.ts +0 -1
- package/browser/transaction/shared/TweakedTransaction.d.ts +0 -1
- package/browser/utils/BitcoinUtils.d.ts +0 -1
- package/browser/verification/TapscriptVerificator.d.ts +0 -1
- package/browser/wbtc/WrappedGenerationParameters.d.ts +0 -1
- package/build/bytecode/Compressor.d.ts +0 -1
- package/build/bytecode/Compressor.js +4 -4
- package/build/crypto/crypto.d.ts +0 -1
- package/build/generators/AddressGenerator.d.ts +0 -1
- package/build/generators/Generator.d.ts +0 -1
- package/build/generators/Generator.js +3 -5
- package/build/generators/builders/CalldataGenerator.d.ts +0 -1
- package/build/generators/builders/DeploymentGenerator.d.ts +0 -1
- package/build/generators/builders/{MultisignGenerator.d.ts → MultiSignGenerator.d.ts} +0 -1
- package/build/generators/builders/{MultisignGenerator.js → MultiSignGenerator.js} +1 -1
- package/build/keypair/EcKeyPair.d.ts +0 -1
- package/build/keypair/EcKeyPair.js +2 -2
- package/build/keypair/Wallet.d.ts +0 -1
- package/build/keypair/Wallet.js +0 -5
- package/build/metadata/ContractBaseMetadata.js +0 -1
- package/build/metadata/contracts/wBTC.js +3 -5
- package/build/metadata/tokens.js +27 -25
- package/build/signer/TweakedSigner.d.ts +0 -1
- package/build/transaction/browser/BrowserSignerBase.d.ts +0 -1
- package/build/transaction/browser/extensions/UnisatSigner.d.ts +0 -1
- package/build/transaction/browser/extensions/UnisatSigner.js +1 -6
- package/build/transaction/builders/DeploymentTransaction.d.ts +0 -1
- package/build/transaction/builders/DeploymentTransaction.js +25 -33
- package/build/transaction/builders/FundingTransaction.js +1 -3
- package/build/transaction/builders/InteractionTransaction.d.ts +0 -1
- package/build/transaction/builders/InteractionTransaction.js +2 -5
- package/build/transaction/builders/MultiSignTransaction.d.ts +0 -1
- package/build/transaction/builders/MultiSignTransaction.js +66 -73
- package/build/transaction/builders/SharedInteractionTransaction.d.ts +0 -1
- package/build/transaction/builders/SharedInteractionTransaction.js +20 -25
- package/build/transaction/builders/TransactionBuilder.d.ts +0 -1
- package/build/transaction/builders/TransactionBuilder.js +12 -21
- package/build/transaction/builders/UnwrapSegwitTransaction.d.ts +0 -1
- package/build/transaction/builders/UnwrapSegwitTransaction.js +4 -10
- package/build/transaction/builders/UnwrapTransaction.d.ts +0 -1
- package/build/transaction/builders/UnwrapTransaction.js +5 -11
- package/build/transaction/builders/WrapTransaction.d.ts +0 -1
- package/build/transaction/builders/WrapTransaction.js +5 -12
- package/build/transaction/interfaces/ITransactionParameters.d.ts +0 -1
- package/build/transaction/interfaces/Tap.d.ts +0 -1
- package/build/transaction/processor/PsbtTransaction.js +3 -4
- package/build/transaction/shared/P2TR_MS.d.ts +0 -1
- package/build/transaction/shared/TweakedTransaction.d.ts +0 -1
- package/build/transaction/shared/TweakedTransaction.js +11 -16
- package/build/utils/BitcoinUtils.d.ts +0 -1
- package/build/utxo/OPNetLimitedProvider.js +2 -3
- package/build/verification/TapscriptVerificator.d.ts +0 -1
- package/build/verification/TapscriptVerificator.js +1 -1
- package/build/wbtc/UnwrapGeneration.js +0 -2
- package/build/wbtc/WrappedGenerationParameters.d.ts +0 -1
- package/build/wbtc/WrappedGenerationParameters.js +0 -6
- package/cjs/package.json +3 -0
- package/docs/.nojekyll +1 -0
- package/docs/assets/highlight.css +43 -0
- package/docs/assets/icons.js +15 -0
- package/docs/assets/icons.svg +1 -0
- package/docs/assets/main.js +59 -0
- package/docs/assets/material-style.css +247 -0
- package/docs/assets/navigation.js +1 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1412 -0
- package/docs/classes/AddressGenerator.html +177 -0
- package/docs/classes/AddressVerificator.html +177 -0
- package/docs/classes/BitcoinUtils.html +196 -0
- package/docs/classes/CalldataGenerator.html +213 -0
- package/docs/classes/Compressor.html +185 -0
- package/docs/classes/ContractBaseMetadata.html +182 -0
- package/docs/classes/CustomKeypair.html +189 -0
- package/docs/classes/DeploymentGenerator.html +201 -0
- package/docs/classes/DeploymentTransaction.html +465 -0
- package/docs/classes/EcKeyPair.html +280 -0
- package/docs/classes/FundingTransaction.html +425 -0
- package/docs/classes/Generator.html +199 -0
- package/docs/classes/InteractionTransaction.html +467 -0
- package/docs/classes/MultiSignGenerator.html +178 -0
- package/docs/classes/MultiSignTransaction.html +490 -0
- package/docs/classes/OPNetLimitedProvider.html +225 -0
- package/docs/classes/OPNetTokenAddressManager.html +182 -0
- package/docs/classes/P2TR_MS.html +186 -0
- package/docs/classes/PsbtTransaction.html +320 -0
- package/docs/classes/SharedInteractionTransaction.html +477 -0
- package/docs/classes/TapscriptVerificator.html +180 -0
- package/docs/classes/TransactionBuilder.html +423 -0
- package/docs/classes/TransactionFactory.html +230 -0
- package/docs/classes/TweakedSigner.html +181 -0
- package/docs/classes/TweakedTransaction.html +301 -0
- package/docs/classes/UnisatSigner.html +199 -0
- package/docs/classes/UnwrapGeneration.html +177 -0
- package/docs/classes/UnwrapTransaction.html +518 -0
- package/docs/classes/Wallet.html +204 -0
- package/docs/classes/WrapTransaction.html +509 -0
- package/docs/classes/WrappedGeneration.html +187 -0
- package/docs/classes/wBTC.html +190 -0
- package/docs/enums/ChainId.html +176 -0
- package/docs/enums/Consensus.html +204 -0
- package/docs/enums/Features.html +175 -0
- package/docs/enums/MessageType.html +176 -0
- package/docs/enums/OPNetNetwork.html +177 -0
- package/docs/enums/PSBTTypes.html +175 -0
- package/docs/enums/TransactionSequence.html +177 -0
- package/docs/enums/TransactionType.html +181 -0
- package/docs/enums/UnisatChainType.html +181 -0
- package/docs/enums/UnisatNetwork.html +177 -0
- package/docs/hierarchy.html +174 -0
- package/docs/index.html +215 -0
- package/docs/interfaces/Balance.html +177 -0
- package/docs/interfaces/BitcoinTransferResponse.html +178 -0
- package/docs/interfaces/BroadcastResponse.html +181 -0
- package/docs/interfaces/BroadcastTransactionOptions.html +176 -0
- package/docs/interfaces/BroadcastedTransaction.html +184 -0
- package/docs/interfaces/ConsensusConfig.html +182 -0
- package/docs/interfaces/ContractAddressVerificationParams.html +179 -0
- package/docs/interfaces/DeploymentResult.html +178 -0
- package/docs/interfaces/FetchUTXOParams.html +178 -0
- package/docs/interfaces/FetchUTXOParamsMultiAddress.html +178 -0
- package/docs/interfaces/FundingTransactionResponse.html +178 -0
- package/docs/interfaces/GenerationConstraints.html +182 -0
- package/docs/interfaces/IDeploymentParameters.html +186 -0
- package/docs/interfaces/IFundingTransactionParameters.html +186 -0
- package/docs/interfaces/IInteractionParameters.html +187 -0
- package/docs/interfaces/ITransactionParameters.html +184 -0
- package/docs/interfaces/ITweakedTransactionData.html +178 -0
- package/docs/interfaces/IUnwrapParameters.html +189 -0
- package/docs/interfaces/IWBTCUTXODocument.html +180 -0
- package/docs/interfaces/IWallet.html +181 -0
- package/docs/interfaces/IWrapParameters.html +190 -0
- package/docs/interfaces/MultiSignFromBase64Params.html +188 -0
- package/docs/interfaces/MultiSignParameters.html +188 -0
- package/docs/interfaces/OPNetTokenMetadata.html +179 -0
- package/docs/interfaces/PsbtInputExtended.html +194 -0
- package/docs/interfaces/PsbtOutputExtendedAddress.html +183 -0
- package/docs/interfaces/PsbtOutputExtendedScript.html +183 -0
- package/docs/interfaces/PsbtSignatureOptions.html +176 -0
- package/docs/interfaces/PsbtTransactionData.html +179 -0
- package/docs/interfaces/RawUTXOResponse.html +178 -0
- package/docs/interfaces/SharedInteractionParameters.html +187 -0
- package/docs/interfaces/TapLeafScript.html +177 -0
- package/docs/interfaces/ToSignInputAddress.html +178 -0
- package/docs/interfaces/ToSignInputPublicKey.html +178 -0
- package/docs/interfaces/TweakSettings.html +179 -0
- package/docs/interfaces/UTXO.html +178 -0
- package/docs/interfaces/Unisat.html +190 -0
- package/docs/interfaces/UnisatChainInfo.html +177 -0
- package/docs/interfaces/UnwrapResult.html +181 -0
- package/docs/interfaces/UnwrappedGenerationParameters.html +178 -0
- package/docs/interfaces/UpdateInput.html +175 -0
- package/docs/interfaces/VaultUTXOs.html +178 -0
- package/docs/interfaces/Web3Provider.html +180 -0
- package/docs/interfaces/WrapResult.html +179 -0
- package/docs/interfaces/WrappedGenerationParameters.html +184 -0
- package/docs/modules.html +289 -0
- package/docs/types/FromBase64Params.html +174 -0
- package/docs/types/IDeploymentParametersWithoutSigner.html +174 -0
- package/docs/types/IUnwrapParametersWithoutSigner.html +174 -0
- package/docs/types/IWrapParametersWithoutSigner.html +174 -0
- package/docs/types/InteractionParametersWithoutSigner.html +174 -0
- package/docs/types/PsbtOutputExtended.html +174 -0
- package/docs/types/ToSignInput.html +174 -0
- package/docs/variables/FACTORY_ADDRESS_FRACTAL.html +174 -0
- package/docs/variables/FACTORY_ADDRESS_REGTEST.html +174 -0
- package/docs/variables/FACTORY_ADDRESS_TESTNET.html +174 -0
- package/docs/variables/MOTO_ADDRESS_FRACTAL.html +174 -0
- package/docs/variables/MOTO_ADDRESS_REGTEST.html +174 -0
- package/docs/variables/MOTO_ADDRESS_TESTNET.html +174 -0
- package/docs/variables/OPNetConsensusConfig.html +174 -0
- package/docs/variables/OPNetMetadata.html +174 -0
- package/docs/variables/POOL_ADDRESS_FRACTAL.html +174 -0
- package/docs/variables/POOL_ADDRESS_REGTEST.html +174 -0
- package/docs/variables/POOL_ADDRESS_TESTNET.html +174 -0
- package/docs/variables/ROUTER_ADDRESS_FRACTAL.html +174 -0
- package/docs/variables/ROUTER_ADDRESS_REGTEST.html +174 -0
- package/docs/variables/ROUTER_ADDRESS_TESTNET.html +174 -0
- package/docs/variables/RoswellConsensus.html +174 -0
- package/docs/variables/WBTC_ADDRESS_FRACTAL.html +174 -0
- package/docs/variables/WBTC_ADDRESS_REGTEST.html +174 -0
- package/docs/variables/WBTC_ADDRESS_TESTNET.html +174 -0
- package/docs/variables/currentConsensus.html +174 -0
- package/docs/variables/currentConsensusConfig.html +174 -0
- package/docs/variables/version.html +174 -0
- package/gulpfile.js +49 -133
- package/package.json +112 -113
- package/src/bytecode/Compressor.ts +27 -27
- package/src/consensus/metadata/RoswellConsensus.ts +26 -26
- package/src/crypto/crypto.ts +1 -1
- package/src/generators/Generator.ts +75 -75
- package/src/generators/builders/MultiSignGenerator.ts +73 -73
- package/src/metadata/contracts/wBTC.ts +60 -60
- package/src/metadata/tokens.ts +135 -135
- package/src/network/ChainId.ts +6 -6
- package/src/opnet.ts +82 -82
- package/src/signer/TweakedSigner.ts +56 -56
- package/src/transaction/builders/DeploymentTransaction.ts +356 -356
- package/src/transaction/builders/MultiSignTransaction.ts +659 -659
- package/src/transaction/builders/UnwrapSegwitTransaction.ts +365 -365
- package/src/transaction/builders/UnwrapTransaction.ts +507 -507
- package/src/transaction/enums/TransactionType.ts +9 -9
- package/src/transaction/processor/PsbtTransaction.ts +173 -173
- package/src/transaction/shared/P2TR_MS.ts +42 -42
- package/src/transaction/shared/TweakedTransaction.ts +539 -539
- package/src/utils/BitcoinUtils.ts +96 -96
- package/tsconfig.base.json +27 -43
- package/tsconfig.json +15 -8
- package/tsconfig.webpack.json +22 -22
- package/EPOCH.md +0 -250
- package/VAULT_TARGET_CONSOLIDATION.md +0 -111
- package/browser/network/NetworkInformation.d.ts +0 -6
- package/browser/transaction/browser/BrowserSigner.d.ts +0 -9
- package/browser/transaction/builders/TapUnwarpTransaction.d.ts +0 -40
- package/browser/transaction/builders/UnwarpTransaction.d.ts +0 -34
- package/browser/utxo/UTXOManager.d.ts +0 -7
- package/build/Utils.d.ts +0 -0
- package/build/Utils.js +0 -1
- package/build/consensus/metadata/RoswsellConsensus.d.ts +0 -2
- package/build/consensus/metadata/RoswsellConsensus.js +0 -4
- package/build/contracts/ContractMetadataManager.d.ts +0 -0
- package/build/contracts/ContractMetadataManager.js +0 -1
- package/build/generators/OPNetAddressGenerator.d.ts +0 -0
- package/build/generators/OPNetAddressGenerator.js +0 -1
- package/build/generators/builders/DeploymentGeneratorV2.d.ts +0 -13
- package/build/generators/builders/DeploymentGeneratorV2.js +0 -57
- package/build/generators/builders/UnwrapGenerator.d.ts +0 -8
- package/build/generators/builders/UnwrapGenerator.js +0 -79
- package/build/keypair/interfaces/GeneratedWallet.d.ts +0 -5
- package/build/keypair/interfaces/GeneratedWallet.js +0 -1
- package/build/metadata/CommonContracts.d.ts +0 -6
- package/build/metadata/CommonContracts.js +0 -5
- package/build/metadata/ContractMetadataManager.d.ts +0 -1
- package/build/metadata/ContractMetadataManager.js +0 -9
- package/build/metadata/contracts/ContractBase.d.ts +0 -9
- package/build/metadata/contracts/ContractBase.js +0 -13
- package/build/metadata/contracts/ContractBaseMetadata.d.ts +0 -9
- package/build/metadata/contracts/ContractBaseMetadata.js +0 -13
- package/build/metadata/contracts/ContractMetadataManager.d.ts +0 -0
- package/build/metadata/contracts/ContractMetadataManager.js +0 -1
- package/build/network/NetworkConverter.d.ts +0 -0
- package/build/network/NetworkConverter.js +0 -14
- package/build/network/NetworkInformation.d.ts +0 -6
- package/build/network/NetworkInformation.js +0 -1
- package/build/scripts/Regtest.d.ts +0 -2
- package/build/scripts/Regtest.js +0 -15
- package/build/scripts/test.d.ts +0 -1
- package/build/scripts/test.js +0 -74
- package/build/signer/Regtest.d.ts +0 -2
- package/build/signer/Regtest.js +0 -15
- package/build/tests/Regtest.d.ts +0 -3
- package/build/tests/Regtest.js +0 -29
- package/build/tests/adaptPSBT.d.ts +0 -1
- package/build/tests/adaptPSBT.js +0 -44
- package/build/tests/btc/send.d.ts +0 -1
- package/build/tests/btc/send.js +0 -35
- package/build/tests/btc/transfer.d.ts +0 -1
- package/build/tests/btc/transfer.js +0 -35
- package/build/tests/createPairReg.d.ts +0 -1
- package/build/tests/createPairReg.js +0 -73
- package/build/tests/deploy/deployMoto.d.ts +0 -4
- package/build/tests/deploy/deployMoto.js +0 -89
- package/build/tests/deploy/deployPool.d.ts +0 -1
- package/build/tests/deploy/deployPool.js +0 -5
- package/build/tests/deploy/deployStep1.d.ts +0 -1
- package/build/tests/deploy/deployStep1.js +0 -5
- package/build/tests/deploy/deployStep2.d.ts +0 -1
- package/build/tests/deploy/deployStep2.js +0 -5
- package/build/tests/deploy/deployStep3.d.ts +0 -1
- package/build/tests/deploy/deployStep3.js +0 -5
- package/build/tests/deploy.d.ts +0 -1
- package/build/tests/deploy.js +0 -41
- package/build/tests/deployMotoRegStep1.d.ts +0 -1
- package/build/tests/deployMotoRegStep1.js +0 -85
- package/build/tests/deployReg.d.ts +0 -1
- package/build/tests/deployReg.js +0 -85
- package/build/tests/factory/createPairReg.d.ts +0 -1
- package/build/tests/factory/createPairReg.js +0 -13
- package/build/tests/gen.d.ts +0 -1
- package/build/tests/gen.js +0 -19
- package/build/tests/interaction.d.ts +0 -5
- package/build/tests/interaction.js +0 -62
- package/build/tests/massWrapReg.d.ts +0 -1
- package/build/tests/massWrapReg.js +0 -105
- package/build/tests/mineReg.d.ts +0 -1
- package/build/tests/mineReg.js +0 -19
- package/build/tests/moto/airdropToken.d.ts +0 -1
- package/build/tests/moto/airdropToken.js +0 -21
- package/build/tests/moto/airdropTokens.d.ts +0 -1
- package/build/tests/moto/airdropTokens.js +0 -60
- package/build/tests/moto/allowance.d.ts +0 -1
- package/build/tests/moto/allowance.js +0 -6
- package/build/tests/moto/approve.d.ts +0 -1
- package/build/tests/moto/approve.js +0 -10
- package/build/tests/moto/approveWBTC.d.ts +0 -1
- package/build/tests/moto/approveWBTC.js +0 -12
- package/build/tests/moto/balanceOf.d.ts +0 -1
- package/build/tests/moto/balanceOf.js +0 -12
- package/build/tests/moto/transfer.d.ts +0 -1
- package/build/tests/moto/transfer.js +0 -16
- package/build/tests/motoswap/airdropToken.d.ts +0 -11
- package/build/tests/motoswap/airdropToken.js +0 -36
- package/build/tests/motoswap/deployMoto.d.ts +0 -4
- package/build/tests/motoswap/deployMoto.js +0 -89
- package/build/tests/motoswap/deployMotoRegStep1.d.ts +0 -1
- package/build/tests/motoswap/deployMotoRegStep1.js +0 -91
- package/build/tests/motoswap/deployMotoRegStep2.d.ts +0 -1
- package/build/tests/motoswap/deployMotoRegStep2.js +0 -91
- package/build/tests/motoswap/deployPool.d.ts +0 -1
- package/build/tests/motoswap/deployPool.js +0 -5
- package/build/tests/motoswap/deployStep1.d.ts +0 -1
- package/build/tests/motoswap/deployStep1.js +0 -5
- package/build/tests/motoswap/deployStep2.d.ts +0 -1
- package/build/tests/motoswap/deployStep2.js +0 -5
- package/build/tests/motoswap/deployStep3.d.ts +0 -1
- package/build/tests/motoswap/deployStep3.js +0 -5
- package/build/tests/motoswap/interaction.d.ts +0 -3
- package/build/tests/motoswap/interaction.js +0 -63
- package/build/tests/motoswap/routerAddLiquidity.d.ts +0 -11
- package/build/tests/motoswap/routerAddLiquidity.js +0 -35
- package/build/tests/motoswap-router/addLiquidity.d.ts +0 -11
- package/build/tests/motoswap-router/addLiquidity.js +0 -36
- package/build/tests/motoswap-router/deployMoto.d.ts +0 -4
- package/build/tests/motoswap-router/deployMoto.js +0 -89
- package/build/tests/motoswap-router/deployPool.d.ts +0 -1
- package/build/tests/motoswap-router/deployPool.js +0 -5
- package/build/tests/motoswap-router/deployStep1.d.ts +0 -1
- package/build/tests/motoswap-router/deployStep1.js +0 -5
- package/build/tests/motoswap-router/deployStep2.d.ts +0 -1
- package/build/tests/motoswap-router/deployStep2.js +0 -5
- package/build/tests/motoswap-router/deployStep3.d.ts +0 -1
- package/build/tests/motoswap-router/deployStep3.js +0 -5
- package/build/tests/motoswap-router/getAmountsOut.d.ts +0 -5
- package/build/tests/motoswap-router/getAmountsOut.js +0 -34
- package/build/tests/motoswap-router/routerAddLiquidity.d.ts +0 -11
- package/build/tests/motoswap-router/routerAddLiquidity.js +0 -35
- package/build/tests/motoswap-router/swap.d.ts +0 -8
- package/build/tests/motoswap-router/swap.js +0 -24
- package/build/tests/multisign.d.ts +0 -1
- package/build/tests/multisign.js +0 -47
- package/build/tests/multisign2.d.ts +0 -1
- package/build/tests/multisign2.js +0 -27
- package/build/tests/pool/DecodePoolAddress.d.ts +0 -6
- package/build/tests/pool/DecodePoolAddress.js +0 -12
- package/build/tests/pool/decodeReserves.d.ts +0 -5
- package/build/tests/pool/decodeReserves.js +0 -13
- package/build/tests/pool/reserves.d.ts +0 -1
- package/build/tests/pool/reserves.js +0 -18
- package/build/tests/shared/Utils.d.ts +0 -2
- package/build/tests/shared/Utils.js +0 -14
- package/build/tests/shared/interaction.d.ts +0 -7
- package/build/tests/shared/interaction.js +0 -85
- package/build/tests/shared/tokens.d.ts +0 -6
- package/build/tests/shared/tokens.js +0 -5
- package/build/tests/stakeReg.d.ts +0 -1
- package/build/tests/stakeReg.js +0 -73
- package/build/tests/stakedReg.d.ts +0 -1
- package/build/tests/stakedReg.js +0 -28
- package/build/tests/test.d.ts +0 -1
- package/build/tests/test.js +0 -51
- package/build/tests/test2.d.ts +0 -1
- package/build/tests/test2.js +0 -73
- package/build/tests/testReg.d.ts +0 -1
- package/build/tests/testReg.js +0 -91
- package/build/tests/tokens.d.ts +0 -6
- package/build/tests/tokens.js +0 -5
- package/build/tests/totalRewardReg.d.ts +0 -1
- package/build/tests/totalRewardReg.js +0 -28
- package/build/tests/transfer.d.ts +0 -1
- package/build/tests/transfer.js +0 -74
- package/build/tests/transferReg.d.ts +0 -1
- package/build/tests/transferReg.js +0 -74
- package/build/tests/unStakeReg.d.ts +0 -1
- package/build/tests/unStakeReg.js +0 -72
- package/build/tests/unwrapReg.d.ts +0 -1
- package/build/tests/unwrapReg.js +0 -61
- package/build/tests/unwrapReg2.d.ts +0 -1
- package/build/tests/unwrapReg2.js +0 -56
- package/build/tests/unwrapRegSegwit.d.ts +0 -1
- package/build/tests/unwrapRegSegwit.js +0 -83
- package/build/tests/wbtc/approve.d.ts +0 -1
- package/build/tests/wbtc/approve.js +0 -6
- package/build/tests/wbtc/approveWBTC.d.ts +0 -1
- package/build/tests/wbtc/approveWBTC.js +0 -12
- package/build/tests/wbtc/massWrapReg.d.ts +0 -1
- package/build/tests/wbtc/massWrapReg.js +0 -105
- package/build/tests/wbtc/transfer.d.ts +0 -1
- package/build/tests/wbtc/transfer.js +0 -16
- package/build/tests/wbtc/transferReg.d.ts +0 -1
- package/build/tests/wbtc/transferReg.js +0 -16
- package/build/tests/wbtc/unStakeReg.d.ts +0 -1
- package/build/tests/wbtc/unStakeReg.js +0 -72
- package/build/tests/wbtc/unwrapReg.d.ts +0 -1
- package/build/tests/wbtc/unwrapReg.js +0 -60
- package/build/tests/wbtc/unwrapRegSegwit.d.ts +0 -1
- package/build/tests/wbtc/unwrapRegSegwit.js +0 -83
- package/build/tests/wbtc/withdrawalRequestReg.d.ts +0 -1
- package/build/tests/wbtc/withdrawalRequestReg.js +0 -71
- package/build/tests/wbtc/wrapReg.d.ts +0 -1
- package/build/tests/wbtc/wrapReg.js +0 -65
- package/build/tests/wbtc/wrapTest.d.ts +0 -1
- package/build/tests/wbtc/wrapTest.js +0 -66
- package/build/tests/withdrawalRequestReg.d.ts +0 -1
- package/build/tests/withdrawalRequestReg.js +0 -71
- package/build/tests/wrap.d.ts +0 -1
- package/build/tests/wrap.js +0 -65
- package/build/tests/wrapReg.d.ts +0 -1
- package/build/tests/wrapReg.js +0 -68
- package/build/tests/wrapTest.d.ts +0 -1
- package/build/tests/wrapTest.js +0 -66
- package/build/tests/wrapTestg.d.ts +0 -1
- package/build/tests/wrapTestg.js +0 -66
- package/build/tests/writers/allowance.d.ts +0 -3
- package/build/tests/writers/allowance.js +0 -10
- package/build/tests/writers/approve.d.ts +0 -4
- package/build/tests/writers/approve.js +0 -11
- package/build/transaction/TransactionBuilder.d.ts +0 -60
- package/build/transaction/TransactionBuilder.js +0 -244
- package/build/transaction/browser/BrowserSigner.d.ts +0 -11
- package/build/transaction/browser/BrowserSigner.js +0 -10
- package/build/transaction/browser/extensions/Unisat.d.ts +0 -54
- package/build/transaction/browser/extensions/Unisat.js +0 -11
- package/build/transaction/builders/DeploymentTransactionV2.d.ts +0 -36
- package/build/transaction/builders/DeploymentTransactionV2.js +0 -192
- package/build/transaction/builders/GenericTransaction.d.ts +0 -11
- package/build/transaction/builders/GenericTransaction.js +0 -23
- package/build/transaction/builders/TapUnwarpTransaction.d.ts +0 -37
- package/build/transaction/builders/TapUnwarpTransaction.js +0 -201
- package/build/transaction/builders/UnwarpSegwitTransaction.d.ts +0 -34
- package/build/transaction/builders/UnwarpSegwitTransaction.js +0 -184
- package/build/transaction/builders/UnwarpTransaction.d.ts +0 -35
- package/build/transaction/builders/UnwarpTransaction.js +0 -199
- package/build/transaction/interfaces/ITransactions.d.ts +0 -32
- package/build/transaction/interfaces/ITransactions.js +0 -1
- package/build/utxo/IUTXO.d.ts +0 -0
- package/build/utxo/IUTXO.js +0 -1
- package/build/utxo/OPNetUtils.d.ts +0 -7
- package/build/utxo/OPNetUtils.js +0 -47
- package/build/utxo/UTXOManager.d.ts +0 -7
- package/build/utxo/UTXOManager.js +0 -47
- package/build/wbtc/BroadcastResponse.d.ts +0 -0
- package/build/wbtc/BroadcastResponse.js +0 -1
- package/examples/Deploy.md +0 -188
- package/examples/Unwrap.md +0 -165
- package/examples/Wrap.md +0 -194
- package/tsconfig.cjs.json +0 -13
- /package/build/generators/{features.d.ts → Features.d.ts} +0 -0
- /package/build/generators/{features.js → Features.js} +0 -0
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
# Vault Target Consolidation Formula
|
|
2
|
-
|
|
3
|
-
In this file you will find the explainations to the formula used to calculate the `VaultTargetConsolidationAmount` in a deterministic and fair manner for all requesters. The formula ensures that the minimum value is respected and adapts based on the amount requested by the user.
|
|
4
|
-
|
|
5
|
-
## Formula
|
|
6
|
-
|
|
7
|
-
The formula for calculating the `VaultTargetConsolidationAmount` is as follows:
|
|
8
|
-
|
|
9
|
-
$$
|
|
10
|
-
\text{VaultTargetConsolidationAmount} = \max\left(\text{VaultNetworkConsolidationAcceptance}, \left(\text{VaultNetworkConsolidationAcceptance} + A \times \left(1 - e^{-k \cdot \left(\frac{x - \text{VaultMinimumAmount}}{\text{VaultMinimumAmount}}\right)}\right)\right)\right)
|
|
11
|
-
$$
|
|
12
|
-
|
|
13
|
-
### Variables
|
|
14
|
-
|
|
15
|
-
- **VaultMinimumAmount**: This represents the minimum amount that can be consolidated in a single transaction. It is defined in satoshis and is a constant in the formula.
|
|
16
|
-
|
|
17
|
-
- **VaultNetworkConsolidationAcceptance**: This represents the minimum acceptance for joining UTXOs during an unwrap operation. If the consolidated output going back to the vault is lower than this amount, the transaction will be rejected. It ensures the network has fewer UTXOs and users must pay for the consolidation. It is also defined in satoshis and acts as a threshold in the formula.
|
|
18
|
-
|
|
19
|
-
- **x**: This is the amount requested by the user for withdrawal, represented in satoshis.
|
|
20
|
-
|
|
21
|
-
- **k**: This is a constant that determines the rate of increase in the formula. It controls how rapidly the target consolidation amount grows as the requested amount increases.
|
|
22
|
-
|
|
23
|
-
- **A**: This is an adjustment constant that controls the maximum growth in the formula. It ensures that the target consolidation amount does not grow excessively.
|
|
24
|
-
|
|
25
|
-
### Explanations
|
|
26
|
-
|
|
27
|
-
The formula ensures that the `VaultTargetConsolidationAmount` is always at least `VaultNetworkConsolidationAcceptance`.
|
|
28
|
-
|
|
29
|
-
The inner part of the formula:
|
|
30
|
-
|
|
31
|
-
$$
|
|
32
|
-
\text{VaultNetworkConsolidationAcceptance} + A \times \left(1 - e^{-k \cdot \left(\frac{x - \text{VaultMinimumAmount}}{\text{VaultMinimumAmount}}\right)}\right)
|
|
33
|
-
$$
|
|
34
|
-
|
|
35
|
-
represents an exponential-like growth function that scales based on the amount requested by the user (`x`).
|
|
36
|
-
|
|
37
|
-
Here’s a breakdown:
|
|
38
|
-
|
|
39
|
-
1. **Exponent Term**:
|
|
40
|
-
This term calculates the scaled difference between the requested amount and the minimum amount. The division by `VaultMinimumAmount` normalizes the difference, ensuring that the growth rate is relative to the minimum amount.
|
|
41
|
-
|
|
42
|
-
$$
|
|
43
|
-
k \cdot \left( \frac{x - \text{VaultMinimumAmount}}{\text{VaultMinimumAmount}} \right)
|
|
44
|
-
$$
|
|
45
|
-
|
|
46
|
-
2. **Exponential Part**:
|
|
47
|
-
This part applies the exponential function to the scaled difference. The subtraction from 1 ensures that the result starts at 0 and approaches 1 as the requested amount increases.
|
|
48
|
-
|
|
49
|
-
$$
|
|
50
|
-
1 - e^{-k \cdot \left(\frac{x - \text{VaultMinimumAmount}}{\text{VaultMinimumAmount}}\right)}
|
|
51
|
-
$$
|
|
52
|
-
|
|
53
|
-
3. **Adjustment and Addition**:
|
|
54
|
-
The exponential part is multiplied by the adjustment constant `A`, controlling the maximum impact on the target consolidation amount. This adjusted value is then added to `VaultNetworkConsolidationAcceptance`.
|
|
55
|
-
|
|
56
|
-
$$
|
|
57
|
-
A \times \left(1 - e^{-k \cdot \left(\frac{x - \text{VaultMinimumAmount}}{\text{VaultMinimumAmount}}\right)}\right)
|
|
58
|
-
$$
|
|
59
|
-
|
|
60
|
-
### Deterministic Nature
|
|
61
|
-
|
|
62
|
-
The formula is deterministic, meaning it will produce the same output for the same input values. This ensures consistency and fairness for all requesters.
|
|
63
|
-
|
|
64
|
-
### Implementation
|
|
65
|
-
|
|
66
|
-
Example implementation of the formula:
|
|
67
|
-
|
|
68
|
-
```typescript
|
|
69
|
-
function calculateVaultTargetConsolidationAmount(
|
|
70
|
-
requestedAmount: bigint,
|
|
71
|
-
VaultMinimumAmount: bigint,
|
|
72
|
-
VaultNetworkConsolidationAcceptance: bigint,
|
|
73
|
-
k: number,
|
|
74
|
-
A: bigint
|
|
75
|
-
): bigint {
|
|
76
|
-
// Ensure the requested amount is not less than the minimum amount
|
|
77
|
-
if (requestedAmount < VaultMinimumAmount) {
|
|
78
|
-
throw new Error('Requested amount is less than VaultMinimumAmount');
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// Calculate the exponent term
|
|
82
|
-
const exponentTerm = k * Number(requestedAmount - VaultMinimumAmount) / Number(VaultMinimumAmount);
|
|
83
|
-
|
|
84
|
-
// Calculate the exponential part using BigInt for the result
|
|
85
|
-
const exponentialPart = BigInt(Math.round(Number(A) * (1 - Math.exp(-exponentTerm))));
|
|
86
|
-
|
|
87
|
-
// Calculate the target consolidation amount
|
|
88
|
-
const targetAmount = VaultNetworkConsolidationAcceptance + exponentialPart;
|
|
89
|
-
|
|
90
|
-
// Ensure the target amount is not less than the VaultNetworkConsolidationAcceptance
|
|
91
|
-
return targetAmount < VaultNetworkConsolidationAcceptance
|
|
92
|
-
? VaultNetworkConsolidationAcceptance
|
|
93
|
-
: targetAmount;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const vaultMinimumAmount = 200000n;
|
|
97
|
-
const vaultNetworkConsolidationAcceptance = 400000n;
|
|
98
|
-
const requestedAmount = 1000000n;
|
|
99
|
-
const k = 0.03;
|
|
100
|
-
const A = 1000000n;
|
|
101
|
-
|
|
102
|
-
const result = calculateVaultTargetConsolidationAmount(
|
|
103
|
-
requestedAmount,
|
|
104
|
-
vaultMinimumAmount,
|
|
105
|
-
vaultNetworkConsolidationAcceptance,
|
|
106
|
-
k,
|
|
107
|
-
A
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
console.log(result.toString());
|
|
111
|
-
```
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Taptree } from 'bitcoinjs-lib/src/types.js';
|
|
3
|
-
import { TransactionType } from '../enums/TransactionType.js';
|
|
4
|
-
import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
|
|
5
|
-
import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
|
|
6
|
-
import bitcoin, { Payment, Psbt } from 'bitcoinjs-lib';
|
|
7
|
-
import { VaultUTXOs } from '../processor/PsbtTransaction.js';
|
|
8
|
-
import { PsbtInput } from 'bip174/src/lib/interfaces.js';
|
|
9
|
-
export declare class TapUnwrapTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
|
|
10
|
-
private static readonly UNWRAP_SELECTOR;
|
|
11
|
-
type: TransactionType.WBTC_UNWRAP;
|
|
12
|
-
readonly amount: bigint;
|
|
13
|
-
protected readonly compiledTargetScript: Buffer;
|
|
14
|
-
protected readonly scriptTree: Taptree;
|
|
15
|
-
protected sighashTypes: number[];
|
|
16
|
-
protected readonly contractSecret: Buffer;
|
|
17
|
-
protected readonly vaultUTXOs: VaultUTXOs[];
|
|
18
|
-
private readonly wbtc;
|
|
19
|
-
private readonly calculatedSignHash;
|
|
20
|
-
constructor(parameters: IUnwrapParameters);
|
|
21
|
-
static generateBurnCalldata(amount: bigint): Buffer;
|
|
22
|
-
signPSBT(): Psbt;
|
|
23
|
-
mergeVaults(input: VaultUTXOs[]): void;
|
|
24
|
-
protected calculateNumEmptyWitnesses(vault: VaultUTXOs[]): bigint;
|
|
25
|
-
protected calculateNumSignatures(vault: VaultUTXOs[]): bigint;
|
|
26
|
-
protected calculateNumInputs(vault: VaultUTXOs[]): bigint;
|
|
27
|
-
protected internalPubKeyToXOnly(): Buffer;
|
|
28
|
-
protected generateTapDataForInput(pubkeys: Buffer[], minimumSignatures: number): {
|
|
29
|
-
internalPubkey: Buffer;
|
|
30
|
-
network: bitcoin.Network;
|
|
31
|
-
scriptTree: Taptree;
|
|
32
|
-
redeem: Payment;
|
|
33
|
-
};
|
|
34
|
-
protected getScriptSolution(input: PsbtInput): Buffer[];
|
|
35
|
-
protected internalBuildTransaction(transaction: Psbt): boolean;
|
|
36
|
-
private addVaultUTXO;
|
|
37
|
-
private addVaultInputs;
|
|
38
|
-
private calculateOutputLeftAmountFromVaults;
|
|
39
|
-
private getVaultTotalOutputAmount;
|
|
40
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Taptree } from 'bitcoinjs-lib/src/types.js';
|
|
3
|
-
import { TransactionType } from '../enums/TransactionType.js';
|
|
4
|
-
import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
|
|
5
|
-
import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
|
|
6
|
-
import { Psbt } from 'bitcoinjs-lib';
|
|
7
|
-
import { VaultUTXOs } from '../processor/PsbtTransaction.js';
|
|
8
|
-
export declare class UnwrapTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
|
|
9
|
-
static readonly MINIMUM_CONSOLIDATION_AMOUNT: bigint;
|
|
10
|
-
private static readonly UNWRAP_SELECTOR;
|
|
11
|
-
type: TransactionType.WBTC_UNWRAP;
|
|
12
|
-
readonly amount: bigint;
|
|
13
|
-
protected readonly compiledTargetScript: Buffer;
|
|
14
|
-
protected readonly scriptTree: Taptree;
|
|
15
|
-
protected sighashTypes: number[];
|
|
16
|
-
protected readonly contractSecret: Buffer;
|
|
17
|
-
protected readonly vaultUTXOs: VaultUTXOs[];
|
|
18
|
-
private readonly wbtc;
|
|
19
|
-
private readonly calculatedSignHash;
|
|
20
|
-
constructor(parameters: IUnwrapParameters);
|
|
21
|
-
static generateBurnCalldata(amount: bigint): Buffer;
|
|
22
|
-
signPSBT(): Psbt;
|
|
23
|
-
mergeVaults(input: VaultUTXOs[]): void;
|
|
24
|
-
protected internalBuildTransaction(transaction: Psbt): boolean;
|
|
25
|
-
protected generateMultiSignRedeemScript(publicKeys: string[], minimum: number): {
|
|
26
|
-
witnessUtxo: Buffer;
|
|
27
|
-
redeemScript: Buffer;
|
|
28
|
-
witnessScript: Buffer;
|
|
29
|
-
};
|
|
30
|
-
private addVaultUTXO;
|
|
31
|
-
private addVaultInputs;
|
|
32
|
-
private calculateOutputLeftAmountFromVaults;
|
|
33
|
-
private getVaultTotalOutputAmount;
|
|
34
|
-
}
|
package/build/Utils.d.ts
DELETED
|
File without changes
|
package/build/Utils.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Network } from 'bitcoinjs-lib';
|
|
3
|
-
import { Generator } from '../Generator.js';
|
|
4
|
-
export declare class DeploymentGeneratorV2 extends Generator {
|
|
5
|
-
static readonly DATA_CHUNK_SIZE: number;
|
|
6
|
-
constructor(senderPubKey: Buffer, contractSaltPubKey: Buffer, network?: Network);
|
|
7
|
-
compile(contractBytecode: Buffer, contractSalt: Buffer): {
|
|
8
|
-
compiled: Buffer;
|
|
9
|
-
chunks: Buffer[];
|
|
10
|
-
};
|
|
11
|
-
protected splitBufferIntoChunks(buffer: Buffer, chunkSize?: number): Array<Buffer[]>;
|
|
12
|
-
private getAsm;
|
|
13
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { crypto, networks, opcodes, script } from 'bitcoinjs-lib';
|
|
2
|
-
import { Generator } from '../Generator.js';
|
|
3
|
-
export class DeploymentGeneratorV2 extends Generator {
|
|
4
|
-
static DATA_CHUNK_SIZE = 80;
|
|
5
|
-
constructor(senderPubKey, contractSaltPubKey, network = networks.bitcoin) {
|
|
6
|
-
super(senderPubKey, contractSaltPubKey, network);
|
|
7
|
-
}
|
|
8
|
-
compile(contractBytecode, contractSalt) {
|
|
9
|
-
const dataChunks = this.splitBufferIntoChunks(contractBytecode);
|
|
10
|
-
const asm = this.getAsm(dataChunks, contractSalt);
|
|
11
|
-
const compiled = script.compile(asm);
|
|
12
|
-
const decompiled = script.decompile(compiled);
|
|
13
|
-
if (!decompiled) {
|
|
14
|
-
throw new Error('Failed to decompile script??');
|
|
15
|
-
}
|
|
16
|
-
return {
|
|
17
|
-
compiled,
|
|
18
|
-
chunks: dataChunks.flat(),
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
splitBufferIntoChunks(buffer, chunkSize = DeploymentGeneratorV2.DATA_CHUNK_SIZE) {
|
|
22
|
-
const chunks = [];
|
|
23
|
-
for (let i = 0; i < buffer.length; i += chunkSize) {
|
|
24
|
-
const dataLength = Math.min(chunkSize, buffer.length - i);
|
|
25
|
-
const buf2 = Buffer.alloc(dataLength);
|
|
26
|
-
for (let j = 0; j < dataLength; j++) {
|
|
27
|
-
buf2.writeUInt8(buffer[i + j], j);
|
|
28
|
-
}
|
|
29
|
-
chunks.push([buf2]);
|
|
30
|
-
}
|
|
31
|
-
return chunks;
|
|
32
|
-
}
|
|
33
|
-
getAsm(dataChunks, contractSalt) {
|
|
34
|
-
const partA = [
|
|
35
|
-
this.senderPubKey,
|
|
36
|
-
opcodes.OP_CHECKSIGVERIFY,
|
|
37
|
-
this.contractSaltPubKey,
|
|
38
|
-
opcodes.OP_CHECKSIGVERIFY,
|
|
39
|
-
opcodes.OP_HASH160,
|
|
40
|
-
crypto.hash160(this.senderPubKey),
|
|
41
|
-
opcodes.OP_EQUALVERIFY,
|
|
42
|
-
opcodes.OP_HASH256,
|
|
43
|
-
crypto.hash256(contractSalt),
|
|
44
|
-
opcodes.OP_EQUALVERIFY,
|
|
45
|
-
];
|
|
46
|
-
let i = 1;
|
|
47
|
-
for (const chunk of dataChunks) {
|
|
48
|
-
if (i % 80 === 0 && i !== 0) {
|
|
49
|
-
partA.push(...[opcodes.OP_SHA1, crypto.sha1(chunk[0]), opcodes.OP_EQUALVERIFY]);
|
|
50
|
-
}
|
|
51
|
-
partA.push(...[opcodes.OP_TOALTSTACK]);
|
|
52
|
-
i++;
|
|
53
|
-
}
|
|
54
|
-
partA.push(...[opcodes.OP_1]);
|
|
55
|
-
return partA.flat();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { Network } from 'bitcoinjs-lib';
|
|
3
|
-
import { Generator } from '../Generator.js';
|
|
4
|
-
export declare class CalldataGenerator extends Generator {
|
|
5
|
-
constructor(senderPubKey: Buffer, contractSaltPubKey: Buffer, network?: Network);
|
|
6
|
-
static getPubKeyAsBuffer(witnessKeys: Buffer[], network: Network): Buffer;
|
|
7
|
-
compile(calldata: Buffer, contractSecret: Buffer, vaultPublicKeys?: Buffer[], minimumSignatures?: number): Buffer;
|
|
8
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { crypto, networks, opcodes, script } from 'bitcoinjs-lib';
|
|
2
|
-
import { Compressor } from '../../bytecode/Compressor.js';
|
|
3
|
-
import { Generator } from '../Generator.js';
|
|
4
|
-
import { EcKeyPair } from '../../keypair/EcKeyPair.js';
|
|
5
|
-
export class CalldataGenerator extends Generator {
|
|
6
|
-
constructor(senderPubKey, contractSaltPubKey, network = networks.bitcoin) {
|
|
7
|
-
super(senderPubKey, contractSaltPubKey, network);
|
|
8
|
-
}
|
|
9
|
-
static getPubKeyAsBuffer(witnessKeys, network) {
|
|
10
|
-
let finalBuffer = Buffer.alloc(0);
|
|
11
|
-
for (let pubKey of witnessKeys) {
|
|
12
|
-
const key = EcKeyPair.fromPublicKey(pubKey, network);
|
|
13
|
-
if (!key.compressed) {
|
|
14
|
-
throw new Error('Public key must be compressed');
|
|
15
|
-
}
|
|
16
|
-
if (pubKey.byteLength !== 33) {
|
|
17
|
-
throw new Error(`Public key must be 33 bytes, got ${pubKey.byteLength} bytes.`);
|
|
18
|
-
}
|
|
19
|
-
finalBuffer = Buffer.concat([finalBuffer, pubKey]);
|
|
20
|
-
}
|
|
21
|
-
const compressed = Compressor.compress(finalBuffer);
|
|
22
|
-
if (compressed.byteLength >= finalBuffer.byteLength) {
|
|
23
|
-
return finalBuffer;
|
|
24
|
-
}
|
|
25
|
-
return compressed;
|
|
26
|
-
}
|
|
27
|
-
compile(calldata, contractSecret, vaultPublicKeys = [], minimumSignatures = 0) {
|
|
28
|
-
const dataChunks = this.splitBufferIntoChunks(calldata);
|
|
29
|
-
if (!dataChunks.length)
|
|
30
|
-
throw new Error('No data chunks found');
|
|
31
|
-
let compiledData = [
|
|
32
|
-
this.senderPubKey,
|
|
33
|
-
opcodes.OP_CHECKSIGVERIFY,
|
|
34
|
-
this.contractSaltPubKey,
|
|
35
|
-
opcodes.OP_CHECKSIGVERIFY,
|
|
36
|
-
opcodes.OP_HASH160,
|
|
37
|
-
crypto.hash160(this.senderPubKey),
|
|
38
|
-
opcodes.OP_EQUALVERIFY,
|
|
39
|
-
opcodes.OP_HASH160,
|
|
40
|
-
crypto.hash160(contractSecret),
|
|
41
|
-
opcodes.OP_EQUALVERIFY,
|
|
42
|
-
opcodes.OP_DEPTH,
|
|
43
|
-
opcodes.OP_1,
|
|
44
|
-
opcodes.OP_NUMEQUAL,
|
|
45
|
-
opcodes.OP_IF,
|
|
46
|
-
Generator.MAGIC,
|
|
47
|
-
];
|
|
48
|
-
if (vaultPublicKeys.length > 0) {
|
|
49
|
-
const pubKeyBuffer = CalldataGenerator.getPubKeyAsBuffer(vaultPublicKeys, this.network);
|
|
50
|
-
const pubKeyDataChunks = this.splitBufferIntoChunks(pubKeyBuffer);
|
|
51
|
-
compiledData = compiledData.concat(...[
|
|
52
|
-
opcodes.OP_0,
|
|
53
|
-
...pubKeyDataChunks,
|
|
54
|
-
]);
|
|
55
|
-
if (minimumSignatures) {
|
|
56
|
-
if (minimumSignatures > 255) {
|
|
57
|
-
throw new Error('Minimum signatures cannot exceed 255');
|
|
58
|
-
}
|
|
59
|
-
const minSigBuffer = Buffer.alloc(2);
|
|
60
|
-
minSigBuffer.writeUint16LE(minimumSignatures, 0);
|
|
61
|
-
compiledData = compiledData.concat(...[
|
|
62
|
-
opcodes.OP_1,
|
|
63
|
-
minSigBuffer,
|
|
64
|
-
]);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
throw new Error('Minimum signatures must be provided');
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
compiledData = compiledData.concat(...[opcodes.OP_1NEGATE, ...dataChunks, opcodes.OP_ELSE, opcodes.OP_1, opcodes.OP_ENDIF]);
|
|
71
|
-
const asm = compiledData.flat();
|
|
72
|
-
const compiled = script.compile(asm);
|
|
73
|
-
const decompiled = script.decompile(compiled);
|
|
74
|
-
if (!decompiled) {
|
|
75
|
-
throw new Error('Failed to decompile script??');
|
|
76
|
-
}
|
|
77
|
-
return compiled;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -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 = 'bcrt1qz98txrd6csz0ljhp0v2rw8846k0zgn57uul8c9';
|
|
2
|
-
export const POOL_ADDRESS = 'bcrt1qzwth3t3wdgy83tt9xegq7yww5dx0rhy3ezglg9';
|
|
3
|
-
export const WBTC_ADDRESS = 'bcrt1q99qtptumw027cw8w274tqzd564q66u537vn0lh';
|
|
4
|
-
export const MOTO_ADDRESS = 'bcrt1qwx9h2fvqlzx84t6jhxa424y7g2ynayt8p9rs38';
|
|
5
|
-
export const ROUTER_ADDRESS = 'bcrt1qelqwcguvwkgr90w6u5f2q0a7gqlnq4w8rl26ht';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const ContractMetadataManager: {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Address } from '@btc-vision/bsi-binary';
|
|
2
|
-
import { Network } from 'bitcoinjs-lib';
|
|
3
|
-
export declare abstract class ContractBase {
|
|
4
|
-
protected network: Network;
|
|
5
|
-
protected abstract readonly address: Address;
|
|
6
|
-
protected constructor(network?: Network);
|
|
7
|
-
static getAddress(network?: Network): string;
|
|
8
|
-
getAddress(): Address;
|
|
9
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { networks } from 'bitcoinjs-lib';
|
|
2
|
-
export class ContractBase {
|
|
3
|
-
network;
|
|
4
|
-
constructor(network = networks.bitcoin) {
|
|
5
|
-
this.network = network;
|
|
6
|
-
}
|
|
7
|
-
static getAddress(network = networks.bitcoin) {
|
|
8
|
-
throw new Error('Method not implemented.');
|
|
9
|
-
}
|
|
10
|
-
getAddress() {
|
|
11
|
-
return this.address;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Address } from '@btc-vision/bsi-binary';
|
|
2
|
-
import { Network } from 'bitcoinjs-lib';
|
|
3
|
-
export declare abstract class ContractBaseMetadata {
|
|
4
|
-
protected network: Network;
|
|
5
|
-
protected abstract readonly address: Address;
|
|
6
|
-
protected constructor(network?: Network);
|
|
7
|
-
static getAddress(network?: Network): Address;
|
|
8
|
-
getAddress(): Address;
|
|
9
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { networks } from 'bitcoinjs-lib';
|
|
2
|
-
export class ContractBaseMetadata {
|
|
3
|
-
network;
|
|
4
|
-
constructor(network = networks.bitcoin) {
|
|
5
|
-
this.network = network;
|
|
6
|
-
}
|
|
7
|
-
static getAddress(network = networks.bitcoin) {
|
|
8
|
-
throw new Error('Method not implemented.');
|
|
9
|
-
}
|
|
10
|
-
getAddress() {
|
|
11
|
-
return this.address;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
File without changes
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export class NetworkConverter {
|
|
2
|
-
static toBitcoinJSNetwork(network) {
|
|
3
|
-
switch (network) {
|
|
4
|
-
case OPNetNetwork.Mainnet:
|
|
5
|
-
return networks.bitcoin;
|
|
6
|
-
case OPNetNetwork.Testnet:
|
|
7
|
-
return networks.testnet;
|
|
8
|
-
case OPNetNetwork.Regtest:
|
|
9
|
-
return networks.regtest;
|
|
10
|
-
default:
|
|
11
|
-
throw new Error(`Invalid network: ${network}`);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/build/scripts/Regtest.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { BitcoinNetwork } from '@btc-vision/bsi-common';
|
|
2
|
-
export const Regtest = {
|
|
3
|
-
wallet: {
|
|
4
|
-
address: 'bcrt1qfqsr3m7vjxheghcvw4ks0fryqxfq8qzjf8fxes',
|
|
5
|
-
publicKey: '020373626d317ae8788ce3280b491068610d840c23ecb64c14075bbb9f670af52c',
|
|
6
|
-
privateKey: 'cRCiYAgCBrU7hSaJBRuPqKVYXQqM5CKXbMfWHb25X4FDAWJ8Ai92',
|
|
7
|
-
},
|
|
8
|
-
config: {
|
|
9
|
-
BITCOIND_NETWORK: BitcoinNetwork.Regtest,
|
|
10
|
-
BITCOIND_HOST: '51.81.67.34',
|
|
11
|
-
BITCOIND_PORT: 9242,
|
|
12
|
-
BITCOIND_USERNAME: 'HJSiowseujhs',
|
|
13
|
-
BITCOIND_PASSWORD: 'YHEFHSDJ23JOIhjjef2ied9u290efu2930u90U',
|
|
14
|
-
},
|
|
15
|
-
};
|
package/build/scripts/test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/build/scripts/test.js
DELETED
|
@@ -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 { UTXOManager } from '../utxo/UTXOManager.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 UTXOManager('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
|
-
(async () => {
|
|
34
|
-
await rpc.init(Regtest.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(wBtc.getAddress(), 5000000n);
|
|
46
|
-
const interactionParameters = {
|
|
47
|
-
from: wallet.p2wpkh,
|
|
48
|
-
to: wBtc.getAddress(),
|
|
49
|
-
utxos: utxos,
|
|
50
|
-
signer: wallet.keypair,
|
|
51
|
-
network: network,
|
|
52
|
-
feeRate: 150,
|
|
53
|
-
priorityFee: 50000n,
|
|
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}`);
|
|
68
|
-
if (!secondTxBroadcast) {
|
|
69
|
-
throw new Error('Could not broadcast second transaction');
|
|
70
|
-
}
|
|
71
|
-
if (shouldMineBlock) {
|
|
72
|
-
await mineBlock();
|
|
73
|
-
}
|
|
74
|
-
})();
|
package/build/signer/Regtest.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { networks } from 'bitcoinjs-lib';
|
|
2
|
-
export const Regtest = {
|
|
3
|
-
wallet: {
|
|
4
|
-
address: 'bcrt1qfqsr3m7vjxheghcvw4ks0fryqxfq8qzjf8fxes',
|
|
5
|
-
publicKey: '020373626d317ae8788ce3280b491068610d840c23ecb64c14075bbb9f670af52c',
|
|
6
|
-
privateKey: 'cRCiYAgCBrU7hSaJBRuPqKVYXQqM5CKXbMfWHb25X4FDAWJ8Ai92',
|
|
7
|
-
},
|
|
8
|
-
config: {
|
|
9
|
-
BITCOIND_NETWORK: networks.regtest,
|
|
10
|
-
BITCOIND_HOST: '51.81.67.34',
|
|
11
|
-
BITCOIND_PORT: 9242,
|
|
12
|
-
BITCOIND_USERNAME: 'HJSiowseujhs',
|
|
13
|
-
BITCOIND_PASSWORD: 'YHEFHSDJ23JOIhjjef2ied9u290efu2930u90U',
|
|
14
|
-
},
|
|
15
|
-
};
|
package/build/tests/Regtest.d.ts
DELETED