Ako otestovať inteligentné zmluvy s ethers.js a Truffle?

Jan 22, 2026Zanechajte správu

Ahoj! Ako dodávateľ etherov som na vlastnej koži videl, aké dôležité je správne otestovať smart kontrakty. V tomto blogovom príspevku vás prevediem tým, ako testovať inteligentné zmluvy pomocou ethers.js a Hľuzovky. Môže to znieť trochu technicky, ale rozdelím to na ľahko pochopiteľné kroky.

Prečo je testovanie inteligentných zmlúv dôležité

Predtým, než sa vrhneme na proces testovania, povedzme si rýchlo, prečo je testovanie smart kontraktov také dôležité. Inteligentné kontrakty sú samovykonateľné zmluvy s podmienkami dohody priamo zapísanými v kóde. Po nasadení na blockchain sú nemenné, čo znamená, že ich nemôžete ľahko zmeniť. Ak sa vo vašej inteligentnej zmluve vyskytnú chyby alebo slabé miesta, môže to viesť k vážnym problémom, ako sú finančné straty alebo narušenia bezpečnosti. Testovanie je teda ako záchranná sieť na zachytenie týchto problémov skôr, ako spôsobia skutočnú škodu.

EINECS-203-905-0Dibutyl Carbitol

Predpoklady

Ak chcete postupovať podľa tohto sprievodcu, budete potrebovať niekoľko vecí:

  1. Node.js a npm: Používajú sa na správu závislostí vášho projektu. Môžete si ich stiahnuť z oficiálnej stránky Node.js.
  2. Hľuzovka: Je to populárny vývojový rámec pre Ethereum. Môžete ho nainštalovať globálne pomocounpm install -g hľuzovka.
  3. ethers.js: Ľahká knižnica na interakciu s blockchainom Ethereum. Môžete ho pridať do svojho projektu pomocounpm nainštalovať étery.

Založenie projektu Hľuzovka

Po prvé, poďme vytvoriť nový projekt Truffle. Otvorte terminál a spustite nasledujúci príkaz:

hľuzovkové teplo

Tým sa vytvorí nový adresár so základnou štruktúrou projektu Truffle. Uvidíte priečinky akozmluvy,migrácie, atest. Thezmluvypriečinok je miesto, kam vložíte kód inteligentnej zmluvymigráciepriečinok je určený pre skripty na nasadenie vašich zmlúv atestpriečinok je miesto, kde budeme písať naše testovacie prípady.

Spísanie jednoduchej inteligentnej zmluvy

Napíšme si jednoduchú inteligentnú zmluvu na testovanie. Vytvorte nový súbor vzmluvypriečinok s názvomSimpleStorage.sol. Tu je kód:

// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SimpleStorage { uint256 private uloženéData; function set(uint256 x) public { uloženéData = x; } function get() public view returns (uint256) { return uloženéData; } }

Toto je základná zmluva, ktorá vám umožňuje uložiť a získať jedno celé číslo bez znamienka.

Konfigurácia Hľuzovky

Ďalej musíme nakonfigurovať Truffle, aby fungoval s naším lokálnym vývojovým prostredím. Otvortetruffle-config.jssúbor v koreňovom adresári vášho projektu. Vývojovú sieť môžete nastaviť takto:

module.exports = { networks: { development: { host: "127.0.0.1", port: 8545, network_id: "*" } }, kompilátory: { solc: { verzia: "0.8.0" } } };

Toto nakonfiguruje Truffle na pripojenie k lokálnemu uzlu Ethereum, na ktorom bežílocalhostv prístave8545.

Písanie testov pomocou ethers.js a Hľuzovky

Teraz si napíšme niekoľko testovJednoduché úložiskozmluvu pomocou ethers.js. Vytvorte nový súbor vtestpriečinok s názvomSimpleStorage.test.js. Tu je kód:

