From 2c04e6f0dee5ea02879dc06fd76c82f3c6ca2b1b Mon Sep 17 00:00:00 2001 From: hueso Date: Thu, 18 Jul 2024 19:23:53 -0300 Subject: [PATCH] add Rootstock testnet --- src/assets/rootstock.svg | 24 +++++++++++++++++++ src/blockchain/addresses.ts | 5 ++++ src/blockchain/events.ts | 15 ++++++++++++ src/components/SearchComponent.vue | 2 ++ src/components/TopBar/TopBar.vue | 38 ++++++++++++++++++++++++++++++ src/model/NetworkEnum.ts | 1 + src/store/ether.ts | 5 ++++ 7 files changed, 90 insertions(+) create mode 100644 src/assets/rootstock.svg diff --git a/src/assets/rootstock.svg b/src/assets/rootstock.svg new file mode 100644 index 0000000..bee9d1f --- /dev/null +++ b/src/assets/rootstock.svg @@ -0,0 +1,24 @@ + + + + + + + + + diff --git a/src/blockchain/addresses.ts b/src/blockchain/addresses.ts index 661b267..556797a 100644 --- a/src/blockchain/addresses.ts +++ b/src/blockchain/addresses.ts @@ -7,6 +7,7 @@ const getTokenAddress = (network?: NetworkEnum): string => { const possibleTokenAddresses: { [key: string]: string } = { Ethereum: "0x4A2886EAEc931e04297ed336Cc55c4eb7C75BA00", Polygon: "0xC86042E9F2977C62Da8c9dDF7F9c40fde4796A29", + Rootstock: "0xfE841c74250e57640390f46d914C88d22C51e82e", }; return possibleTokenAddresses[network ? network : etherStore.networkName]; @@ -18,6 +19,7 @@ const getP2PixAddress = (network?: NetworkEnum): string => { const possibleP2PixAddresses: { [key: string]: string } = { Ethereum: "0x2414817FF64A114d91eCFA16a834d3fCf69103d4", Polygon: "0x4A2886EAEc931e04297ed336Cc55c4eb7C75BA00", + Rootstock: "0x98ba35eb14b38D6Aa709338283af3e922476dE34", }; return possibleP2PixAddresses[network ? network : etherStore.networkName]; @@ -29,6 +31,7 @@ const getProviderUrl = (): string => { const possibleProvidersUrls: { [key: string]: string } = { Ethereum: import.meta.env.VITE_GOERLI_API_URL, Polygon: import.meta.env.VITE_MUMBAI_API_URL, + Rootstock: import.meta.env.VITE_RSK_API_URL, }; return possibleProvidersUrls[etherStore.networkName]; @@ -39,12 +42,14 @@ const possibleChains: { [key: string]: NetworkEnum } = { "5": NetworkEnum.ethereum, "0x13881": NetworkEnum.polygon, "80001": NetworkEnum.polygon, + "31": NetworkEnum.rootstock, }; const network2Chain: { [key: string]: string } = { Ethereum: "0x5", Polygon: "0x13881", Localhost: "0x7a69", + Rootstock: "0x1f", }; const isPossibleNetwork = (networkChain: string): boolean => { diff --git a/src/blockchain/events.ts b/src/blockchain/events.ts index 18ae3be..03640de 100644 --- a/src/blockchain/events.ts +++ b/src/blockchain/events.ts @@ -21,6 +21,10 @@ const getNetworksLiquidity = async (): Promise => { import.meta.env.VITE_MUMBAI_API_URL, 80001 ); // mumbai provider + const rootstockProvider = new ethers.providers.JsonRpcProvider( + import.meta.env.VITE_RSK_API_URL, + 31 + ); // rootstock provider const p2pContractGoerli = new ethers.Contract( getP2PixAddress(NetworkEnum.ethereum), @@ -33,6 +37,12 @@ const getNetworksLiquidity = async (): Promise => { mumbaiProvider ); + const p2pContractRootstock = new ethers.Contract( + getP2PixAddress(NetworkEnum.rootstock), + p2pix.abi, + rootstockProvider + ); + etherStore.setLoadingNetworkLiquidity(true); const depositListGoerli = await getValidDeposits( getTokenAddress(NetworkEnum.ethereum), @@ -45,7 +55,12 @@ const getNetworksLiquidity = async (): Promise => { ); etherStore.setDepositsValidListGoerli(depositListGoerli); + const depositListRootstock = await getValidDeposits( + getTokenAddress(NetworkEnum.rootstock), + p2pContractRootstock + ); etherStore.setDepositsValidListMumbai(depositListMumbai); + etherStore.setDepositsValidListRootstock(depositListRootstock); etherStore.setLoadingNetworkLiquidity(false); }; diff --git a/src/components/SearchComponent.vue b/src/components/SearchComponent.vue index 3983fd5..5077c6b 100644 --- a/src/components/SearchComponent.vue +++ b/src/components/SearchComponent.vue @@ -30,6 +30,7 @@ const hasLiquidity = ref(true); const validDecimals = ref(true); const selectedGoerliDeposit = ref(); const selectedMumbaiDeposit = ref(); +const selectedRootstockDeposit = ref(); // Emits const emit = defineEmits(["tokenBuy"]); @@ -70,6 +71,7 @@ const verifyLiquidity = (): void => { enableConfirmButton.value = false; selectedGoerliDeposit.value = undefined; selectedMumbaiDeposit.value = undefined; + selectedRootstockDeposit.value = undefined; if (tokenValue.value <= 0) { enableWalletButton.value = false; diff --git a/src/components/TopBar/TopBar.vue b/src/components/TopBar/TopBar.vue index 03b96b5..a2cfcd7 100644 --- a/src/components/TopBar/TopBar.vue +++ b/src/components/TopBar/TopBar.vue @@ -7,6 +7,7 @@ import { NetworkEnum } from "@/model/NetworkEnum"; import { connectProvider, requestNetworkChange } from "@/blockchain/provider"; import ethereumImage from "@/assets/ethereum.svg"; import polygonImage from "@/assets/polygon.svg"; +import rootstockImage from "@/assets/rootstock.svg"; // Store reference const etherStore = useEtherStore(); @@ -58,6 +59,7 @@ const getNetworkImage = (networkName: NetworkEnum): string => { let validImages = { Ethereum: ethereumImage, Polygon: polygonImage, + Rootstock: rootstockImage, Localhost: ethereumImage, }; @@ -233,6 +235,8 @@ onClickOutside(infoMenuRef, () => { Choosed network image { >
+ +
+
+