Contract-Daten lesen
view-Funktionen aufrufen
Contract-Daten lesen ist eine kostenlose Web3 & DApp Development Fundamentals-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Web3 & DApp Development Fundamentals-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Web3 & DApp Development Fundamentals-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Calling View Functions
Reading data from a contract is free — it does not change state, cost gas, or require a signature. These are view and pure functions.
With ethers.js you attach to a deployed contract and call them like normal JavaScript methods.
You Need the ABI
To talk to a contract, ethers needs its ABI — the interface describing each function. You can use the full compiled ABI or a minimal human-readable one:
const abi = [
"function name() view returns (string)",
"function balanceOf(address) view returns (uint256)",
];const abi = [
"function name() view returns (string)",
"function balanceOf(address) view returns (uint256)",
];Creating a Contract Instance
Combine the address, ABI, and a provider to create a read-only contract object:
const contract = new ethers.Contract(
tokenAddress,
abi,
provider
);Because it was given a provider (not a signer), it can only read.
const contract = new ethers.Contract(
tokenAddress,
abi,
provider
);Calling a Read Method
Call any view function and await the result:
const name = await contract.name();
const supply = await contract.totalSupply();
console.log(name, supply);Each call returns a Promise that resolves to the decoded value.
const name = await contract.name();
const supply = await contract.totalSupply();
console.log(name, supply);Passing Arguments
View functions can take parameters. Pass them like normal function arguments:
const balance = await contract.balanceOf(
"0xUserAddress"
);
console.log(ethers.formatUnits(balance, 18));ethers encodes the arguments according to the ABI types automatically.
const balance = await contract.balanceOf(
"0xUserAddress"
);
console.log(ethers.formatUnits(balance, 18));Handling Returned Numbers
Numeric returns are BigInt in ethers v6. To display token amounts, convert with the right decimals:
const raw = await contract.balanceOf(user);
const human = ethers.formatUnits(raw, 18);Use formatUnits/parseUnits for tokens, formatEther/parseEther for ETH (18 decimals).
const raw = await contract.balanceOf(user);
const human = ethers.formatUnits(raw, 18);Returns with Multiple Values
If a function returns several values, ethers gives you a result array you can destructure:
const [reserve0, reserve1, timestamp] =
await pair.getReserves();
console.log(reserve0, reserve1);Named return values are also accessible by name on the result object.
const [reserve0, reserve1, timestamp] =
await pair.getReserves();
console.log(reserve0, reserve1);Reading at a Past Block
You can query historical state by passing a block tag as an override:
const oldBalance = await contract.balanceOf(
user,
{ blockTag: 19000000 }
);This requires an archive node, but lets you reconstruct past state.
const oldBalance = await contract.balanceOf(
user,
{ blockTag: 19000000 }
);Static Calls on Write Functions
Sometimes you want to simulate a state-changing function without sending it, to read its would-be result or check it does not revert:
const result = await contract.transfer
.staticCall(to, amount);
console.log("Would return:", result);This runs the call locally without broadcasting a transaction.
const result = await contract.transfer
.staticCall(to, amount);
console.log("Would return:", result);Reads Are Free
Because view calls execute on the node without changing state:
- They cost no gas for the caller.
- They need no signer or wallet approval.
- They return almost instantly.
Only state changes require a transaction and gas.
Using a Hardhat-Attached Instance
In Hardhat scripts you can attach to a deployed address without writing the ABI by hand, since artifacts are already compiled:
const token = await ethers.getContractAt(
"MyToken",
deployedAddress
);
console.log(await token.totalSupply());ethers loads the ABI from the artifact for you.
const token = await ethers.getContractAt(
"MyToken",
deployedAddress
);
console.log(await token.totalSupply());Quick Check
Test your understanding of reading contract data.
Recap
You learned to read on-chain data.
- Create a contract with address + ABI + provider for read-only access.
- Call view functions like normal methods and
awaitthe result. - Numeric returns are BigInt; convert with
formatUnits/formatEther. - Destructure multiple return values; query the past with
blockTag. - Use
staticCallto simulate write functions; reads are free.
Häufig gestellte Fragen
Ist die Lektion „Contract-Daten lesen“ kostenlos?
Ja — der vollständige Text von „Contract-Daten lesen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Web3 & DApp Development Fundamentals-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Web3 & DApp Development Fundamentals-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Contract-Daten lesen“?
view-Funktionen aufrufen Du übst Web3 & DApp Development Fundamentals mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Web3 & DApp Development Fundamentals zu starten?
Keine Vorkenntnisse erforderlich. Web3 & DApp Development Fundamentals auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Contract-Daten lesen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Web3 & DApp Development Fundamentals-Lektion Code schreiben und ausführen?
Ja. Jede Web3 & DApp Development Fundamentals-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Mit einem Provider verbinden
- Contract-Daten lesen
- Transaktionen senden
- Events abonnieren