in this tutorial, we want to read data stored in blockchain via our app.
import { ethers } from 'ethers';
import React, { useEffect, useState } from 'react'
function App() {
const [contractName,setContractName] = useState();
const [contractSymbol, setContractSymbol] = useState();
const provider = new ethers.providers.Web3Provider(window.ethereum)
const signer = provider.getSigner()
const address = provider.getSigner().getAddress()
const daiAddress = "xxxx"; // set your contract address here
const daiAbi = [
"function name() view returns (string)",
"function symbol() view returns (string)",
]
const daiContract = new ethers.Contract(daiAddress, daiAbi, provider);
const getRead = async () => {
try {
const name = await daiContract.name()
setContractName(name)
const symbol = await daiContract.symbol()
setContractSymbol(symbol)
} catch (error) {
console.log(error)
}
}
useEffect(() => {
getRead();
return () => {
}
}, [])
return (
</Box>
<Text>Contract : {contractName? contractName : ""}</Text>
<Text>Symbol : {contractName? contractName : ""}</Text>
<Text>
</Box>
)
}
export default App
You can also read other variables in a contract by declaring functions in your daiAbi
const daiAbi = [
"function name() view returns (string)",
"function symbol() view returns (string)",
"function balanceOf(address) view returns(uint256)"
]
// Some code
const getRead = async () => {
try {
const name = await daiContract.name()
setContractName(name)
const symbol = await daiContract.symbol()
setContractSymbol(symbol)
const balance = await daiContract.balanceOf(address)
setContractBalance(parseInt(balance._hex))
} catch (error) {
console.log(error)
}
}
return (
</Box>
<Text>Contract : {contractName? contractName : ""}</Text>
<Text>Symbol : {contractName? contractName : ""}</Text>
<Text>balance : {contractBalance? contractBalance : ""}</Text>
<Text>
</Box>
)