Exposes contract utils to interact with The Graph Network contracts.
# install the dependency
## pnpm
pnpm add @edgeandnode/contract-utils
## yarn
yarn add @edgeandnode/contract-utils
## bun
bun add @edgeandnode/contract-utils
Retrieve the contract address of a Graph Network contract on the specified network
import { resolveContractAddress } from '@edgeandnode/contract-utils'
// retrieve correct GNS address for arbitrum
const L2GNSAddress = resolveContractAddress({ network: 42161, contract: 'GNS' })
// retrieve correct GraphToken address for sepolia
const SepoliaGraphTokenAddress = resolveContractAddress({
network: 11155111,
contract: 'GraphToken',
})
Call the mintSignal
L2GNS contract function from the generated actions.
import { createClient } from 'viem'
import { createConfig, http } from 'wagmi'
import { arbitrum, arbitrumSepolia, mainnet, sepolia } from 'wagmi/chains'
import { coinbaseWallet, injected, safe, walletConnect } from 'wagmi/connectors'
import { buildConfig, writeL2GnsMintSignal } from '@edgeandnode/contract-utils'
async function mint() {
const config = createConfig({
chains: [arbitrum, arbitrumSepolia, mainnet, sepolia],
ssr,
client({ chain }) {
return createClient({ chain, transport: http() })
},
connectors: [
coinbaseWallet({ appName: 'The Graph' }),
injected(),
safe({ allowedDomains: [/app.safe.global$/] }),
walletConnect({
projectId: 'WALLETCONNECT_PROJECT_ID',
metadata: {
name: 'The Graph',
description: 'The Graph Network suite of apps wallet integration',
url: 'https://thegraph.com',
icons: [''],
},
qrModalOptions: {
themeMode: 'dark',
},
}),
],
})
const mintTx = await writeL2GnsMintSignal(config, {
account: `0x`,
args: [0n, 0n, 0n],
})
}
# required a `.env.local` file with env vars (see below)
pnpm generate
# or
pnpm wagmi generate
You might get
Max calls per sec rate limit reached (5/sec)
when running the commands above. Since wagmi CLI caches the contract ABIs you can just keep re-running the command and the CLI will fetch more and more ABIs and eventually generates the utils.
You can just create free API keys and they will work with wagmi CLI:
-
ARBISCAN_KEY
-> api key for reading contract ABIs from arbiscan.io -
ETHERSCAN_KEY
-> api key for reading contract ABIs from etherscan.io