From b0952e4c3ce00851cf04e1bee2fe479420de69af Mon Sep 17 00:00:00 2001 From: Antonio Ventilii Date: Thu, 20 Jun 2024 11:55:24 -0300 Subject: [PATCH 1/3] feature: included ERC20 contract address among the data in tokens.ckerc20.json --- scripts/build.tokens.ckerc20.mjs | 6 ++++-- src/frontend/src/icp/types/env-token-ckerc20.ts | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/scripts/build.tokens.ckerc20.mjs b/scripts/build.tokens.ckerc20.mjs index 4bb0220f5..e2e0f148d 100755 --- a/scripts/build.tokens.ckerc20.mjs +++ b/scripts/build.tokens.ckerc20.mjs @@ -24,9 +24,10 @@ const orchestratorInfo = async ({ orchestratorId: canisterId }) => { const buildOrchestratorInfo = async (orchestratorId) => { const { managed_canisters } = await orchestratorInfo({ orchestratorId }); - const mapManagedCanisters = (acc, { ledger, index, ckerc20_token_symbol }) => { + const mapManagedCanisters = (acc, { ledger, index, ckerc20_token_symbol, erc20_contract }) => { const ledgerCanister = fromNullable(ledger); const indexCanister = fromNullable(index); + const erc20ContractAddress = erc20_contract.address; // Skip tokens without Ledger or Index (by definition, this can happen). if (isNullish(ledgerCanister) || isNullish(indexCanister)) { @@ -44,7 +45,8 @@ const buildOrchestratorInfo = async (orchestratorId) => { ...(acc[ckerc20_token_symbol] ?? []), { ledgerCanisterId: ledgerCanisterId.toText(), - indexCanisterId: indexCanisterId.toText() + indexCanisterId: indexCanisterId.toText(), + erc20ContractAddress } ] }; diff --git a/src/frontend/src/icp/types/env-token-ckerc20.ts b/src/frontend/src/icp/types/env-token-ckerc20.ts index 142681ae1..0ad6cbb64 100644 --- a/src/frontend/src/icp/types/env-token-ckerc20.ts +++ b/src/frontend/src/icp/types/env-token-ckerc20.ts @@ -2,7 +2,8 @@ import { z } from 'zod'; const envTokenData = z.object({ ledgerCanisterId: z.string(), - indexCanisterId: z.string() + indexCanisterId: z.string(), + erc20ContractAddress: z.string() }); const envTokenSymbol = z.string(); From 33a50c91baf06e2a62abf457504d7e271a23c97f Mon Sep 17 00:00:00 2001 From: Antonio Ventilii Date: Thu, 20 Jun 2024 13:37:43 -0300 Subject: [PATCH 2/3] feat: include custom type for contract address --- scripts/build.tokens.ckerc20.mjs | 6 ++++-- src/frontend/src/icp/types/env-token-ckerc20.ts | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts/build.tokens.ckerc20.mjs b/scripts/build.tokens.ckerc20.mjs index e2e0f148d..919d85330 100755 --- a/scripts/build.tokens.ckerc20.mjs +++ b/scripts/build.tokens.ckerc20.mjs @@ -24,10 +24,12 @@ const orchestratorInfo = async ({ orchestratorId: canisterId }) => { const buildOrchestratorInfo = async (orchestratorId) => { const { managed_canisters } = await orchestratorInfo({ orchestratorId }); - const mapManagedCanisters = (acc, { ledger, index, ckerc20_token_symbol, erc20_contract }) => { + const mapManagedCanisters = ( + acc, + { ledger, index, ckerc20_token_symbol, erc20_contract: { address: erc20ContractAddress } } + ) => { const ledgerCanister = fromNullable(ledger); const indexCanister = fromNullable(index); - const erc20ContractAddress = erc20_contract.address; // Skip tokens without Ledger or Index (by definition, this can happen). if (isNullish(ledgerCanister) || isNullish(indexCanister)) { diff --git a/src/frontend/src/icp/types/env-token-ckerc20.ts b/src/frontend/src/icp/types/env-token-ckerc20.ts index 0ad6cbb64..09b756d04 100644 --- a/src/frontend/src/icp/types/env-token-ckerc20.ts +++ b/src/frontend/src/icp/types/env-token-ckerc20.ts @@ -1,9 +1,12 @@ +import { isEthAddress } from '$lib/utils/account.utils'; import { z } from 'zod'; +const envErc20ContractAddress = z.custom(isEthAddress, 'Invalid ERC20 Contract Address'); + const envTokenData = z.object({ ledgerCanisterId: z.string(), indexCanisterId: z.string(), - erc20ContractAddress: z.string() + erc20ContractAddress: envErc20ContractAddress }); const envTokenSymbol = z.string(); From 3e7151bf6085d02ee713319695a22103c13b5070 Mon Sep 17 00:00:00 2001 From: Antonio Ventilii Date: Thu, 20 Jun 2024 13:41:50 -0300 Subject: [PATCH 3/3] fix: update JSON file for ERC20 token --- src/frontend/src/env/tokens.ckerc20.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/src/env/tokens.ckerc20.json b/src/frontend/src/env/tokens.ckerc20.json index cdf72fd82..92db2d343 100644 --- a/src/frontend/src/env/tokens.ckerc20.json +++ b/src/frontend/src/env/tokens.ckerc20.json @@ -1 +1 @@ -{"production":{"ckLINK":{"ledgerCanisterId":"g4tto-rqaaa-aaaar-qageq-cai","indexCanisterId":"gvqys-hyaaa-aaaar-qagfa-cai"},"ckUSDC":{"ledgerCanisterId":"xevnm-gaaaa-aaaar-qafnq-cai","indexCanisterId":"xrs4b-hiaaa-aaaar-qafoa-cai"}},"staging":{"ckSepoliaUSDC":{"ledgerCanisterId":"yfumr-cyaaa-aaaar-qaela-cai","indexCanisterId":"ycvkf-paaaa-aaaar-qaelq-cai"},"ckSepoliaPEPE":{"ledgerCanisterId":"hw4ru-taaaa-aaaar-qagdq-cai","indexCanisterId":"g3sv2-4iaaa-aaaar-qagea-cai"},"ckSepoliaLINK":{"ledgerCanisterId":"r52mc-qaaaa-aaaar-qafzq-cai","indexCanisterId":"ri55p-riaaa-aaaar-qaf2a-cai"}}} \ No newline at end of file +{"production":{"ckLINK":{"ledgerCanisterId":"g4tto-rqaaa-aaaar-qageq-cai","indexCanisterId":"gvqys-hyaaa-aaaar-qagfa-cai","erc20ContractAddress":"0x514910771AF9Ca656af840dff83E8264EcF986CA"},"ckUSDC":{"ledgerCanisterId":"xevnm-gaaaa-aaaar-qafnq-cai","indexCanisterId":"xrs4b-hiaaa-aaaar-qafoa-cai","erc20ContractAddress":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}},"staging":{"ckSepoliaUSDC":{"ledgerCanisterId":"yfumr-cyaaa-aaaar-qaela-cai","indexCanisterId":"ycvkf-paaaa-aaaar-qaelq-cai","erc20ContractAddress":"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238"},"ckSepoliaPEPE":{"ledgerCanisterId":"hw4ru-taaaa-aaaar-qagdq-cai","indexCanisterId":"g3sv2-4iaaa-aaaar-qagea-cai","erc20ContractAddress":"0x560eF9F39E4B08f9693987cad307f6FBfd97B2F6"},"ckSepoliaLINK":{"ledgerCanisterId":"r52mc-qaaaa-aaaar-qafzq-cai","indexCanisterId":"ri55p-riaaa-aaaar-qaf2a-cai","erc20ContractAddress":"0x779877A7B0D9E8603169DdbD7836e478b4624789"}}} \ No newline at end of file