const { ethers } = require('ethers'); const { očakávať } = vyžadovať('chai'); description('SimpleStorage', function () { let simpleStorage; let provider; let signer; before(async function () { provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545'); signer = provider.getSigner(); const SimpleStorage =Contractctor'ethers.implector signer = čakaj SimpleStorage.deploy(); čakaj simpleStorage.deployed( }); očakávať(získanáHodnota.Číslu()).

V tomto teste sme najprv nastavili poskytovateľa a podpisovateľa pomocou ethers.js. Potom nasadíme našeJednoduché úložiskozmluvy. Thetoblok je miesto, kde skutočne píšeme náš testovací prípad. V zmluve nastavíme hodnotu a potom ju získame a použijemechaiknižnicu potvrdiť, že získaná hodnota je rovnaká ako tá, ktorú sme nastavili.

Spustenie testov

Ak chcete spustiť testy, jednoducho spustite nasledujúci príkaz vo svojom termináli:

hľuzovkový test

Truffle skompiluje vaše zmluvy, nasadí ich do lokálnej siete a spustí všetky testovacie prípady vtestpriečinok. Ak všetko pôjde dobre, mala by sa zobraziť správa, že všetky testy prešli.

Pokročilé koncepty testovania

Testovacie udalosti

Inteligentné zmluvy môžu vysielať udalosti, ktoré sú užitočné na informovanie externých aplikácií o určitých akciách. Pridajme k nám udalosťJednoduché úložiskozmluvu a napíš k nej test.

Najprv aktualizujteSimpleStorage.solzmluva:

// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SimpleStorage { uint256 private uloženéData; event ValueSet(uint256 newValue); function set(uint256 x) public { uloženéData = x; emit ValueSet(x); } function get() public view returns (uint256) { return uloženéData; } }

Teraz aktualizujteSimpleStorage.test.jssúbor na testovanie udalosti:

const { ethers } = require('ethers'); const { očakávať } = vyžadovať('chai'); description('SimpleStorage', function () { let simpleStorage; let provider; let signer; before(async function () { provider = new ethers.providers.JsonRpcProvider('http://127.0.0.1:8545'); signer = provider.getSigner(); const SimpleStorage =Contractctor'ethers.implector signer = čakaj SimpleStorage.deploy(); čakaj simpleStorage.deployed( }); expect(retrievedValue.toNumber()).to.equal(valueToSet }); it('má vygenerovať udalosť ValueSet', async function () { const valueToSet = 100; const tx = wait simpleStorage.set(valueToSet); const.udalosť.=čakať na príjem =(konšt.); event.udalosť === 'Množina hodnôt');

V tomto novom testovacom prípade odošleme transakciu na nastavenie hodnoty v zmluve. Potom čakáme, kým sa transakcia vyťaží a dostaneme potvrdenie. HľadámeValueSetudalosť v účtenke a potvrdiť, že hodnota v udalosti je rovnaká ako tá, ktorú sme nastavili.

Záver

Testovanie inteligentných zmlúv s ethers.js a Truffle je účinný spôsob, ako zaistiť spoľahlivosť a bezpečnosť vašich zmlúv. Podľa krokov v tejto príručke môžete napísať komplexné testovacie súpravy pre vaše inteligentné zmluvy a včas zachytiť všetky potenciálne problémy.

Ak hľadáte vysokokvalitné étery pre svoje blockchainové projekty, máme pre vás pokrytie. Ponúkame široký sortiment éterov, vrátaneDietylénglykol Dibutyléter CAS 112-73-2,METYL PERFLUROBUTYL ÉTER CAS 163702-08-7, a2-Butoxyetanol CAS 111-76-2. Ak máte záujem dozvedieť sa viac alebo prediskutovať potenciálny nákup, neváhajte nás kontaktovať a začať rozhovor o obstarávaní.

Referencie

  • Hľuzovková dokumentácia
  • Dokumentácia ethers.js
  • Dokumentácia pevnosti

Zaslať požiadavku

Domov

Telefón

E-mailom

Vyšetrovanie