Web3 & DApp Development Fundamentals · Ders

İşlem Gönderme

Zincire yazın

3. ders / 413 adım

İşlem Gönderme, CoddyKit'te ücretsiz bir Web3 & DApp Development Fundamentals dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Web3 & DApp Development Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Web3 & DApp Development Fundamentals kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

Writing to the Chain

Changing contract state — transferring tokens, minting, voting — requires a transaction. Transactions must be signed and cost gas.

For this you need a signer, not just a provider.

A Contract with a Signer

To send transactions, create the contract with a signer or connect an existing instance to one:

const contract = new ethers.Contract( address, abi, signer ); // or const writable = readOnly.connect(signer);

Now state-changing functions become available.

const contract = new ethers.Contract(
  address,
  abi,
  signer
);
// or
const writable = readOnly.connect(signer);

Sending a Transaction

Calling a write function sends a transaction and returns a transaction response immediately — before it is mined:

const tx = await contract.transfer( recipient, ethers.parseUnits("10", 18) ); console.log("Sent:", tx.hash);

The hash identifies the pending transaction.

const tx = await contract.transfer(
  recipient,
  ethers.parseUnits("10", 18)
);
console.log("Sent:", tx.hash);

Waiting for Confirmation

The transaction is not final until it is mined. Wait for the receipt:

const receipt = await tx.wait(); console.log("Mined in block:", receipt.blockNumber); console.log("Status:", receipt.status);

A status of 1 means success; 0 means it reverted.

const receipt = await tx.wait();
console.log("Mined in block:", receipt.blockNumber);
console.log("Status:", receipt.status);

Waiting for More Blocks

For higher confidence against reorgs, wait for several confirmations:

// Wait for 3 confirmations const receipt = await tx.wait(3);

More confirmations mean it is increasingly unlikely the transaction will be reversed.

// Wait for 3 confirmations
const receipt = await tx.wait(3);

Sending ETH with a Call

Payable functions accept ETH. Pass a value override as the last argument:

const tx = await contract.deposit({ value: ethers.parseEther("0.5"), }); await tx.wait();

The value is in wei; parseEther converts from a human amount.

const tx = await contract.deposit({
  value: ethers.parseEther("0.5"),
});
await tx.wait();

Estimating Gas

Before sending, you can estimate how much gas a call will use:

const gas = await contract.transfer .estimateGas(recipient, amount); console.log("Estimated gas:", gas);

If the function would revert, estimation throws — a useful early warning.

const gas = await contract.transfer
  .estimateGas(recipient, amount);
console.log("Estimated gas:", gas);

Setting Gas Overrides

You can override gas parameters when needed, for example on EIP-1559 chains:

const tx = await contract.transfer(recipient, amount, { gasLimit: 100000, maxFeePerGas: ethers.parseUnits("30", "gwei"), maxPriorityFeePerGas: ethers.parseUnits("2", "gwei"), });

Usually the wallet picks sensible defaults, so override only when you must.

const tx = await contract.transfer(recipient, amount, {
  gasLimit: 100000,
  maxFeePerGas: ethers.parseUnits("30", "gwei"),
  maxPriorityFeePerGas: ethers.parseUnits("2", "gwei"),
});

Handling Failures

Transactions can fail by reverting, being underpriced, or by user rejection in a wallet. Wrap sends in try/catch:

try { const tx = await contract.transfer(to, amount); await tx.wait(); } catch (err) { console.error("Transaction failed:", err.shortMessage); }
try {
  const tx = await contract.transfer(to, amount);
  await tx.wait();
} catch (err) {
  console.error("Transaction failed:", err.shortMessage);
}

Nonces and Ordering

Each account has a nonce — a counter ensuring transactions execute in order. ethers manages it automatically, but if you send many transactions quickly you may set it manually to avoid collisions:

const tx = await contract.mint({ nonce: 42 });

Mismatched nonces cause transactions to get stuck or replaced.

const tx = await contract.mint({ nonce: 42 });

Reading Events from a Receipt

After mining, you can inspect the events emitted by your transaction from the receipt logs:

const receipt = await tx.wait(); for (const log of receipt.logs) { const parsed = contract.interface.parseLog(log); if (parsed) console.log(parsed.name, parsed.args); }

This confirms the contract did what you expected.

const receipt = await tx.wait();
for (const log of receipt.logs) {
  const parsed = contract.interface.parseLog(log);
  if (parsed) console.log(parsed.name, parsed.args);
}

Quick Check

Test your understanding of sending transactions.

Recap

You learned to send state-changing transactions.

  • Writes require a signer; attach one with connect or at construction.
  • A write call returns a pending tx; tx.wait() gives the mined receipt.
  • Check receipt.status; wait for more confirmations against reorgs.
  • Send ETH via a value override; estimate cost with estimateGas.
  • Handle failures with try/catch and mind the account nonce.
Başlamak ücretsiz

Yapay zeka eğitmeniyle Web3 & DApp Development Fundamentals öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
29
Dersler
105

Sıkça Sorulan Sorular

“İşlem Gönderme” dersi ücretsiz mi?

Evet — “İşlem Gönderme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Web3 & DApp Development Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Web3 & DApp Development Fundamentals kursu toplamda 4 dersten oluşur.

“İşlem Gönderme” dersinde ne öğreneceğim?

Zincire yazın Web3 & DApp Development Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Web3 & DApp Development Fundamentals öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Web3 & DApp Development Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“İşlem Gönderme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Web3 & DApp Development Fundamentals dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Web3 & DApp Development Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Sağlayıcıya Bağlanma
  2. Sözleşme Verilerini Okuma
  3. İşlem Gönderme
  4. Olayları Dinleme
← Web3 & DApp Development Fundamentals Sayfasına Dön