From 8c3c54e50cc6646832777aa9c5d8445249b01cce Mon Sep 17 00:00:00 2001 From: Giovanni Sanchez <108043524+sisyphusSmiling@users.noreply.github.com> Date: Fri, 25 Oct 2024 19:47:49 -0600 Subject: [PATCH] fix batch bridge fee calculation, adding base fee for each NFT --- cadence/transactions/bridge/nft/batch_bridge_nft_from_evm.cdc | 2 +- .../bridge/nft/batch_bridge_nft_to_any_cadence_address.cdc | 2 +- .../bridge/nft/batch_bridge_nft_to_any_evm_address.cdc | 2 +- cadence/transactions/bridge/nft/batch_bridge_nft_to_evm.cdc | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cadence/transactions/bridge/nft/batch_bridge_nft_from_evm.cdc b/cadence/transactions/bridge/nft/batch_bridge_nft_from_evm.cdc index f8796423..f6705b18 100644 --- a/cadence/transactions/bridge/nft/batch_bridge_nft_from_evm.cdc +++ b/cadence/transactions/bridge/nft/batch_bridge_nft_from_evm.cdc @@ -67,7 +67,7 @@ transaction(nftIdentifier: String, ids: [UInt256]) { // Set a cap on the withdrawable bridge fee var approxFee = FlowEVMBridgeUtils.calculateBridgeFee( bytes: 200_000 // 200 kB as upper bound on movable storage used in a single transaction - ) + ) + (FlowEVMBridgeConfig.baseFee * UFix64(ids.length)) // Issue and store bridge-dedicated Provider Capability in storage if necessary if signer.storage.type(at: FlowEVMBridgeConfig.providerCapabilityStoragePath) == nil { let providerCap = signer.capabilities.storage.issue( diff --git a/cadence/transactions/bridge/nft/batch_bridge_nft_to_any_cadence_address.cdc b/cadence/transactions/bridge/nft/batch_bridge_nft_to_any_cadence_address.cdc index c0f40793..8e52a6a8 100644 --- a/cadence/transactions/bridge/nft/batch_bridge_nft_to_any_cadence_address.cdc +++ b/cadence/transactions/bridge/nft/batch_bridge_nft_to_any_cadence_address.cdc @@ -70,7 +70,7 @@ transaction(nftIdentifier: String, ids: [UInt256], recipient: Address) { // Set a cap on the withdrawable bridge fee var approxFee = FlowEVMBridgeUtils.calculateBridgeFee( bytes: 200_000 // 200 kB as upper bound on movable storage used in a single transaction - ) + ) + (FlowEVMBridgeConfig.baseFee * UFix64(ids.length)) // Issue and store bridge-dedicated Provider Capability in storage if necessary if signer.storage.type(at: FlowEVMBridgeConfig.providerCapabilityStoragePath) == nil { let providerCap = signer.capabilities.storage.issue( diff --git a/cadence/transactions/bridge/nft/batch_bridge_nft_to_any_evm_address.cdc b/cadence/transactions/bridge/nft/batch_bridge_nft_to_any_evm_address.cdc index eadda816..92afd18a 100644 --- a/cadence/transactions/bridge/nft/batch_bridge_nft_to_any_evm_address.cdc +++ b/cadence/transactions/bridge/nft/batch_bridge_nft_to_any_evm_address.cdc @@ -63,7 +63,7 @@ transaction(nftIdentifier: String, ids: [UInt64], recipient: String) { // Withdraw the requested NFT & set a cap on the withdrawable bridge fee var approxFee = FlowEVMBridgeUtils.calculateBridgeFee( bytes: 200_000 // 200 kB as upper bound on movable storage used in a single transaction - ) + ) + (FlowEVMBridgeConfig.baseFee * UFix64(ids.length)) // Determine if the NFT requires onboarding - this impacts the fee required self.requiresOnboarding = FlowEVMBridge.typeRequiresOnboarding(self.nftType) ?? panic("Bridge does not support this asset type") diff --git a/cadence/transactions/bridge/nft/batch_bridge_nft_to_evm.cdc b/cadence/transactions/bridge/nft/batch_bridge_nft_to_evm.cdc index a56ae2f5..4224965e 100644 --- a/cadence/transactions/bridge/nft/batch_bridge_nft_to_evm.cdc +++ b/cadence/transactions/bridge/nft/batch_bridge_nft_to_evm.cdc @@ -62,7 +62,7 @@ transaction(nftIdentifier: String, ids: [UInt64]) { // Withdraw the requested NFT & set a cap on the withdrawable bridge fee var approxFee = FlowEVMBridgeUtils.calculateBridgeFee( bytes: 200_000 // 200 kB as upper bound on movable storage used in a single transaction - ) + ) + (FlowEVMBridgeConfig.baseFee * UFix64(ids.length)) // Determine if the NFT requires onboarding - this impacts the fee required self.requiresOnboarding = FlowEVMBridge.typeRequiresOnboarding(self.nftType) ?? panic("Bridge does not support this asset type") @@ -70,6 +70,7 @@ transaction(nftIdentifier: String, ids: [UInt64]) { if self.requiresOnboarding { approxFee = approxFee + FlowEVMBridgeConfig.onboardFee } + log(approxFee) /* --- Configure a ScopedFTProvider --- */ //