0Pricing
Web3 & DApp Development Fundamentals · Lektion

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 await the result.
  • Numeric returns are BigInt; convert with formatUnits/formatEther.
  • Destructure multiple return values; query the past with blockTag.
  • Use staticCall to 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

  1. Mit einem Provider verbinden
  2. Contract-Daten lesen
  3. Transaktionen senden
  4. Events abonnieren
← Zurück zu Web3 & DApp Development Fundamentals