hoodi testnet added and wagmi + viem updated to the latest version

Signed-off-by: Uncle Fatso <uncle.fatso@ghostchain.io>
This commit is contained in:
Uncle Fatso 2025-06-11 23:30:42 +03:00
parent c41ea74b60
commit 2d81ba3554
Signed by: f4ts0
GPG Key ID: 565F4F2860226EBB
7 changed files with 910 additions and 580 deletions

View File

@ -1,7 +1,7 @@
{ {
"name": "ghost-dao-interface", "name": "ghost-dao-interface",
"private": true, "private": true,
"version": "0.0.32", "version": "0.1.0",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
@ -20,7 +20,7 @@
"@mui/utils": "^6.4.6", "@mui/utils": "^6.4.6",
"@tanstack/react-query": "^5.67.2", "@tanstack/react-query": "^5.67.2",
"@tanstack/react-query-devtools": "^5.67.2", "@tanstack/react-query-devtools": "^5.67.2",
"@wagmi/core": "^2.16.7", "@wagmi/core": "^2.17.3",
"react": "^19.0.0", "react": "^19.0.0",
"react-dom": "^19.0.0", "react-dom": "^19.0.0",
"react-ga4": "^2.1.0", "react-ga4": "^2.1.0",
@ -28,8 +28,8 @@
"react-hot-toast": "^2.5.2", "react-hot-toast": "^2.5.2",
"react-router-dom": "^7.3.0", "react-router-dom": "^7.3.0",
"scss": "^0.2.4", "scss": "^0.2.4",
"viem": "^2.26.5", "viem": "^2.31.0",
"wagmi": "^2.14.12" "wagmi": "^2.15.6"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.21.0", "@eslint/js": "^9.21.0",

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
import { http, fallback, createConfig } from 'wagmi' import { http, fallback, createConfig } from 'wagmi'
import { sepolia } from 'wagmi/chains' import { sepolia, hoodi } from 'wagmi/chains'
export const config = createConfig({ export const config = createConfig({
chains: [sepolia], chains: [sepolia, hoodi],
transports: { transports: {
[sepolia.id]: fallback([ [sepolia.id]: fallback([
http('https://ethereum-sepolia-rpc.publicnode.com'), http('https://ethereum-sepolia-rpc.publicnode.com'),
@ -14,5 +14,9 @@ export const config = createConfig({
http('https://eth-sepolia.api.onfinality.io/public'), http('https://eth-sepolia.api.onfinality.io/public'),
http('https://sepolia.drpc.org') http('https://sepolia.drpc.org')
]), ]),
[hoodi.id]: fallback([
http('https://rpc.hoodi.ethpandaops.io'),
http('https://0xrpc.io/hoodi'),
])
}, },
}) })

View File

@ -1,5 +1,6 @@
export enum NetworkId { export enum NetworkId {
TESTNET_SEPOLIA = 11155111, TESTNET_SEPOLIA = 11155111,
TESTNET_HOODI = 560048,
} }
export const isNetworkAvailable = (chainId, addressChainId) => { export const isNetworkAvailable = (chainId, addressChainId) => {
@ -9,6 +10,9 @@ export const isNetworkAvailable = (chainId, addressChainId) => {
case 11155111: case 11155111:
exists = true exists = true
break; break;
case 560048:
exists = true
break;
default: default:
break; break;
} }

View File

@ -2,60 +2,75 @@ import { NetworkId } from "../constants";
export const STAKING_ADDRESSES = { export const STAKING_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0xb22Ad3b4a23EaEA8c06CD151D7C0e3758d0FB580", [NetworkId.TESTNET_SEPOLIA]: "0xb22Ad3b4a23EaEA8c06CD151D7C0e3758d0FB580",
[NetworkId.TESTNET_HOODI]: "0x25F62eDc6C89FF84E957C22336A35d2dfc861a86",
}; };
export const BOND_DEPOSITORY_ADDRESSES = { export const BOND_DEPOSITORY_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0x8773AC3258b31D3ACfc99Ffd13768ccB170fcF9f", [NetworkId.TESTNET_SEPOLIA]: "0x8773AC3258b31D3ACfc99Ffd13768ccB170fcF9f",
[NetworkId.TESTNET_HOODI]: "0x6Ad50B1E293E68B2fC230c576220a93A9D311571",
}; };
export const DAO_TREASURY_ADDRESSES = { export const DAO_TREASURY_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0x2AAd1EA51044e69756880f580C13a92D910af238", [NetworkId.TESTNET_SEPOLIA]: "0x2AAd1EA51044e69756880f580C13a92D910af238",
[NetworkId.TESTNET_HOODI]: "0x1a1b29b18f714fac9dDabEf530dFc4f85b56A6e8",
}; };
export const FTSO_DAI_LP_ADDRESSES = { export const FTSO_DAI_LP_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0x64B19626bd074cf7B1019798846c363bbA8A0d53", [NetworkId.TESTNET_SEPOLIA]: "0x64B19626bd074cf7B1019798846c363bbA8A0d53",
[NetworkId.TESTNET_HOODI]: "0xf7B2d44209E70782d93A70F7D8eC50010dF7ae50", // TBD
}; };
export const FTSO_STNK_LP_ADDRESSES = { export const FTSO_STNK_LP_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0x29965676fc00C3eA9717B2A02739d294399a382e", [NetworkId.TESTNET_SEPOLIA]: "0x29965676fc00C3eA9717B2A02739d294399a382e",
[NetworkId.TESTNET_SEPOLIA]: "0x0000000000000000000000000000000000000000", // TBD
} }
export const DAI_ADDRESSES = { export const DAI_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0xc7Afd3bC4c74f6E07880447b1759d5d639F2525F", [NetworkId.TESTNET_SEPOLIA]: "0xc7Afd3bC4c74f6E07880447b1759d5d639F2525F",
[NetworkId.TESTNET_HOODI]: "0x80c6676c334BCcE60b3CC852085B72143379CE58",
}; };
export const WETH_ADDRESSES = { export const WETH_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0xfff9976782d46cc05630d1f6ebab18b2324d6b14", [NetworkId.TESTNET_SEPOLIA]: "0xfff9976782d46cc05630d1f6ebab18b2324d6b14",
[NetworkId.TESTNET_HOODI]: "0xE69a5c6dd88cA798b93c3C92fc50c51Fd5305eB4",
}; };
export const GHST_ADDRESSES = { export const GHST_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0x4643076087234d9B81974beF1eC9c25F3A0202B9", [NetworkId.TESTNET_SEPOLIA]: "0x4643076087234d9B81974beF1eC9c25F3A0202B9",
[NetworkId.TESTNET_HOODI]: "0xE98f7426457E6533B206e91B7EcA97aa8A258B46",
}; };
export const STNK_ADDRESSES = { export const STNK_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0x84060da636f5a83f2668ad238f09f8c667a1ec8b", [NetworkId.TESTNET_SEPOLIA]: "0x84060da636f5a83f2668ad238f09f8c667a1ec8b",
[NetworkId.TESTNET_HOODI]: "0xF07e9303A9f16Afd82f4f57Fd6fca68Aa0AB6D7F",
}; };
export const FTSO_ADDRESSES = { export const FTSO_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0x0eF2E888710E9f1d5E734f9ce30FAD40c832D5F3", [NetworkId.TESTNET_SEPOLIA]: "0x0eF2E888710E9f1d5E734f9ce30FAD40c832D5F3",
[NetworkId.TESTNET_HOODI]: "0xb184e423811b644A1924334E63985c259F5D0033",
}; };
export const DISTRIBUTOR_ADDRESSES = { export const DISTRIBUTOR_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0xE433D078a555163dC6B53968E72418B6a1618f04", [NetworkId.TESTNET_SEPOLIA]: "0xE433D078a555163dC6B53968E72418B6a1618f04",
[NetworkId.TESTNET_HOODI]: "0xdF49dC81c457c6f92e26cf6d686C7a8715255842",
}; };
export const GHOST_GOVERNANCE_ADDRESSES = { export const GHOST_GOVERNANCE_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0xD40E6442Ee01c234CD8AaF335122CfbB2aec8548", [NetworkId.TESTNET_SEPOLIA]: "0xD40E6442Ee01c234CD8AaF335122CfbB2aec8548",
[NetworkId.TESTNET_HOODI]: "0x1B96B792840d4d19d5097ee007392Ed4d851e64F",
}; };
export const BONDING_CALCULATOR_ADDRESSES = { export const BONDING_CALCULATOR_ADDRESSES = {
[NetworkId.TESTNET_SEPOLIA]: "0x29a6bb5De7a1049632E107544CaEF05e518451e7", [NetworkId.TESTNET_SEPOLIA]: "0x29a6bb5De7a1049632E107544CaEF05e518451e7",
[NetworkId.TESTNET_HOODI]: "0x2635d526Ad24b98082563937f7b996075052c6Fd",
} }
export const UNISWAP_V2_ROUTER = { export const UNISWAP_V2_ROUTER = {
[NetworkId.TESTNET_SEPOLIA]: "0xee567fe1712faf6149d80da1e6934e354124cfe3", [NetworkId.TESTNET_SEPOLIA]: "0xee567fe1712faf6149d80da1e6934e354124cfe3",
[NetworkId.TESTNET_HOODI]: "0xD41daF947c6FFEf344754B99ad09466FBCBb7583",
}; };
export const UNISWAP_V2_FACTORY = { export const UNISWAP_V2_FACTORY = {
[NetworkId.TESTNET_SEPOLIA]: "0xF62c03E08ada871A0bEb309762E260a7a6a880E6", [NetworkId.TESTNET_SEPOLIA]: "0xF62c03E08ada871A0bEb309762E260a7a6a880E6",
[NetworkId.TESTNET_HOODI]: "0xF140342cB5C29C1468d91Aee408d7b7271C48b5A",
}; };

