From d49ae1e481ca04a316dca485de0c5ff3dfd25c4b Mon Sep 17 00:00:00 2001 From: c4605 Date: Fri, 10 Jan 2025 13:31:53 +0100 Subject: [PATCH] feat: improve getBitcoinHardLinkageAddress --- src/bitcoinUtils/btcAddresses.ts | 34 +++++++++++-------- src/xlinkSdkUtils/bridgeFromBitcoin.ts | 2 +- .../estimateBridgeTransactionFromBitcoin.ts | 2 +- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/bitcoinUtils/btcAddresses.ts b/src/bitcoinUtils/btcAddresses.ts index c3a96c3..90fe2ff 100644 --- a/src/bitcoinUtils/btcAddresses.ts +++ b/src/bitcoinUtils/btcAddresses.ts @@ -51,26 +51,30 @@ export const getBitcoinHardLinkageAddress = ( | KnownChainId.BRC20Chain | KnownChainId.RunesChain, // eslint-disable-next-line @typescript-eslint/no-unused-vars - toChain: - | KnownChainId.BitcoinChain - | KnownChainId.BRC20Chain - | KnownChainId.RunesChain, + toChain: KnownChainId.KnownChain, ): undefined | BitcoinAddress => { const pubKey = "1ab1c25de20e4f186a405abb7430e05439269c53d99938741961ee9db83ee58d" - const btcNetwork = - fromChain === KnownChainId.Bitcoin.Mainnet || - fromChain === KnownChainId.BRC20.Mainnet || - fromChain === KnownChainId.Runes.Mainnet - ? NETWORK - : fromChain === KnownChainId.Bitcoin.Testnet || - fromChain === KnownChainId.BRC20.Testnet || - fromChain === KnownChainId.Runes.Testnet - ? TEST_NETWORK - : (checkNever(fromChain), NETWORK) + let bitcoinNetwork: undefined | typeof NETWORK | typeof TEST_NETWORK + switch (fromChain) { + case KnownChainId.Bitcoin.Mainnet: + case KnownChainId.BRC20.Mainnet: + case KnownChainId.Runes.Mainnet: + bitcoinNetwork = NETWORK + break + case KnownChainId.Bitcoin.Testnet: + case KnownChainId.BRC20.Testnet: + case KnownChainId.Runes.Testnet: + bitcoinNetwork = TEST_NETWORK + break + default: + checkNever(fromChain) + } - const payment = p2tr(pubKey, undefined, btcNetwork) + if (bitcoinNetwork == null) return undefined + + const payment = p2tr(pubKey, undefined, bitcoinNetwork) return { address: payment.address!, diff --git a/src/xlinkSdkUtils/bridgeFromBitcoin.ts b/src/xlinkSdkUtils/bridgeFromBitcoin.ts index d825b41..ab679be 100644 --- a/src/xlinkSdkUtils/bridgeFromBitcoin.ts +++ b/src/xlinkSdkUtils/bridgeFromBitcoin.ts @@ -387,7 +387,7 @@ async function broadcastBitcoinTransaction( orderData: createdOrder.data, pegInAddress, hardLinkageOutput: info.withHardLinkageOutput - ? await getBitcoinHardLinkageAddress(info.fromChain, info.toChain as any) + ? await getBitcoinHardLinkageAddress(info.fromChain, info.toChain) : null, }) diff --git a/src/xlinkSdkUtils/estimateBridgeTransactionFromBitcoin.ts b/src/xlinkSdkUtils/estimateBridgeTransactionFromBitcoin.ts index 0621bfa..fb248c7 100644 --- a/src/xlinkSdkUtils/estimateBridgeTransactionFromBitcoin.ts +++ b/src/xlinkSdkUtils/estimateBridgeTransactionFromBitcoin.ts @@ -290,7 +290,7 @@ async function estimateBitcoinTransaction( pegInAddress, hardLinkageOutput: await getBitcoinHardLinkageAddress( info.fromChain, - info.toChain as any, + info.toChain, ), })