From 04ea9eb2230f97609263cf31a3a8ed04abfd32b1 Mon Sep 17 00:00:00 2001 From: Sarah Schwartz <58856580+sarahschwartz@users.noreply.github.com> Date: Tue, 19 Nov 2024 14:28:11 -0700 Subject: [PATCH] docs: replace wagmi examples with imports (#98) - updates the wagmi guide - replaces hard-coded snippets with direct imports to more easily test and maintain - removes the default filter value in the tutorial filters --- code/wagmi/.gitignore | 40 ++ code/wagmi/bun.lockb | Bin 0 -> 349801 bytes code/wagmi/next.config.ts | 8 + code/wagmi/package.json | 27 + code/wagmi/public/favicon.ico | Bin 0 -> 25931 bytes code/wagmi/src/components/Account.tsx | 7 + code/wagmi/src/components/AccountTS.tsx | 7 + code/wagmi/src/components/Balance.tsx | 9 + code/wagmi/src/components/BalanceTS.tsx | 18 + code/wagmi/src/components/Block.tsx | 7 + code/wagmi/src/components/BlockTS.tsx | 18 + code/wagmi/src/components/ConnectWallet.tsx | 12 + code/wagmi/src/components/ConnectWalletTS.tsx | 9 + code/wagmi/src/components/ReadContract.tsx | 67 ++ code/wagmi/src/components/ReadContractTS.tsx | 24 + code/wagmi/src/components/SendTx.tsx | 37 ++ code/wagmi/src/components/SendTxPrepared.tsx | 49 ++ .../wagmi/src/components/SendTxPreparedTS.tsx | 44 ++ code/wagmi/src/components/SendTxTS.tsx | 32 + code/wagmi/src/components/ShowConnectors.tsx | 19 + .../wagmi/src/components/ShowConnectorsTS.tsx | 19 + code/wagmi/src/components/SignMessage.tsx | 54 ++ code/wagmi/src/components/SignMessageTS.tsx | 30 + code/wagmi/src/components/SignTypedData.tsx | 42 ++ code/wagmi/src/components/SignTypedDataTS.tsx | 44 ++ code/wagmi/src/components/WriteContract.tsx | 34 + code/wagmi/src/components/WriteContractTS.tsx | 26 + code/wagmi/src/pages/_app.tsx | 16 + code/wagmi/src/pages/_document.tsx | 13 + code/wagmi/src/pages/index.tsx | 82 +++ code/wagmi/src/utils/account.ts | 7 + code/wagmi/src/utils/balance.ts | 8 + code/wagmi/src/utils/block.ts | 7 + code/wagmi/src/utils/connect.ts | 11 + code/wagmi/src/utils/connectors.ts | 7 + code/wagmi/src/utils/message.ts | 7 + code/wagmi/src/utils/prepareTx.ts | 12 + code/wagmi/src/utils/read.ts | 14 + code/wagmi/src/utils/sendTx.ts | 12 + code/wagmi/src/utils/signTyped.ts | 7 + code/wagmi/src/utils/write.ts | 15 + code/wagmi/tsconfig.json | 22 + code/wagmi/wagmi-config.ts | 18 + content/tutorials/guide-viem/_dir.yml | 1 + content/tutorials/guide-wagmi/10.index.md | 617 +++++------------- content/tutorials/guide-wagmi/_dir.yml | 1 + .../tutorials/guide-walletconnect/_dir.yml | 1 + content/tutorials/guide-web3js/_dir.yml | 1 + pages/tutorials/index.vue | 2 +- 49 files changed, 1107 insertions(+), 457 deletions(-) create mode 100644 code/wagmi/.gitignore create mode 100755 code/wagmi/bun.lockb create mode 100644 code/wagmi/next.config.ts create mode 100644 code/wagmi/package.json create mode 100644 code/wagmi/public/favicon.ico create mode 100644 code/wagmi/src/components/Account.tsx create mode 100644 code/wagmi/src/components/AccountTS.tsx create mode 100644 code/wagmi/src/components/Balance.tsx create mode 100644 code/wagmi/src/components/BalanceTS.tsx create mode 100644 code/wagmi/src/components/Block.tsx create mode 100644 code/wagmi/src/components/BlockTS.tsx create mode 100644 code/wagmi/src/components/ConnectWallet.tsx create mode 100644 code/wagmi/src/components/ConnectWalletTS.tsx create mode 100644 code/wagmi/src/components/ReadContract.tsx create mode 100644 code/wagmi/src/components/ReadContractTS.tsx create mode 100644 code/wagmi/src/components/SendTx.tsx create mode 100644 code/wagmi/src/components/SendTxPrepared.tsx create mode 100644 code/wagmi/src/components/SendTxPreparedTS.tsx create mode 100644 code/wagmi/src/components/SendTxTS.tsx create mode 100644 code/wagmi/src/components/ShowConnectors.tsx create mode 100644 code/wagmi/src/components/ShowConnectorsTS.tsx create mode 100644 code/wagmi/src/components/SignMessage.tsx create mode 100644 code/wagmi/src/components/SignMessageTS.tsx create mode 100644 code/wagmi/src/components/SignTypedData.tsx create mode 100644 code/wagmi/src/components/SignTypedDataTS.tsx create mode 100644 code/wagmi/src/components/WriteContract.tsx create mode 100644 code/wagmi/src/components/WriteContractTS.tsx create mode 100644 code/wagmi/src/pages/_app.tsx create mode 100644 code/wagmi/src/pages/_document.tsx create mode 100644 code/wagmi/src/pages/index.tsx create mode 100644 code/wagmi/src/utils/account.ts create mode 100644 code/wagmi/src/utils/balance.ts create mode 100644 code/wagmi/src/utils/block.ts create mode 100644 code/wagmi/src/utils/connect.ts create mode 100644 code/wagmi/src/utils/connectors.ts create mode 100644 code/wagmi/src/utils/message.ts create mode 100644 code/wagmi/src/utils/prepareTx.ts create mode 100644 code/wagmi/src/utils/read.ts create mode 100644 code/wagmi/src/utils/sendTx.ts create mode 100644 code/wagmi/src/utils/signTyped.ts create mode 100644 code/wagmi/src/utils/write.ts create mode 100644 code/wagmi/tsconfig.json create mode 100644 code/wagmi/wagmi-config.ts diff --git a/code/wagmi/.gitignore b/code/wagmi/.gitignore new file mode 100644 index 00000000..d32cc78b --- /dev/null +++ b/code/wagmi/.gitignore @@ -0,0 +1,40 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/code/wagmi/bun.lockb b/code/wagmi/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..ffc505159af7c90e91b3bba08f7eec7d5efa43d0 GIT binary patch literal 349801 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�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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/code/wagmi/src/components/Account.tsx b/code/wagmi/src/components/Account.tsx new file mode 100644 index 00000000..9d92f643 --- /dev/null +++ b/code/wagmi/src/components/Account.tsx @@ -0,0 +1,7 @@ +import { useAccount } from 'wagmi'; + +export function Account() { + const { address } = useAccount(); + + return

{address}
; +} diff --git a/code/wagmi/src/components/AccountTS.tsx b/code/wagmi/src/components/AccountTS.tsx new file mode 100644 index 00000000..f6a82484 --- /dev/null +++ b/code/wagmi/src/components/AccountTS.tsx @@ -0,0 +1,7 @@ +import { fetchAccount } from '@/utils/account'; + +export function AccountTS() { + const address = fetchAccount(); + + return
{address}
; +} diff --git a/code/wagmi/src/components/Balance.tsx b/code/wagmi/src/components/Balance.tsx new file mode 100644 index 00000000..a07afca1 --- /dev/null +++ b/code/wagmi/src/components/Balance.tsx @@ -0,0 +1,9 @@ +import { useBalance } from 'wagmi'; + +export function Balance() { + const balance = useBalance({ + address: '0xBC989fDe9e54cAd2aB4392Af6dF60f04873A033A', + }); + + return
{balance &&

Balance: {balance.data?.value.toString()}

}
; +} diff --git a/code/wagmi/src/components/BalanceTS.tsx b/code/wagmi/src/components/BalanceTS.tsx new file mode 100644 index 00000000..ea0da6f1 --- /dev/null +++ b/code/wagmi/src/components/BalanceTS.tsx @@ -0,0 +1,18 @@ +import { fetchBalance } from '@/utils/balance'; +import { useState } from 'react'; + +export function BalanceTS() { + const [balance, setBalance] = useState(); + + const updateBalance = async () => { + const newBalance = await fetchBalance(); + setBalance(newBalance); + }; + + return ( +
+ + {balance &&

Balance: {balance.toString()}

} +
+ ); +} diff --git a/code/wagmi/src/components/Block.tsx b/code/wagmi/src/components/Block.tsx new file mode 100644 index 00000000..66c5e918 --- /dev/null +++ b/code/wagmi/src/components/Block.tsx @@ -0,0 +1,7 @@ +import { useBlockNumber } from 'wagmi'; + +export function Block() { + const block = useBlockNumber(); + + return
{block &&

Block: {block.data?.toString()}

}
; +} diff --git a/code/wagmi/src/components/BlockTS.tsx b/code/wagmi/src/components/BlockTS.tsx new file mode 100644 index 00000000..1ebefbfc --- /dev/null +++ b/code/wagmi/src/components/BlockTS.tsx @@ -0,0 +1,18 @@ +import { fetchLatestBlockNumber } from '@/utils/block'; +import { useState } from 'react'; + +export function BlockTS() { + const [block, setBlock] = useState(); + + const updateBlock = async () => { + const newBlock = await fetchLatestBlockNumber(); + setBlock(newBlock); + }; + + return ( +
+ + {block &&

Block: {block.toString()}

} +
+ ); +} diff --git a/code/wagmi/src/components/ConnectWallet.tsx b/code/wagmi/src/components/ConnectWallet.tsx new file mode 100644 index 00000000..12a5e452 --- /dev/null +++ b/code/wagmi/src/components/ConnectWallet.tsx @@ -0,0 +1,12 @@ +import { injected } from '@wagmi/connectors'; +import { useConnect } from 'wagmi'; + +export function ConnectWallet() { + const { connect } = useConnect(); + + return ( +
+ +
+ ); +} diff --git a/code/wagmi/src/components/ConnectWalletTS.tsx b/code/wagmi/src/components/ConnectWalletTS.tsx new file mode 100644 index 00000000..54cf2c53 --- /dev/null +++ b/code/wagmi/src/components/ConnectWalletTS.tsx @@ -0,0 +1,9 @@ +import { connectWallet } from '@/utils/connect'; + +export function ConnectWalletTS() { + return ( +
+ +
+ ); +} diff --git a/code/wagmi/src/components/ReadContract.tsx b/code/wagmi/src/components/ReadContract.tsx new file mode 100644 index 00000000..3e785d42 --- /dev/null +++ b/code/wagmi/src/components/ReadContract.tsx @@ -0,0 +1,67 @@ +import { useState } from 'react'; +import type { Address, BaseError } from 'viem'; +import { useReadContract } from 'wagmi'; +import * as erc20TokenABI from '../../../frontend-paymaster/contracts/artifacts-zk/contracts/erc20/MyERC20Token.sol/MyERC20Token.json'; + +const CONTRACT_ADDRESS = '0x9c1a3d7C98dBF89c7f5d167F2219C29c2fe775A7'; + +export function ReadContract() { + return ( +
+
+ +
+ +
+
+ ); +} + +function TotalSupply() { + const { data, isRefetching, refetch } = useReadContract({ + abi: erc20TokenABI.abi, + address: CONTRACT_ADDRESS, + functionName: 'totalSupply', + }); + + console.log('data', data); + + return ( +
+ Total Supply: {data?.toString()} + +
+ ); +} + +function BalanceOf() { + const [address, setAddress] = useState
('0xBC989fDe9e54cAd2aB4392Af6dF60f04873A033A'); + const { data, error, isLoading, isSuccess } = useReadContract({ + abi: erc20TokenABI.abi, + address: CONTRACT_ADDRESS, + functionName: 'balanceOf', + args: [address], + }); + + const [value, setValue] = useState(address); + + return ( +
+ Token balance: {isSuccess && data?.toString()} + setValue(e.target.value)} + placeholder="wallet address" + style={{ marginLeft: 4 }} + value={value} + /> + + {error &&
{(error as BaseError).shortMessage}
} +
+ ); +} diff --git a/code/wagmi/src/components/ReadContractTS.tsx b/code/wagmi/src/components/ReadContractTS.tsx new file mode 100644 index 00000000..fb2a75c3 --- /dev/null +++ b/code/wagmi/src/components/ReadContractTS.tsx @@ -0,0 +1,24 @@ +import { readERC20Contract } from '@/utils/read'; +import { useState } from 'react'; + +export function ReadContractTS() { + const [data, setData] = useState(); + + async function updateTotalSupply() { + const supply = await readERC20Contract('totalSupply'); + const newData = supply as bigint; + setData(newData.toString()); + } + + return ( +
+ {data &&
Total Supply: {data?.toString()}
} + +
+ ); +} diff --git a/code/wagmi/src/components/SendTx.tsx b/code/wagmi/src/components/SendTx.tsx new file mode 100644 index 00000000..be46fff2 --- /dev/null +++ b/code/wagmi/src/components/SendTx.tsx @@ -0,0 +1,37 @@ +import { parseEther } from 'viem'; +import { useSendTransaction } from 'wagmi'; + +export function SendTx() { + const { sendTransaction, isError, isPending, isSuccess, data, error } = useSendTransaction(); + + return ( + <> +
{ + e.preventDefault(); + const formData = new FormData(e.target as HTMLFormElement); + const address = formData.get('address') as `0x${string}`; + const value = formData.get('value') as `${number}`; + sendTransaction({ + to: address, + value: parseEther(value), + }); + }} + > + + + +
+ + {isPending &&
Transaction pending...
} + {isSuccess &&
Transaction Hash: {data}
} + {isError &&
Error: {error?.message}
} + + ); +} diff --git a/code/wagmi/src/components/SendTxPrepared.tsx b/code/wagmi/src/components/SendTxPrepared.tsx new file mode 100644 index 00000000..1cb458fb --- /dev/null +++ b/code/wagmi/src/components/SendTxPrepared.tsx @@ -0,0 +1,49 @@ +import { useState } from 'react'; +import { parseEther } from 'viem'; +import { usePrepareTransactionRequest, useSendTransaction } from 'wagmi'; + +export function SendTxPrepared() { + const [to, setTo] = useState<`0x${string}`>(); + const [value, setValue] = useState('0.0'); + + const { data: txRequest } = usePrepareTransactionRequest({ + to, + value: parseEther(value as `${number}`), + }); + + const { sendTransaction, isError, isPending, isSuccess, data, error } = useSendTransaction(); + + return ( + <> +
{ + e.preventDefault(); + if (!txRequest) return; + sendTransaction(txRequest); + }} + > + setTo(e.target.value as `0x${string}`)} + value={to} + /> + setValue(e.target.value)} + value={value?.toString()} + /> + +
+ + {isPending &&
Transaction pending...
} + {isSuccess &&
Transaction Hash: {data}
} + {isError &&
Error: {error?.message}
} + + ); +} diff --git a/code/wagmi/src/components/SendTxPreparedTS.tsx b/code/wagmi/src/components/SendTxPreparedTS.tsx new file mode 100644 index 00000000..5efe18b5 --- /dev/null +++ b/code/wagmi/src/components/SendTxPreparedTS.tsx @@ -0,0 +1,44 @@ +import { prepareTx } from '@/utils/prepareTx'; +import { useState } from 'react'; +import { config } from '../../wagmi-config'; +import { sendTransaction } from '@wagmi/core'; + +export function SendTxPreparedTS() { + const [data, setData] = useState(); + const [to, setTo] = useState<`0x${string}`>(); + const [value, setValue] = useState('0.0'); + + return ( + <> +
{ + e.preventDefault(); + if (!to) return; + const tx = await prepareTx(to, value as `${number}`); + const txData = await sendTransaction(config, tx); + setData(txData); + }} + > + setTo(e.target.value as `0x${string}`)} + value={to} + /> + setValue(e.target.value)} + value={value?.toString()} + /> + +
+ + {data &&
Transaction Hash: {data}
} + + ); +} diff --git a/code/wagmi/src/components/SendTxTS.tsx b/code/wagmi/src/components/SendTxTS.tsx new file mode 100644 index 00000000..17d64b94 --- /dev/null +++ b/code/wagmi/src/components/SendTxTS.tsx @@ -0,0 +1,32 @@ +import { sendTx } from '@/utils/sendTx'; +import { useState } from 'react'; + +export function SendTxTS() { + const [data, setData] = useState(); + return ( + <> +
{ + e.preventDefault(); + const formData = new FormData(e.target as HTMLFormElement); + const address = formData.get('address') as `0x${string}`; + const value = formData.get('value') as `${number}`; + const txData = await sendTx(address, value); + setData(txData); + }} + > + + + +
+ + {data &&
Transaction Hash: {data}
} + + ); +} diff --git a/code/wagmi/src/components/ShowConnectors.tsx b/code/wagmi/src/components/ShowConnectors.tsx new file mode 100644 index 00000000..8a9a2ac7 --- /dev/null +++ b/code/wagmi/src/components/ShowConnectors.tsx @@ -0,0 +1,19 @@ +import { connectWallet } from '@/utils/connect'; +import { useConnectors } from 'wagmi'; + +export function ShowConnectors() { + const connectors = useConnectors(); + + return ( +
+ {connectors.map((connector) => ( + + ))} +
+ ); +} diff --git a/code/wagmi/src/components/ShowConnectorsTS.tsx b/code/wagmi/src/components/ShowConnectorsTS.tsx new file mode 100644 index 00000000..ca74978d --- /dev/null +++ b/code/wagmi/src/components/ShowConnectorsTS.tsx @@ -0,0 +1,19 @@ +import { connectWallet } from '@/utils/connect'; +import { fetchConnectors } from '@/utils/connectors'; + +export function ShowConnectorsTS() { + const connectors = fetchConnectors(); + + return ( +
+ {connectors.map((connector) => ( + + ))} +
+ ); +} diff --git a/code/wagmi/src/components/SignMessage.tsx b/code/wagmi/src/components/SignMessage.tsx new file mode 100644 index 00000000..09d181f7 --- /dev/null +++ b/code/wagmi/src/components/SignMessage.tsx @@ -0,0 +1,54 @@ +import { useEffect, useState } from 'react'; +import { type Address, recoverMessageAddress } from 'viem'; +import { useSignMessage } from 'wagmi'; + +export function SignMessage() { + const [recoveredAddress, setRecoveredAddress] = useState
(); + const { data: signature, variables, error, isPending, signMessage } = useSignMessage(); + + useEffect(() => { + (async () => { + if (variables?.message && signature) { + const recoveredAddress = await recoverMessageAddress({ + message: variables?.message, + signature, + }); + setRecoveredAddress(recoveredAddress); + } + })(); + }, [signature, variables?.message]); + + return ( + <> +
{ + event.preventDefault(); + const element = event.target as HTMLFormElement; + const formData = new FormData(element); + const message = formData.get('message') as string; + signMessage({ message }); + }} + > + + +
+ + {signature && ( +
+
Signature: {signature}
+
Recovered address: {recoveredAddress}
+
+ )} + {error &&
Error: {error?.message}
} + + ); +} diff --git a/code/wagmi/src/components/SignMessageTS.tsx b/code/wagmi/src/components/SignMessageTS.tsx new file mode 100644 index 00000000..22851d33 --- /dev/null +++ b/code/wagmi/src/components/SignMessageTS.tsx @@ -0,0 +1,30 @@ +import { getSignedMessage } from '@/utils/message'; +import { useState } from 'react'; + +export function SignMessageTS() { + const [data, setData] = useState(); + + return ( + <> +
{ + event.preventDefault(); + const element = event.target as HTMLFormElement; + const formData = new FormData(element); + const message = formData.get('message') as string; + const signature = await getSignedMessage(message); + setData(signature); + }} + > + + +
+ + {data &&
Signature: {data}
} + + ); +} diff --git a/code/wagmi/src/components/SignTypedData.tsx b/code/wagmi/src/components/SignTypedData.tsx new file mode 100644 index 00000000..e19deb85 --- /dev/null +++ b/code/wagmi/src/components/SignTypedData.tsx @@ -0,0 +1,42 @@ +import { useSignTypedData } from 'wagmi'; + +export function SignTypedData() { + const { signTypedData, data } = useSignTypedData(); + + return ( + <> + +
{data &&

Signature: {data}

}
+ + ); +} diff --git a/code/wagmi/src/components/SignTypedDataTS.tsx b/code/wagmi/src/components/SignTypedDataTS.tsx new file mode 100644 index 00000000..5335848a --- /dev/null +++ b/code/wagmi/src/components/SignTypedDataTS.tsx @@ -0,0 +1,44 @@ +import { getSignedTypedData } from '@/utils/signTyped'; +import { useState } from 'react'; + +export function SignTypedDataTS() { + const [signature, setSignature] = useState(); + + return ( + <> + +
{signature &&

Signature: {signature}

}
+ + ); +} diff --git a/code/wagmi/src/components/WriteContract.tsx b/code/wagmi/src/components/WriteContract.tsx new file mode 100644 index 00000000..e5dcd1b1 --- /dev/null +++ b/code/wagmi/src/components/WriteContract.tsx @@ -0,0 +1,34 @@ +import { useState } from 'react'; +import { type BaseError, useWriteContract } from 'wagmi'; +import * as greeterABI from '../../../frontend-paymaster/contracts/artifacts-zk/contracts/Greeter.sol/Greeter.json'; + +const CONTRACT_ADDRESS = '0xCeAB1fc2693930bbad33024D270598c620D7A52B'; + +export function WriteContract() { + const [greeting, setGreeting] = useState(); + const { writeContract, isError, isPending, isSuccess, data, error } = useWriteContract(); + + async function updateGreeting() { + if (!greeting) return; + writeContract({ + abi: greeterABI.abi, + address: CONTRACT_ADDRESS, + functionName: 'setGreeting', + args: [greeting], + }); + } + + return ( +
+ setGreeting(e.target.value)} + placeholder="Hello, Zeek!" + style={{ marginLeft: 4 }} + value={greeting} + /> + + {isError &&
{(error as BaseError).shortMessage}
} + {isSuccess &&
Transaction hash: {data}
} +
+ ); +} diff --git a/code/wagmi/src/components/WriteContractTS.tsx b/code/wagmi/src/components/WriteContractTS.tsx new file mode 100644 index 00000000..cae8ab14 --- /dev/null +++ b/code/wagmi/src/components/WriteContractTS.tsx @@ -0,0 +1,26 @@ +import { useState } from 'react'; +import { writeToGreeterContract } from '../utils/write'; + +export function WriteContractTS() { + const [greeting, setGreeting] = useState(); + const [data, setData] = useState(); + + async function updateGreeting() { + if (!greeting) return; + const txData = await writeToGreeterContract(greeting); + setData(txData as string); + } + + return ( +
+ setGreeting(e.target.value)} + placeholder="Hello, Zeek!" + style={{ marginLeft: 4 }} + value={greeting} + /> + + {data &&
Transaction hash: {data}
} +
+ ); +} diff --git a/code/wagmi/src/pages/_app.tsx b/code/wagmi/src/pages/_app.tsx new file mode 100644 index 00000000..0b5cff4f --- /dev/null +++ b/code/wagmi/src/pages/_app.tsx @@ -0,0 +1,16 @@ +import type { AppProps } from 'next/app'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import { WagmiProvider } from 'wagmi'; +import { config } from '../../wagmi-config'; + +const queryClient = new QueryClient(); + +export default function App({ Component, pageProps }: AppProps) { + return ( + + + ; + + + ); +} diff --git a/code/wagmi/src/pages/_document.tsx b/code/wagmi/src/pages/_document.tsx new file mode 100644 index 00000000..e1e9cbbb --- /dev/null +++ b/code/wagmi/src/pages/_document.tsx @@ -0,0 +1,13 @@ +import { Html, Head, Main, NextScript } from 'next/document'; + +export default function Document() { + return ( + + + +
+ + + + ); +} diff --git a/code/wagmi/src/pages/index.tsx b/code/wagmi/src/pages/index.tsx new file mode 100644 index 00000000..6ebd9cd2 --- /dev/null +++ b/code/wagmi/src/pages/index.tsx @@ -0,0 +1,82 @@ +import Head from 'next/head'; +import { useEffect, useState } from 'react'; +import { ConnectWalletTS } from '@/components/ConnectWalletTS'; +import { ConnectWallet } from '@/components/ConnectWallet'; +import { ShowConnectors } from '@/components/ShowConnectors'; +import { ShowConnectorsTS } from '@/components/ShowConnectorsTS'; +import { Account } from '@/components/Account'; +import { AccountTS } from '@/components/AccountTS'; +import { Balance } from '@/components/Balance'; +import { BalanceTS } from '@/components/BalanceTS'; +import { Block } from '@/components/Block'; +import { BlockTS } from '@/components/BlockTS'; +import { SendTx } from '@/components/SendTx'; +import { SendTxTS } from '@/components/SendTxTS'; +import { SendTxPrepared } from '@/components/SendTxPrepared'; +import { SendTxPreparedTS } from '@/components/SendTxPreparedTS'; +import { SignMessage } from '@/components/SignMessage'; +import { SignMessageTS } from '@/components/SignMessageTS'; +import { SignTypedData } from '@/components/SignTypedData'; +import { SignTypedDataTS } from '@/components/SignTypedDataTS'; +import { ReadContract } from '@/components/ReadContract'; +import { ReadContractTS } from '@/components/ReadContractTS'; +import { WriteContract } from '@/components/WriteContract'; +import { WriteContractTS } from '@/components/WriteContractTS'; + +export default function Home() { + const [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + }, []); + + return ( + <> + + Wagmi ZKsync Demo + + + + +
+
+ {mounted && ( + <> + + + + + + + + + + + + + + + + + + + + + + + + )} +
+
+ + ); +} diff --git a/code/wagmi/src/utils/account.ts b/code/wagmi/src/utils/account.ts new file mode 100644 index 00000000..dd711bc2 --- /dev/null +++ b/code/wagmi/src/utils/account.ts @@ -0,0 +1,7 @@ +import { getAccount } from '@wagmi/core'; +import { config } from '../../wagmi-config'; + +export function fetchAccount() { + const { address } = getAccount(config); + return address; +} diff --git a/code/wagmi/src/utils/balance.ts b/code/wagmi/src/utils/balance.ts new file mode 100644 index 00000000..ce0ac113 --- /dev/null +++ b/code/wagmi/src/utils/balance.ts @@ -0,0 +1,8 @@ +import { getBalance } from '@wagmi/core'; +import { config } from '../../wagmi-config'; + +export async function fetchBalance() { + const address = '0xBC989fDe9e54cAd2aB4392Af6dF60f04873A033A'; + const balance = await getBalance(config, { address }); + return balance.value; +} diff --git a/code/wagmi/src/utils/block.ts b/code/wagmi/src/utils/block.ts new file mode 100644 index 00000000..1357ffd5 --- /dev/null +++ b/code/wagmi/src/utils/block.ts @@ -0,0 +1,7 @@ +import { getBlockNumber } from '@wagmi/core'; +import { config } from '../../wagmi-config'; + +export async function fetchLatestBlockNumber() { + const blockNumber = await getBlockNumber(config); + return blockNumber; +} diff --git a/code/wagmi/src/utils/connect.ts b/code/wagmi/src/utils/connect.ts new file mode 100644 index 00000000..7dc8adfc --- /dev/null +++ b/code/wagmi/src/utils/connect.ts @@ -0,0 +1,11 @@ +import { connect } from '@wagmi/core'; +import { injected } from '@wagmi/connectors'; +import { config } from '../../wagmi-config'; + +export async function connectWallet() { + try { + await connect(config, { connector: injected() }); + } catch (error) { + console.error('ERROR CONNECTING:', error); + } +} diff --git a/code/wagmi/src/utils/connectors.ts b/code/wagmi/src/utils/connectors.ts new file mode 100644 index 00000000..1a923e38 --- /dev/null +++ b/code/wagmi/src/utils/connectors.ts @@ -0,0 +1,7 @@ +import { getConnectors } from '@wagmi/core'; +import { config } from '../../wagmi-config'; + +export function fetchConnectors() { + const connectors = getConnectors(config); + return connectors; +} diff --git a/code/wagmi/src/utils/message.ts b/code/wagmi/src/utils/message.ts new file mode 100644 index 00000000..d97a716a --- /dev/null +++ b/code/wagmi/src/utils/message.ts @@ -0,0 +1,7 @@ +import { signMessage } from '@wagmi/core'; +import { config } from '../../wagmi-config'; + +export async function getSignedMessage(message: string) { + const signature = await signMessage(config, { message }); + return signature; +} diff --git a/code/wagmi/src/utils/prepareTx.ts b/code/wagmi/src/utils/prepareTx.ts new file mode 100644 index 00000000..5854fd87 --- /dev/null +++ b/code/wagmi/src/utils/prepareTx.ts @@ -0,0 +1,12 @@ +import { prepareTransactionRequest } from '@wagmi/core'; +import { parseEther } from 'viem'; +import { config } from '../../wagmi-config'; + +export async function prepareTx(to: `0x${string}`, value: `${number}`) { + const tx = await prepareTransactionRequest(config, { + to, + value: parseEther(value), + }); + + return tx; +} diff --git a/code/wagmi/src/utils/read.ts b/code/wagmi/src/utils/read.ts new file mode 100644 index 00000000..1327207c --- /dev/null +++ b/code/wagmi/src/utils/read.ts @@ -0,0 +1,14 @@ +import { readContract } from '@wagmi/core'; +import { config } from '../../wagmi-config'; +import * as erc20TokenABI from '../../../frontend-paymaster/contracts/artifacts-zk/contracts/erc20/MyERC20Token.sol/MyERC20Token.json'; + +const CONTRACT_ADDRESS = '0x9c1a3d7C98dBF89c7f5d167F2219C29c2fe775A7'; + +export async function readERC20Contract(functionName: string) { + const data = await readContract(config, { + abi: erc20TokenABI.abi, + address: CONTRACT_ADDRESS, + functionName: functionName, + }); + return data; +} diff --git a/code/wagmi/src/utils/sendTx.ts b/code/wagmi/src/utils/sendTx.ts new file mode 100644 index 00000000..dd588e82 --- /dev/null +++ b/code/wagmi/src/utils/sendTx.ts @@ -0,0 +1,12 @@ +import { sendTransaction } from '@wagmi/core'; +import { parseEther } from 'viem'; +import { config } from '../../wagmi-config'; + +export async function sendTx(address: `0x${string}`, value: `${number}`) { + const result = await sendTransaction(config, { + to: address, + value: parseEther(value), + }); + + return result; +} diff --git a/code/wagmi/src/utils/signTyped.ts b/code/wagmi/src/utils/signTyped.ts new file mode 100644 index 00000000..d085471d --- /dev/null +++ b/code/wagmi/src/utils/signTyped.ts @@ -0,0 +1,7 @@ +import { signTypedData, type SignTypedDataParameters } from '@wagmi/core'; +import { config } from '../../wagmi-config'; + +export async function getSignedTypedData(data: SignTypedDataParameters) { + const signature = await signTypedData(config, data); + return signature; +} diff --git a/code/wagmi/src/utils/write.ts b/code/wagmi/src/utils/write.ts new file mode 100644 index 00000000..335c7481 --- /dev/null +++ b/code/wagmi/src/utils/write.ts @@ -0,0 +1,15 @@ +import { readContract } from '@wagmi/core'; +import { config } from '../../wagmi-config'; +import * as greeterABI from '../../../frontend-paymaster/contracts/artifacts-zk/contracts/Greeter.sol/Greeter.json'; + +const CONTRACT_ADDRESS = '0xCeAB1fc2693930bbad33024D270598c620D7A52B'; + +export async function writeToGreeterContract(greeting: string) { + const data = await readContract(config, { + abi: greeterABI.abi, + address: CONTRACT_ADDRESS, + functionName: 'setGreeting', + args: [greeting], + }); + return data; +} diff --git a/code/wagmi/tsconfig.json b/code/wagmi/tsconfig.json new file mode 100644 index 00000000..572b7ad3 --- /dev/null +++ b/code/wagmi/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"], + "exclude": ["node_modules"] +} diff --git a/code/wagmi/wagmi-config.ts b/code/wagmi/wagmi-config.ts new file mode 100644 index 00000000..fd6717ab --- /dev/null +++ b/code/wagmi/wagmi-config.ts @@ -0,0 +1,18 @@ +import { http, createConfig } from '@wagmi/core'; +import { zksync, zksyncSepoliaTestnet, zksyncInMemoryNode, zksyncLocalNode } from '@wagmi/core/chains'; +import { walletConnect } from '@wagmi/connectors'; + +export const config = createConfig({ + chains: [zksync, zksyncSepoliaTestnet, zksyncInMemoryNode, zksyncLocalNode], + connectors: [ + walletConnect({ + projectId: 'd4a7167a6eed6a53c8364631aaeca861', + }), + ], + transports: { + [zksync.id]: http(), + [zksyncSepoliaTestnet.id]: http(), + [zksyncInMemoryNode.id]: http(), + [zksyncLocalNode.id]: http(), + }, +}); diff --git a/content/tutorials/guide-viem/_dir.yml b/content/tutorials/guide-viem/_dir.yml index e2412e89..035f39a0 100644 --- a/content/tutorials/guide-viem/_dir.yml +++ b/content/tutorials/guide-viem/_dir.yml @@ -8,6 +8,7 @@ github_repo: https://github.com/matter-labs tags: - guide - viem + - frontend summary: This page will explain how to use the viem/zksync plugin to interact with ZKsync. description: This guide outlines how to use the ZKsync viem plugin to interact with ZKsync and use specific actions like sending diff --git a/content/tutorials/guide-wagmi/10.index.md b/content/tutorials/guide-wagmi/10.index.md index 4da524ce..c2197a85 100644 --- a/content/tutorials/guide-wagmi/10.index.md +++ b/content/tutorials/guide-wagmi/10.index.md @@ -11,507 +11,212 @@ For setup instructions, consult the official documentation [here](https://wagmi. Wagmi hooks do not yet support Paymasters and native Account Abstraction; development is in progress. :: +## Project Setup + +### Installing Dependencies + +::code-group + +```bash [npm] +npm install @wagmi/core @wagmi/connectors viem@2.x +``` + +```bash [yarn] +yarn add @wagmi/core @wagmi/connectors viem@2.x +``` + +```bash [pnpm] +pnpm add @wagmi/core @wagmi/connectors viem@2.x +``` + +```bash [bun] +bun add @wagmi/core @wagmi/connectors viem@2.x +``` + +:: + +For React projects, you can also make use of the `wagmi` package: + +::code-group + +```bash [npm] +npm install wagmi viem@2.x @tanstack/react-query +``` + +```bash [yarn] +yarn add wagmi viem@2.x @tanstack/react-query +``` + +```bash [pnpm] +pnpm add wagmi viem@2.x @tanstack/react-query +``` + +```bash [bun] +bun add wagmi viem@2.x @tanstack/react-query +``` + +:: + +### Configuration + +Make a file called `wagmi-config.ts` and configure your preferred ZKsync network. + +```ts [wagmi-config.ts] +:code-import{filePath="wagmi/wagmi-config.ts"} +``` + Here are some common actions: ## Connect Wallet - -```typescript -import { w3mConnectors, w3mProvider } from "@web3modal/ethereum"; -import { configureChains, createConfig } from "wagmi"; -import { zkSync, zkSyncTestnet } from "wagmi/chains"; - -export const walletConnectProjectId = "d4a7167a6eed6a53c8364631aaeca861"; - -const { chains, publicClient, webSocketPublicClient } = configureChains( - [zkSync, ...(import.meta.env?.MODE === "development" ? [zkSyncTestnet] : [])], - [w3mProvider({ projectId: walletConnectProjectId })] -); - -export const config = createConfig({ - autoConnect: true, - connectors: w3mConnectors({ - chains, - projectId: walletConnectProjectId, - version: 2, - }), - publicClient, - webSocketPublicClient, -}); - -export { chains }; + +### `connect` Method + +```jsx [connect.ts] +:code-import{filePath="wagmi/src/utils/connect.ts"} ``` - + +### `useConnect` Hook + +```jsx [ConnectWallet.tsx] +:code-import{filePath="wagmi/src/components/ConnectWallet.tsx"} +``` + ## Display Wallet Options -```typescript -import { useConnect } from "wagmi"; - -export function WalletOptions() { - const { connect, connectors, error, isLoading, pendingConnector } = useConnect(); - console.log(connectors); - - return ( -
- {connectors.map((connector) => ( - - ))} - - {error &&
{error.message}
} -
- ); -} +### `getConnectors` Method + +```ts [connectors.ts] +:code-import{filePath="wagmi/src/utils/connectors.ts"} +``` + +### `useConnectors` Hook + +```jsx [ShowConnectors.tsx] +:code-import{filePath="wagmi/src/components/ShowConnectors.tsx"} ``` ## Fetch Account -```typescript -import { useAccount } from "wagmi"; +### `getAccount` Method -export function Account() { - const { address } = useAccount(); +```ts [account.ts] +:code-import{filePath="wagmi/src/utils/account.ts"} +``` - return
{address}
; -} +### `useAccount` Hook + +```jsx [Account.tsx] +:code-import{filePath="wagmi/src/components/Account.tsx"} ``` ## Fetch Balance -```typescript -import { useState } from "react"; -import type { Address } from "wagmi"; -import { useAccount, useBalance } from "wagmi"; - -export function Balance() { - return ( - <> -
- -
-
-
- -
- - ); -} - -export function AccountBalance() { - const { address } = useAccount(); - const { data, refetch } = useBalance({ - address, - watch: true, - }); - - return ( -
- {data?.formatted} - -
- ); -} - -export function FindBalance() { - const [address, setAddress] = useState(""); - const { data, isLoading, refetch } = useBalance({ - address: address as Address, - }); - - const [value, setValue] = useState(""); - - return ( -
- Find balance: setValue(e.target.value)} placeholder="wallet address" value={value} /> - -
{data?.formatted}
-
- ); -} +### `getBalance` Method + +```ts [balance.ts] +:code-import{filePath="wagmi/src/utils/balance.ts"} +``` + +### `useBalance` Hook + +```jsx [Balance.tsx] +:code-import{filePath="wagmi/src/components/Balance.tsx"} ``` ## Fetch Block Number -```typescript -import { useBlockNumber } from "wagmi"; +### `getBlockNumber` Method -export function BlockNumber() { - const { data } = useBlockNumber({ watch: true }); - return
{data?.toString()}
; -} +```ts [block.ts] +:code-import{filePath="wagmi/src/utils/block.ts"} +``` + +### `useBlockNumber` Hook + +```jsx [Block.tsx] +:code-import{filePath="wagmi/src/components/Block.tsx"} ``` ## Send Transaction -```typescript -import { parseEther } from "viem"; -import { useSendTransaction, useWaitForTransaction } from "wagmi"; - -import { stringify } from "../utils/stringify"; - -export function SendTransaction() { - const { data, error, isLoading, isError, sendTransaction } = useSendTransaction(); - const { data: receipt, isLoading: isPending, isSuccess } = useWaitForTransaction({ hash: data?.hash }); - - return ( - <> -
{ - e.preventDefault(); - const formData = new FormData(e.target as HTMLFormElement); - const address = formData.get("address") as string; - const value = formData.get("value") as `${number}`; - sendTransaction({ - to: address, - value: parseEther(value), - }); - }} - > - - - -
- - {isLoading &&
Check wallet...
} - {isPending &&
Transaction pending...
} - {isSuccess && ( - <> -
Transaction Hash: {data?.hash}
-
- Transaction Receipt:
{stringify(receipt, null, 2)}
-
- - )} - {isError &&
Error: {error?.message}
} - - ); -} +### `sendTransaction` Method + +```ts [sendTx.ts] +:code-import{filePath="wagmi/src/utils/sendTx.ts"} +``` + +### `useSendTransaction` Hook + +```jsx [SendTx.tsx] +:code-import{filePath="wagmi/src/components/SendTx.tsx"} ``` ## Send Transaction (Prepared) -```typescript -import { useState } from "react"; -import { parseEther, stringify } from "viem"; -import { usePrepareSendTransaction, useSendTransaction, useWaitForTransaction } from "wagmi"; - -import { useDebounce } from "../hooks/useDebounce"; - -export function SendTransactionPrepared() { - const [to, setTo] = useState(""); - const debouncedTo = useDebounce(to); - - const [value, setValue] = useState(""); - const debouncedValue = useDebounce(value); - - const { config } = usePrepareSendTransaction({ - to: debouncedTo, - value: debouncedValue ? parseEther(value as `${number}`) : undefined, - enabled: Boolean(debouncedTo && debouncedValue), - }); - const { data, error, isLoading, isError, sendTransaction } = useSendTransaction(config); - const { data: receipt, isLoading: isPending, isSuccess } = useWaitForTransaction({ hash: data?.hash }); - - return ( - <> -
{ - e.preventDefault(); - sendTransaction?.(); - }} - > - setTo(e.target.value)} value={to} /> - setValue(e.target.value)} value={value} /> - -
- - {isLoading &&
Check wallet...
} - {isPending &&
Transaction pending...
} - {isSuccess && ( - <> -
Transaction Hash: {data?.hash}
-
- Transaction Receipt:
{stringify(receipt, null, 2)}
-
- - )} - {isError &&
Error: {error?.message}
} - - ); -} +### `prepareTransactionRequest` Method + +```ts [prepareTx.ts] +:code-import{filePath="wagmi/src/utils/prepareTx.ts"} +``` + +### `usePrepareTransactionRequest` Hook + +```jsx [SendTxPrepared.tsx] +:code-import{filePath="wagmi/src/components/SendTxPrepared.tsx"} ``` ## Sign Message -```typescript -import { useEffect, useState } from "react"; -import { recoverMessageAddress } from "viem"; -import { type Address, useSignMessage } from "wagmi"; - -export function SignMessage() { - const [recoveredAddress, setRecoveredAddress] = useState
(); - const { data: signature, variables, error, isLoading, signMessage } = useSignMessage(); - - useEffect(() => { - (async () => { - if (variables?.message && signature) { - const recoveredAddress = await recoverMessageAddress({ - message: variables?.message, - signature, - }); - setRecoveredAddress(recoveredAddress); - } - })(); - }, [signature, variables?.message]); - - return ( - <> -
{ - event.preventDefault(); - const element = event.target as HTMLFormElement; - const formData = new FormData(element); - const message = formData.get("message") as string; - signMessage({ message }); - }} - > - - -
- - {signature && ( -
-
Signature: {signature}
-
Recovered address: {recoveredAddress}
-
- )} - {error &&
Error: {error?.message}
} - - ); -} +### `signMessage` Method + +```ts [message.ts] +:code-import{filePath="wagmi/src/utils/message.ts"} +``` + +### `useSignMessage` Hook + +```jsx [SignMessage.tsx] +:code-import{filePath="wagmi/src/components/SignMessage.tsx"} ``` ## Sign Typed Data -```typescript -import { useEffect, useState } from "react"; -import { recoverTypedDataAddress } from "viem"; -import { type Address, useSignTypedData } from "wagmi"; - -const domain = { - name: "Ether Mail", - version: "1", - chainId: 280 || 324, - verifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC", -} as const; - -const types = { - Person: [ - { name: "name", type: "string" }, - { name: "wallet", type: "address" }, - ], - Mail: [ - { name: "from", type: "Person" }, - { name: "to", type: "Person" }, - { name: "contents", type: "string" }, - ], -} as const; - -const message = { - from: { - name: "Cow", - wallet: "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826", - }, - to: { - name: "Bob", - wallet: "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB", - }, - contents: "Hello, Bob!", -} as const; - -export function SignTypedData() { - const { data, error, isLoading, signTypedData } = useSignTypedData({ - domain, - types, - message, - primaryType: "Mail", - }); - - const [recoveredAddress, setRecoveredAddress] = useState
(); - useEffect(() => { - if (!data) return; - (async () => { - setRecoveredAddress( - await recoverTypedDataAddress({ - domain, - types, - message, - primaryType: "Mail", - signature: data, - }) - ); - })(); - }, [data]); - - return ( - <> - - - {data && ( -
-
Signature: {data}
-
Recovered address {recoveredAddress}
-
- )} - {error &&
Error: {error?.message}
} - - ); -} +### `signTypedData` Method + +```ts [signTyped.ts] +:code-import{filePath="wagmi/src/utils/signTyped.ts"} +``` + +### `useSignTypedData` Hook + +```jsx [SignTypedData.tsx] +:code-import{filePath="wagmi/src/components/SignTypedData.tsx"} ``` ## Read Contract -```typescript -import { useState } from "react"; -import { BaseError } from "viem"; -import { type Address, useContractRead } from "wagmi"; - -import { erc20TokenABI } from "./contracts"; - -export function ReadContract() { - return ( -
-
- -
- -
-
- ); -} - -function TotalSupply() { - const { data, isRefetching, refetch } = useContractRead({ - ...erc20TokenABI, - functionName: "totalSupply", - }); - - return ( -
- Total Supply: {data?.toString()} - -
- ); -} - -function BalanceOf() { - const [address, setAddress] = useState
("0x3e7676937A7E96CFB7616f255b9AD9FF47363D4b"); - const { data, error, isLoading, isSuccess } = useContractRead({ - ...erc20TokenABI, - functionName: "balanceOf", - args: [address], - enabled: Boolean(address), - }); - - const [value, setValue] = useState(address); - - return ( -
- Token balance: {isSuccess && data?.toString()} - setValue(e.target.value)} placeholder="wallet address" style={{ marginLeft: 4 }} value={value} /> - - {error &&
{(error as BaseError).shortMessage}
} -
- ); -} +### `readContract` Method + +```ts [signTyped.ts] +:code-import{filePath="wagmi/src/utils/read.ts"} ``` -## Token - -```typescript -import { useState } from "react"; -import { type Address, useToken } from "wagmi"; - -export function Token() { - const [address, setAddress] = useState
("0x3e7676937A7E96CFB7616f255b9AD9FF47363D4b"); - const { data, error, isError, isLoading, refetch } = useToken({ address }); - - return ( - <> -
- setAddress(e.target.value as Address)} placeholder="token address" value={address} /> - -
- - {data && ( -
- {data.totalSupply?.formatted} {data.symbol} -
- )} - {isLoading &&
Fetching token...
} - {isError &&
Error: {error?.message}
} - - ); -} +### `useReadContract` Hook + +```jsx [ReadContract.tsx] +:code-import{filePath="wagmi/src/components/ReadContract.tsx"} ``` ## Write Contract -```typescript -import { BaseError } from "viem"; -import { useContractWrite, useWaitForTransaction } from "wagmi"; - -import { erc721Contract } from "./contracts"; -import { stringify } from "../utils/stringify"; - -export function WriteContract() { - const { write, data, error, isLoading, isError } = useContractWrite({ - ...erc721Contract, - functionName: "mint", - }); - const { data: receipt, isLoading: isPending, isSuccess } = useWaitForTransaction({ hash: data?.hash }); - - return ( - <> -

