Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 6 additions & 25 deletions web/packages/api/src/toEthereumSnowbridgeV2.ts
Original file line number Diff line number Diff line change
Expand Up @@ -405,14 +405,11 @@ export const estimateFeesFromParachains = async (
let localExecutionFeeDOT = 0n
let localDeliveryFeeDOT = 0n
let assetHubExecutionFeeDOT = 0n
let returnToSenderExecutionFeeDOT = 0n
let returnToSenderDeliveryFeeDOT = 0n
let bridgeHubDeliveryFeeDOT = 0n
let snowbridgeDeliveryFeeDOT = 0n

let localExecutionFeeInNative: bigint | undefined = undefined
let localDeliveryFeeInNative: bigint | undefined = undefined
let returnToSenderExecutionFeeNative: bigint | undefined = undefined
if (sourceParachain.features.hasDotBalance) {
localExecutionFeeDOT = padFeeByPercentage(
await sourceParachainImpl.calculateXcmFee(deliveryXcm.localXcm, DOT_LOCATION),
Expand All @@ -425,10 +422,6 @@ export const estimateFeesFromParachains = async (
),
feePadPercentage,
)
returnToSenderExecutionFeeDOT = padFeeByPercentage(
await sourceParachainImpl.calculateXcmFee(deliveryXcm.returnToSenderXcm, DOT_LOCATION),
feePadPercentage,
)
} else {
localExecutionFeeInNative = padFeeByPercentage(
await sourceParachainImpl.calculateXcmFee(deliveryXcm.localXcm, HERE_LOCATION),
Expand All @@ -441,16 +434,8 @@ export const estimateFeesFromParachains = async (
),
feePadPercentage,
)
returnToSenderExecutionFeeNative = padFeeByPercentage(
await sourceParachainImpl.calculateXcmFee(deliveryXcm.returnToSenderXcm, HERE_LOCATION),
feePadPercentage,
)
}

returnToSenderDeliveryFeeDOT = await assetHubImpl.calculateDeliveryFeeInDOT(
sourceParaId,
deliveryXcm.returnToSenderXcm,
)
assetHubExecutionFeeDOT = padFeeByPercentage(
await assetHubImpl.calculateXcmFee(deliveryXcm.forwardXcmToAH, DOT_LOCATION),
feePadPercentage,
Expand All @@ -471,8 +456,6 @@ export const estimateFeesFromParachains = async (
localDeliveryFeeDOT +
snowbridgeDeliveryFeeDOT +
assetHubExecutionFeeDOT +
returnToSenderExecutionFeeDOT +
returnToSenderDeliveryFeeDOT +
bridgeHubDeliveryFeeDOT

let ethereumExecutionFee = await estimateEthereumExecutionFee(
Expand Down Expand Up @@ -524,9 +507,6 @@ export const estimateFeesFromParachains = async (
if (localDeliveryFeeInNative) {
totalFeeInNative += localDeliveryFeeInNative
}
if (returnToSenderExecutionFeeNative) {
totalFeeInNative += returnToSenderExecutionFeeNative
}
} else {
throw new Error("Unsupported fee token location")
}
Expand All @@ -538,13 +518,13 @@ export const estimateFeesFromParachains = async (
snowbridgeDeliveryFeeDOT,
assetHubExecutionFeeDOT,
bridgeHubDeliveryFeeDOT,
returnToSenderDeliveryFeeDOT,
returnToSenderExecutionFeeDOT,
returnToSenderDeliveryFeeDOT: 0n,
returnToSenderExecutionFeeDOT: 0n,
totalFeeInDot,
ethereumExecutionFee,
feeLocation,
assetHubExecutionFeeNative,
returnToSenderExecutionFeeNative,
returnToSenderExecutionFeeNative: 0n,
ethereumExecutionFeeInNative,
localExecutionFeeInNative,
localDeliveryFeeInNative,
Expand Down Expand Up @@ -943,11 +923,12 @@ export async function buildContractCallHex(context: Context, contractCall: Contr

export const mockDeliveryFee: DeliveryFee = {
localExecutionFeeDOT: 1n,
localDeliveryFeeDOT: 1n,
snowbridgeDeliveryFeeDOT: 1n,
assetHubExecutionFeeDOT: 1n,
bridgeHubDeliveryFeeDOT: 1n,
returnToSenderDeliveryFeeDOT: 1n,
returnToSenderExecutionFeeDOT: 1n,
returnToSenderDeliveryFeeDOT: 0n,
returnToSenderExecutionFeeDOT: 0n,
totalFeeInDot: 10n,
ethereumExecutionFee: 1n,
}
Expand Down
16 changes: 2 additions & 14 deletions web/packages/api/src/transfers/toEthereum/erc20FromParachain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { DOT_LOCATION, isRelaychainLocation, isParachainNative } from "../../xcm
import { buildExportXcm } from "../../xcmbuilders/toEthereum/erc20FromAH"
import {
buildResultXcmAssetHubERC20TransferFromParachain,
buildParachainERC20ReceivedXcmOnDestination,
buildTransferXcmFromParachain,
} from "../../xcmbuilders/toEthereum/erc20FromParachain"
import { buildTransferXcmFromParachainWithDOTAsFee } from "../../xcmbuilders/toEthereum/erc20FromParachainWithDotAsFee"
Expand Down Expand Up @@ -56,7 +55,7 @@ export class ERC20FromParachain implements TransferInterface {
const sourceParachainImpl = await paraImplementation(parachain)
const { sourceAssetMetadata } = resolveInputs(registry, tokenAddress, source.sourceParaId)

let forwardXcmToAH: any, forwardedXcmToBH: any, returnToSenderXcm: any, localXcm: any
let forwardXcmToAH: any, forwardedXcmToBH: any, localXcm: any

forwardXcmToAH = buildResultXcmAssetHubERC20TransferFromParachain(
assetHub.registry,
Expand All @@ -74,18 +73,8 @@ export class ERC20FromParachain implements TransferInterface {
DOT_LOCATION,
)

returnToSenderXcm = buildParachainERC20ReceivedXcmOnDestination(
parachain.registry,
registry.ethChainId,
"0x0000000000000000000000000000000000000000",
1n,
1n,
"0x0000000000000000000000000000000000000000000000000000000000000000",
"0x0000000000000000000000000000000000000000000000000000000000000000",
)

localXcm = buildTransferXcmFromParachain(
assetHub.registry,
parachain.registry,
registry.environment,
registry.ethChainId,
registry.assetHubParaId,
Expand Down Expand Up @@ -118,7 +107,6 @@ export class ERC20FromParachain implements TransferInterface {
localXcm,
forwardXcmToAH,
forwardedXcmToBH,
returnToSenderXcm,
},
options,
)
Expand Down
100 changes: 1 addition & 99 deletions web/packages/api/src/xcmbuilders/toEthereum/erc20FromParachain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,64 +14,6 @@ import {
import { Asset } from "@snowbridge/base-types"
import { DeliveryFee } from "../../toEthereum_v2"

export function buildParachainERC20ReceivedXcmOnDestination(
registry: Registry,
ethChainId: number,
tokenAddress: string,
transferAmount: bigint,
feeInDot: bigint,
beneficiary: string,
topic: string,
) {
let beneficiaryLocation = accountToLocation(beneficiary)
return registry.createType("XcmVersionedXcm", {
v5: [
{
reserveAssetDeposited: [
{
id: DOT_LOCATION,
fun: {
Fungible: feeInDot,
},
},
{
id: erc20Location(ethChainId, tokenAddress),
fun: {
Fungible: transferAmount,
},
},
],
},
{ clearOrigin: null },
{
buyExecution: {
fees: {
id: DOT_LOCATION,
fun: {
Fungible: feeInDot,
},
},
weightLimit: "Unlimited",
},
},
{
depositAsset: {
assets: {
wild: {
allCounted: 2,
},
},
beneficiary: {
parents: 0,
interior: { x1: [beneficiaryLocation] },
},
},
},
{ setTopic: topic },
],
})
}

function buildAssetHubXcmFromParachain(
ethChainId: number,
sourceAccount: string,
Expand Down Expand Up @@ -100,44 +42,6 @@ function buildAssetHubXcmFromParachain(
throw Error(`Could not parse source address ${sourceAccount}`)
}
return [
// Error Handling, return everything to sender on source parachain
{
setAppendix: [
{
depositReserveAsset: {
assets: {
wild: "All",
},
dest: { parents: 1, interior: { x1: [{ parachain: sourceParachainId }] } },
xcm: [
{
buyExecution: {
fees: {
id: feeAssetId,
fun: {
fungible: destinationFee,
},
},
weightLimit: "Unlimited",
},
},
{
depositAsset: {
assets: {
wild: "All",
},
beneficiary: {
parents: 0,
interior: { x1: [sourceAccountLocation] },
},
},
},
{ setTopic: topic },
],
},
},
],
},
// Initiate the bridged transfer
{
initiateReserveWithdraw: {
Expand Down Expand Up @@ -288,9 +192,7 @@ export function buildTransferXcmFromParachain(
let tokenLocation = erc20Location(ethChainId, asset.token)

let localDOTFeeAmount: bigint =
(fee.localExecutionFeeDOT ?? 0n) +
(fee.localDeliveryFeeDOT ?? 0n) +
fee.returnToSenderExecutionFeeDOT
(fee.localExecutionFeeDOT ?? 0n) + (fee.localDeliveryFeeDOT ?? 0n)
let totalDOTFeeAmount: bigint = fee.totalFeeInDot!
let remoteEtherFeeAmount: bigint = fee.ethereumExecutionFee!

Expand Down
3 changes: 2 additions & 1 deletion web/packages/operations/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"transferEthFromHydrationV2": "npx ts-node src/transfer_from_p2e_v2.ts 2034 ETH 150000000000000",
"transferEthFromAcalaV2": "npx ts-node src/transfer_from_p2e_v2.ts 2000 ETH 150000000000000",
"transferWndToEthereumV2": "npx ts-node src/transfer_from_p2e_v2.ts 1000 WND 2000000000",
"transferEtherFromAHV2": "npx ts-node src/transfer_from_p2e_v2.ts 1000 Eth 1000000",
"transferEtherFromAHV2": "npx ts-node src/transfer_from_p2e_v2.ts 1000 Eth 1000000000000",
"transferWethFromAHV2": "npx ts-node src/transfer_from_p2e_v2.ts 1000 WETH 1000000",
"transferRocToEthereumV2": "npx ts-node src/transfer_from_p2e_v2.ts 1000 Roc 2000000000",
"transferPenpalTokenFromAHToEthereumV2": "npx ts-node src/transfer_from_p2e_v2.ts 1000 pal 2000000000",
Expand All @@ -65,6 +65,7 @@
"transferPenpalTokenToEthereumV2WithNativeFee": "npx ts-node src/transfer_from_p2e_v2_with_fee.ts 2000 pal 1 2000000000",
"transferTRACToNeuroWeb": "npx ts-node src/transfer_from_e2p.ts 2043 TRACE 3000000000000000",
"transferTRACFromNeuroWebtoEthereum": "npx ts-node src/transfer_from_p2e.ts 2043 TRACE 3000000000000000",
"transferEtherFromBifrostV2": "npx ts-node src/transfer_from_p2e_v2.ts 2030 ETH 500000000000000",
"wrapSnowTRAC": "npx ts-node src/wrap_snow_trac.ts",
"unwrapSnowTRAC": "npx ts-node src/unwrap_snow_trac.ts",
"transferEtherToAHV2": "npx ts-node src/transfer_from_e2p_v2.ts 1000 Eth 100000000000000",
Expand Down