Skip to content

Commit

Permalink
Merge pull request #282 from Polkadex-Substrate/feat/thea-enhancement…
Browse files Browse the repository at this point in the history
…s-ii

Non native tokens transfer b/w Astar & Polkadex
  • Loading branch information
nuel77 authored Jun 7, 2024
2 parents 1be8c90 + 8538be3 commit f2488c2
Show file tree
Hide file tree
Showing 4 changed files with 316 additions and 3 deletions.
5 changes: 5 additions & 0 deletions .changeset/stupid-dryers-invite.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@polkadex/thea": minor
---

Added support for more tokens between Astar and Polkadex
35 changes: 35 additions & 0 deletions packages/thea/src/config/substrate/chains.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,41 @@ export const astar = new Parachain({
asset: astr,
decimals: 18,
},
{
asset: dot,
decimals: 10,
id: "340282366920938463463374607431768211455",
},
{
asset: glmr,
decimals: 18,
id: "18446744073709551619",
},
{
asset: unq,
decimals: 18,
id: "18446744073709551631",
},
{
asset: pha,
decimals: 12,
id: "18446744073709551622",
},
{
asset: ibtc,
decimals: 8,
id: "18446744073709551620",
},
{
asset: bnc,
decimals: 12,
id: "18446744073709551623",
},
{
asset: vdot,
decimals: 10,
id: "18446744073709551624",
},
],
ecosystem: Ecosystem.Polkadot,
genesisHash: ASTAR_GENESIS,
Expand Down
123 changes: 121 additions & 2 deletions packages/thea/src/config/substrate/config/astar.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { AssetConfig, ChainConfig } from "@moonbeam-network/xcm-config";
import { BalanceBuilder } from "@moonbeam-network/xcm-builder";
import { BalanceBuilder, AssetMinBuilder } from "@moonbeam-network/xcm-builder";

import { ExtrinsicBuilderV2 } from "../builders";
import { astar, polkadex } from "../chains";
import { astr } from "../assets";
import { astr, dot, glmr, unq, pha, bnc, vdot, ibtc } from "../assets";