View File

@ -11,4 +11,11 @@ export const AVAILABLE_DEXES = {
viewBox: "0 0 195 230", viewBox: "0 0 195 230",
}, },
], ],
[NetworkId.TESTNET_HOODI]: [
{
name: "Uniswap",
icon: UniswapIcon,
viewBox: "0 0 195 230",
},
],
}; };

View File

@ -3,7 +3,7 @@ import { useReadContract } from "wagmi";
import { useCurrentIndex } from "../staking"; import { useCurrentIndex } from "../staking";
import { useUniswapV2PairReserves } from "../uniswapv2"; import { useUniswapV2PairReserves } from "../uniswapv2";
import { DecimalBigNumber } from "../../helpers/DecimalBigNumber"; import { DecimalBigNumber } from "../../helpers/DecimalBigNumber";
import { FTSO_DAI_LP_ADDRESSES, DAI_ADDRESSES } from "../../constants/addresses"; import { FTSO_DAI_LP_ADDRESSES, DAI_ADDRESSES, FTSO_ADDRESSES } from "../../constants/addresses";
export const useDaiPrice = (chainId) => { export const useDaiPrice = (chainId) => {
const daiPrice = new DecimalBigNumber(1000000000000000000n, 18); const daiPrice = new DecimalBigNumber(1000000000000000000n, 18);
@ -11,7 +11,7 @@ export const useDaiPrice = (chainId) => {
}; };
export const useFtsoPrice = (chainId) => { export const useFtsoPrice = (chainId) => {
const { reserves, refetch } = useUniswapV2PairReserves( const { reserves, tokens, refetch } = useUniswapV2PairReserves(
chainId, chainId,
FTSO_DAI_LP_ADDRESSES[chainId], FTSO_DAI_LP_ADDRESSES[chainId],
9, 9,
@ -20,9 +20,17 @@ export const useFtsoPrice = (chainId) => {
"GDAI", "GDAI",
); );
const stableReserves = DAI_ADDRESSES[chainId].toUpperCase() === tokens.token0.toUpperCase()
? reserves.reserve0._value
: DAI_ADDRESSES[chainId].toUpperCase() === tokens.token1.toUpperCase() ? reserves.reserve1._value : 0n;
const ftsoReserves = FTSO_ADDRESSES[chainId].toUpperCase() === tokens.token0.toUpperCase()
? reserves.reserve0._value
: FTSO_ADDRESSES[chainId].toUpperCase() === tokens.token1.toUpperCase() ? reserves.reserve1._value : 0n;
let price = 0n let price = 0n
if (reserves.reserve0._value > 0n) if (ftsoReserves > 0n)
price = reserves.reserve1._value / reserves.reserve0._value; price = stableReserves / ftsoReserves;
return new DecimalBigNumber(price, 9); return new DecimalBigNumber(price, 9);
}; };