Skicka transaktioner
Skriva till kedjan
Skicka transaktioner är en gratis lektion i Grunderna i Web3- och DApp-utveckling på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Grunderna i Web3- och DApp-utveckling, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.
Skriva till kedjan
Att ändra kontraktets tillstånd – överföra tokens, skapa nya tokens eller rösta – kräver en transaktion. Transaktioner måste signeras och kostar gas.
För detta behöver Ni en signer, inte bara en provider.
Ett kontrakt med en signer
För att skicka transaktioner skapar Ni kontraktet med en signer eller ansluter en befintlig instans till en:
const contract = new ethers.Contract(
address,
abi,
signer
);
// or
const writable = readOnly.connect(signer);Nu blir funktioner som ändrar tillstånd tillgängliga.
const contract = new ethers.Contract(
address,
abi,
signer
);
// or
const writable = readOnly.connect(signer);Skicka en transaktion
Att anropa en skrivfunktion skickar en transaktion och returnerar omedelbart ett transaktionssvar – innan den har utvunnits:
const tx = await contract.transfer(
recipient,
ethers.parseUnits("10", 18)
);
console.log("Sent:", tx.hash);Hashvärdet identifierar den väntande transaktionen.
const tx = await contract.transfer(
recipient,
ethers.parseUnits("10", 18)
);
console.log("Sent:", tx.hash);Vänta på bekräftelse
Transaktionen är inte slutgiltig förrän den har utvunnits. Vänta på kvittot:
const receipt = await tx.wait();
console.log("Mined in block:", receipt.blockNumber);
console.log("Status:", receipt.status);Ett status på 1 betyder att den lyckades; 0 betyder att den återställdes.
const receipt = await tx.wait();
console.log("Mined in block:", receipt.blockNumber);
console.log("Status:", receipt.status);Vänta på fler block
För större säkerhet mot omorganisationer kan Ni vänta på flera bekräftelser:
// Wait for 3 confirmations
const receipt = await tx.wait(3);Fler bekräftelser innebär att det blir allt osannolikare att transaktionen återförs.
// Wait for 3 confirmations
const receipt = await tx.wait(3);Skicka ETH med ett anrop
Payable-funktioner accepterar ETH. Skicka ett value-override som sista argument:
const tx = await contract.deposit({
value: ethers.parseEther("0.5"),
});
await tx.wait();value anges i wei; parseEther konverterar från ett belopp för människor.
const tx = await contract.deposit({
value: ethers.parseEther("0.5"),
});
await tx.wait();Uppskatta gas
Innan Ni skickar kan Ni uppskatta hur mycket gas ett anrop kommer att använda:
const gas = await contract.transfer
.estimateGas(recipient, amount);
console.log("Estimated gas:", gas);Om funktionen skulle återställas kastar uppskattningen ett fel – en användbar tidig varning.
const gas = await contract.transfer
.estimateGas(recipient, amount);
console.log("Estimated gas:", gas);Ange gas-overrides
Ni kan åsidosätta gasparametrar vid behov, till exempel på EIP-1559-kedjor:
const tx = await contract.transfer(recipient, amount, {
gasLimit: 100000,
maxFeePerGas: ethers.parseUnits("30", "gwei"),
maxPriorityFeePerGas: ethers.parseUnits("2", "gwei"),
});Vanligtvis väljer plånboken lämpliga standardvärden, så använd overrides endast när det behövs.
const tx = await contract.transfer(recipient, amount, {
gasLimit: 100000,
maxFeePerGas: ethers.parseUnits("30", "gwei"),
maxPriorityFeePerGas: ethers.parseUnits("2", "gwei"),
});Hantera fel
Transaktioner kan misslyckas genom att återställas, ha för lågt pris eller avvisas av användaren i en plånbok. Omslut skickandet med 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);
}Nonce och ordning
Varje konto har en nonce – en räknare som säkerställer att transaktioner körs i rätt ordning. ethers hanterar den automatiskt, men om Ni skickar många transaktioner snabbt kan Ni ange den manuellt för att undvika kollisioner:
const tx = await contract.mint({ nonce: 42 });Felaktiga nonce-värden gör att transaktioner fastnar eller ersätts.
const tx = await contract.mint({ nonce: 42 });Läs events från ett kvitto
Efter utvinningen kan Ni granska de events som transaktionen genererade i kvittots loggar:
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);
}Detta bekräftar att kontraktet gjorde det Ni förväntade Er.
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);
}Snabbtest
Testa Er förståelse av hur man skickar transaktioner.
Sammanfattning
Ni har lärt Er att skicka transaktioner som ändrar tillstånd.
- Skrivningar kräver en signer; anslut en med
connecteller vid skapandet. - Ett skrivningsanrop returnerar en väntande tx;
tx.wait()ger det utvunna kvittot. - Kontrollera
receipt.statusoch vänta på fler bekräftelser för att skydda mot omorganisationer. - Skicka ETH via en
value-override och uppskatta kostnaden medestimateGas. - Hantera fel med try/catch och håll koll på kontots nonce.
Lär dig Grunderna i Web3- och DApp-utveckling med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 29
- Lektioner
- 105
Vanliga frågor
Är lektionen ”Skicka transaktioner” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Grunderna i Web3- och DApp-utveckling, inklusive ”Skicka transaktioner”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Grunderna i Web3- och DApp-utveckling innehåller totalt 4 lektioner.
Vad lär jag mig i ”Skicka transaktioner”?
Skriva till kedjan Ni övar på Grunderna i Web3- och DApp-utveckling med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Grunderna i Web3- och DApp-utveckling?
Du behöver inga förkunskaper. Utbildningen i Grunderna i Web3- och DApp-utveckling på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Skicka transaktioner”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Grunderna i Web3- och DApp-utveckling-lektionen?
Ja. Varje Grunderna i Web3- och DApp-utveckling-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Ansluta till en provider
- Läsa kontraktsdata
- Skicka transaktioner
- Lyssna på events