Compare commits

3 Commits

Author SHA1 Message Date
vp
8be3fc9313 ens graph no need 2025-06-13 12:24:14 -07:00
vp
bcf8b55331 fix graph request 2025-06-13 11:27:16 -07:00
vp
380b9ea508 Update RPC and ENS graph 2025-06-13 10:28:52 -07:00
6 changed files with 20 additions and 12 deletions

View File

@@ -37,6 +37,7 @@
"node/no-callback-literal": 0, "node/no-callback-literal": 0,
"prettier/prettier": ["error", { "printWidth": 130 }], "prettier/prettier": ["error", { "printWidth": 130 }],
"jsx-quotes": ["error", "prefer-single"], "jsx-quotes": ["error", "prefer-single"],
"@typescript-eslint/no-magic-numbers": ["error", { "ignoreArrayIndexes": true }],
"@typescript-eslint/restrict-template-expressions": ["warn", { "allowNumber": true }], "@typescript-eslint/restrict-template-expressions": ["warn", { "allowNumber": true }],
"@typescript-eslint/explicit-function-return-type": 0, "@typescript-eslint/explicit-function-return-type": 0,
"@typescript-eslint/array-type": 2, "@typescript-eslint/array-type": 2,
@@ -47,7 +48,6 @@
"@typescript-eslint/no-empty-interface": 2, "@typescript-eslint/no-empty-interface": 2,
"@typescript-eslint/no-explicit-any": 2, "@typescript-eslint/no-explicit-any": 2,
"@typescript-eslint/no-extra-non-null-assertion": 2, "@typescript-eslint/no-extra-non-null-assertion": 2,
"@typescript-eslint/no-magic-numbers": 2,
"@typescript-eslint/no-require-imports": 2, "@typescript-eslint/no-require-imports": 2,
"@typescript-eslint/require-await": 2, "@typescript-eslint/require-await": 2,
"@typescript-eslint/no-floating-promises": 0, "@typescript-eslint/no-floating-promises": 0,

2
constants/graphs.ts Normal file
View File

@@ -0,0 +1,2 @@
export const RELAYER_GRAPH =
'https://gateway.thegraph.com/api/6a217817dd87d33db10beed79b044a91/subgraphs/id/DgKwfAbLfynpiq7fDJy59LDnVnia4Y5nYeRDBYi9qezc'

View File

@@ -7,3 +7,4 @@ export * from './relayer'
export * from './variables' export * from './variables'
export * from './contracts' export * from './contracts'
export * from './chainInfo' export * from './chainInfo'
export * from './graphs'

View File

@@ -2,25 +2,27 @@ import { ChainId } from '@/types'
import { getProvider } from '@/services' import { getProvider } from '@/services'
import { RELAYER_GRAPH } from '@/constants'
async function getEnsOwner(ensName: string, chainId: ChainId) { async function getEnsOwner(ensName: string, chainId: ChainId) {
try { try {
const { provider } = getProvider(chainId) const { provider } = getProvider(chainId)
const ownerAddress = await provider.resolveName(ensName) const ownerAddress = await provider.resolveName(ensName)
return ownerAddress || undefined return ownerAddress
} catch (err) { } catch (err) {
return undefined return undefined
} }
} }
async function getNameFromHash(ensHash: string) { async function getRelayerEnsName(ensHash: string) {
try { try {
const response = await fetch('https://tornadocash-rpc.com/subgraphs/name/graphprotocol/ens', { const response = await fetch(RELAYER_GRAPH, {
body: JSON.stringify({ body: JSON.stringify({
query: `{ query: `{
domain(id: "${ensHash}") { relayers(first: 1, where: {ensHash: "${ensHash}"}){
name ensName
} }
}`, }`,
}), }),
method: 'POST', method: 'POST',
@@ -28,9 +30,12 @@ async function getNameFromHash(ensHash: string) {
const { data } = await response.json() const { data } = await response.json()
return data.domain.name if (!data.relayers.length) throw new Error('ens hash does not belong to relayer')
return data.relayers[0].ensName
} catch (err) { } catch (err) {
throw new Error(err.message) throw new Error(err.message)
} }
} }
export { getEnsOwner, getNameFromHash }
export { getEnsOwner, getRelayerEnsName }

View File

@@ -1,9 +1,9 @@
import { checkSubdomains, subdomains } from './ensSubdomains' import { checkSubdomains, subdomains } from './ensSubdomains'
import { getEnsOwner, getNameFromHash } from './ens' import { getEnsOwner, getRelayerEnsName } from './ens'
export const ensService = { export const ensService = {
subdomains, subdomains,
getEnsOwner, getEnsOwner,
checkSubdomains, checkSubdomains,
getNameFromHash, getRelayerEnsName,
} }

View File

@@ -55,7 +55,7 @@ export const actions: ActionTree<RelayerState, RootState> = {
try { try {
const { chainId } = getters.dependencies const { chainId } = getters.dependencies
const ensName = await ensService.getNameFromHash(ensHash) const ensName = await ensService.getRelayerEnsName(ensHash)
const subdomains = await ensService.checkSubdomains(ensName, chainId) const subdomains = await ensService.checkSubdomains(ensName, chainId)
const mainnetSubdomain = subdomains.find((el) => el.chainId === ChainId.MAINNET) const mainnetSubdomain = subdomains.find((el) => el.chainId === ChainId.MAINNET)