Mint an NFT

-
{ - e.preventDefault(); - const formData = new FormData(e.target as HTMLFormElement); - const tokenId = formData.get("tokenId") as string; - write({ - args: [BigInt(tokenId)], - }); - }} - > - - -
- - {isLoading &&
Check wallet...
} - {isPending &&
Transaction pending...
} - {isSuccess && ( - <> -
Transaction Hash: {data?.hash}
-
- Transaction Receipt:
{stringify(receipt, null, 2)}
-
- - )} - {isError &&
{(error as BaseError)?.shortMessage}
} - - ); -} +### `writeContract` Method + +```ts [write.ts] +:code-import{filePath="wagmi/src/utils/write.ts"} +``` + +### `useWriteContract` Hook + +```jsx [WriteContract.tsx] +:code-import{filePath="wagmi/src/components/WriteContract.tsx"} ``` diff --git a/content/tutorials/guide-wagmi/_dir.yml b/content/tutorials/guide-wagmi/_dir.yml index a4036575..4de6d2c1 100644 --- a/content/tutorials/guide-wagmi/_dir.yml +++ b/content/tutorials/guide-wagmi/_dir.yml @@ -7,6 +7,7 @@ github_repo: https://github.com/matter-labs tags: - guide - wagmi + - frontend summary: Learn how to use the Wagmi toolkit to create websites that interact with contracts on ZKsync description: This guide outlines how to use the wagmi library to create websites that interact with ZKsync contracts. We provide diff --git a/content/tutorials/guide-walletconnect/_dir.yml b/content/tutorials/guide-walletconnect/_dir.yml index 38d29c8f..86946ab4 100644 --- a/content/tutorials/guide-walletconnect/_dir.yml +++ b/content/tutorials/guide-walletconnect/_dir.yml @@ -7,6 +7,7 @@ github_repo: https://github.com/matter-labs tags: - guide - walletconnect + - frontend summary: Learn how to use WalletConnect to create React apps that interact with contracts on ZKsync. description: This guide outlines how to use WalletConnect and Web3Modal to create React apps that interact with contracts on ZKsync diff --git a/content/tutorials/guide-web3js/_dir.yml b/content/tutorials/guide-web3js/_dir.yml index a380720e..86329fe0 100644 --- a/content/tutorials/guide-web3js/_dir.yml +++ b/content/tutorials/guide-web3js/_dir.yml @@ -8,6 +8,7 @@ github_repo: https://github.com/ChainSafe tags: - guide - web3.js + - frontend summary: This guide will teach you how to set up and use Web3.js to interact with ZKsync, leveraging the ZKsync Web3.js plugin. description: diff --git a/pages/tutorials/index.vue b/pages/tutorials/index.vue index 65d63a9a..feef75b2 100644 --- a/pages/tutorials/index.vue +++ b/pages/tutorials/index.vue @@ -24,7 +24,7 @@ const allTags = computed(() => { const uniqueTags = computed(() => [...new Set(allTags.value)]); -const activeTag = ref(uniqueTags.value[0] || ''); +const activeTag = ref(''); const isExpanded = ref(false); const defaultCount = 6;