const toPolkadex: AssetConfig[] = [
new AssetConfig({
Expand All @@ -21,6 +21,125 @@ const toPolkadex: AssetConfig[] = [
balance: BalanceBuilder().substrate().system().account(),
},
}),

new AssetConfig({
asset: dot,
balance: BalanceBuilder().substrate().assets().account(),
destination: polkadex,
destinationFee: {
amount: 0.1,
asset: dot,
balance: BalanceBuilder().substrate().system().account(),
},
extrinsic: ExtrinsicBuilderV2().xTokens().transfer().X3(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: astr,
balance: BalanceBuilder().substrate().system().account(),
},
}),

new AssetConfig({
asset: glmr,
balance: BalanceBuilder().substrate().assets().account(),
destination: polkadex,
destinationFee: {
amount: 0.1,
asset: glmr,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2().xTokens().transfer().X3(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: astr,
balance: BalanceBuilder().substrate().system().account(),
},
}),

new AssetConfig({
asset: unq,
balance: BalanceBuilder().substrate().assets().account(),
destination: polkadex,
destinationFee: {
amount: 0.1,
asset: unq,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2().xTokens().transfer().X3(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: astr,
balance: BalanceBuilder().substrate().system().account(),
},
}),

new AssetConfig({
asset: pha,
balance: BalanceBuilder().substrate().assets().account(),
destination: polkadex,
destinationFee: {
amount: 0.2,
asset: pha,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2().xTokens().transfer().X3(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: astr,
balance: BalanceBuilder().substrate().system().account(),
},
}),

new AssetConfig({
asset: bnc,
balance: BalanceBuilder().substrate().assets().account(),
destination: polkadex,
destinationFee: {
amount: 0.0006,
asset: bnc,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2().xTokens().transfer().X3(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: astr,
balance: BalanceBuilder().substrate().system().account(),
},
}),

new AssetConfig({
asset: vdot,
balance: BalanceBuilder().substrate().assets().account(),
destination: polkadex,
destinationFee: {
amount: 0.00000007,
asset: vdot,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2().xTokens().transfer().X3(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: astr,
balance: BalanceBuilder().substrate().system().account(),
},
}),

new AssetConfig({
asset: ibtc,
balance: BalanceBuilder().substrate().assets().account(),
destination: polkadex,
destinationFee: {
amount: 0.000003,
asset: ibtc,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2().xTokens().transfer().X3(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: astr,
balance: BalanceBuilder().substrate().system().account(),
},
}),
];

export const astarConfig = new ChainConfig({
Expand Down
156 changes: 155 additions & 1 deletion packages/thea/src/config/substrate/config/polkadex.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,160 @@ const toAstar: AssetConfig[] = [
xcmDeliveryFeeAmount,
},
}),

new AssetConfig({
asset: dot,
balance: BalanceBuilder().substrate().assets().account(),
destination: astar,
destinationFee: {
amount: 0.05,
asset: dot,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2()
.theaExecuter()
.parachainWithdraw()
.X2()
.sufficient(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: pdex,
balance: BalanceBuilder().substrate().system().account(),
xcmDeliveryFeeAmount,
},
}),

new AssetConfig({
asset: glmr,
balance: BalanceBuilder().substrate().assets().account(),
destination: astar,
destinationFee: {
amount: 0.0035,
asset: glmr,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2()
.theaExecuter()
.parachainWithdraw()
.X2()
.sufficient(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: pdex,
balance: BalanceBuilder().substrate().system().account(),
xcmDeliveryFeeAmount,
},
}),

new AssetConfig({
asset: unq,
balance: BalanceBuilder().substrate().assets().account(),
destination: astar,
destinationFee: {
amount: 0.01,
asset: unq,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2()
.theaExecuter()
.parachainWithdraw()
.X2()
.sufficient(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: pdex,
balance: BalanceBuilder().substrate().system().account(),
xcmDeliveryFeeAmount,
},
}),

new AssetConfig({
asset: pha,
balance: BalanceBuilder().substrate().assets().account(),
destination: astar,
destinationFee: {
amount: 0.065,
asset: pha,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2()
.theaExecuter()
.parachainWithdraw()
.X2()
.sufficient(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: pdex,
balance: BalanceBuilder().substrate().system().account(),
xcmDeliveryFeeAmount,
},
}),

new AssetConfig({
asset: bnc,
balance: BalanceBuilder().substrate().assets().account(),
destination: astar,
destinationFee: {
amount: 0.001,
asset: bnc,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2()
.theaExecuter()
.parachainWithdraw()
.X2()
.sufficient(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: pdex,
balance: BalanceBuilder().substrate().system().account(),
xcmDeliveryFeeAmount,
},
}),

new AssetConfig({
asset: vdot,
balance: BalanceBuilder().substrate().assets().account(),
destination: astar,
destinationFee: {
amount: 0.0000085,
asset: vdot,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2()
.theaExecuter()
.parachainWithdraw()
.X2()
.sufficient(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: pdex,
balance: BalanceBuilder().substrate().system().account(),
xcmDeliveryFeeAmount,
},
}),

new AssetConfig({
asset: ibtc,
balance: BalanceBuilder().substrate().assets().account(),
destination: astar,
destinationFee: {
amount: 0.0000063,
asset: ibtc,
balance: BalanceBuilder().substrate().assets().account(),
},
extrinsic: ExtrinsicBuilderV2()
.theaExecuter()
.parachainWithdraw()
.X2()
.sufficient(),
min: AssetMinBuilder().assets().asset(),
fee: {
asset: pdex,
balance: BalanceBuilder().substrate().system().account(),
xcmDeliveryFeeAmount,
},
}),
];

const toPhala: AssetConfig[] = [
Expand All @@ -176,7 +330,7 @@ const toPhala: AssetConfig[] = [
balance: BalanceBuilder().substrate().assets().account(),
destination: phala,
destinationFee: {
amount: 0.064296,
amount: 0.065,
asset: pha,
balance: BalanceBuilder().substrate().system().account(),
},
Expand Down

0 comments on commit f2488c2

Please sign in to comment.