Käyttöönotettujen sopimusten käyttäminen
Tutustu käyttöönotettujen älysopimustesi käyttämiseen JavaScript-testeillä ja konsolikomennoilla.
Käyttöönotettujen sopimusten käyttäminen on ilmainen Lohkoketjun älysopimukset Soliditylla-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Lohkoketjun älysopimukset Soliditylla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lohkoketjun älysopimukset Soliditylla-kurssilla on yhteensä 4 oppituntia.
Miksi sopimusten kanssa ollaan vuorovaikutuksessa?
Kun älysopimus on otettu käyttöön, varsinainen toiminta alkaa: sen kanssa ollaan vuorovaikutuksessa! Tämä tarkoittaa sen funktioiden kutsumista, tietojen lukemista ja transaktioiden lähettämistä.
Vuorovaikutus on tärkeää seuraavista syistä:
- Testaus: Varmistetaan, että sopimus toimii odotetulla tavalla.
- dApp-käyttöliittymät: Annetaan käyttäjien yhdistää sopimukseen ja käyttää sitä.
- Automaatio: Rakennetaan ohjelmia, jotka suorittavat toimintoja lohkoketjussa.
Vuorovaikutustyökalunne
Kun työskentelette Hardhatilla tai Trufflella, käytettävissänne on tehokkaita työkaluja käyttöön otettujen sopimusten käsittelyyn:
- Hardhat Console / Truffle Console: Vuorovaikutteinen komentoriviympäristö nopeaa testausta ja virheenkorjausta varten.
- JavaScript-testit: Automatisoidut ohjelmat, jotka ottavat sopimukset käyttöön (tai muodostavat niihin yhteyden) ja tarkistavat niiden toiminnan.
- Mukautetut ohjelmat: Erilliset JavaScript-tiedostot monimutkaisempia ja toistettavia toimintoja varten.
Keskitymme tänään konsoliin ja JS-testeihin.
Hardhat Console: hiekkalaatikko
Hardhat Console tarjoaa kätevän tavan käsitellä sopimuksia ja lohkoketjua suoraan päätelaitteesta. Se käyttää Hardhat Runtime Environment (HRE) -ympäristöä, johon ethers.js ja käännettyjen sopimusten artefaktit on jo ladattu.
Käynnistääksenne konsolin avatkaa päätelaite Hardhat-projektin hakemistossa ja suorittakaa:
npx hardhat consoleTämä käynnistää vuorovaikutteisen JavaScript-ympäristön.
Yhdistäminen sopimukseen
Ennen funktioiden kutsumista teidän on muodostettava yhteys käyttöön otettuun sopimukseen. Tämä tarkoittaa sen osoitteen hakemista ja sopimusta edustavan ethers.js Contract -objektin luomista.
Voitte tehdä sen Hardhat-ohjelmassa (tai suoraan konsolissa) esimerkiksi näin:
const { ethers } = require("hardhat");
async function main() {
// First, get the ContractFactory for your contract
const Counter = await ethers.getContractFactory("Counter");
// Replace with the actual address where your contract is deployed
const deployedAddress = "0x5FbDB2315678afecb367f032d93F642f64180aa3";
// Attach to the deployed contract using its address
const counter = await Counter.attach(deployedAddress);
console.log("Connected to Counter at:", counter.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});View-funktioiden kutsuminen
view- tai pure-määritteellä merkityt funktiot eivät muuta lohkoketjun tilaa. Niiden kutsuminen on maksutonta, ja ne vain palauttavat tietoja. Voitte kutsua niitä suoraan sopimusinstanssista.
Luetaan nykyinen laskurin arvo Counter-sopimuksesta. Huomioikaa, että ethers.js palauttaa suurille luvuille BigNumber-objekteja, joten niiden näyttämiseen käytetään usein .toString()-metodia.
const { ethers } = require("hardhat");
async function main() {
const Counter = await ethers.getContractFactory("Counter");
const deployedAddress = "0x5FbDB2315678afecb367f032d93F642f64180aa3";
const counter = await Counter.attach(deployedAddress);
// Call the getCount view function
const currentCount = await counter.getCount();
console.log("Current count is:", currentCount.toString());
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});Transaktioiden lähettäminen
Jos haluatte muuttaa sopimuksen tilaa (esimerkiksi päivittää muuttujaa tai siirtää tokeneita), teidän on lähetettävä transaktio. Nämä kutsut kuluttavat gasia ja edellyttävät allekirjoittajaa (tiliänne).
Transaktion lähettämisen jälkeen odotatte yleensä sen vahvistusta komennolla await, jotta varmistetaan, että se louhitaan lohkoketjuun. Kasvatetaan laskurimme arvoa:
const { ethers } = require("hardhat");
async function main() {
const Counter = await ethers.getContractFactory("Counter");
const deployedAddress = "0x5FbDB2315678afecb367f032d93F642f64180aa3";
const counter = await Counter.attach(deployedAddress);
console.log("Incrementing count...");
const tx = await counter.increment();
await tx.wait(); // Wait for the transaction to be mined
const newCount = await counter.getCount();
console.log("Count after increment:", newCount.toString());
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});Automatisoidut vuorovaikutustestit
Vaikka konsoli sopii erinomaisesti nopeisiin tarkistuksiin, automatisoidut JavaScript-testit ovat välttämättömiä luotettavassa kehityksessä. Niiden avulla voitte:
- Määrittää odotetun toiminnan.
- Suorittaa testit toistuvasti ja nopeasti.
- Havaita muutosten aiheuttamat regressiot.
Hardhat integroituu saumattomasti Mochan ja Chain kaltaisiin testauskehyksiin ja käyttää ethers.js-kirjastoa sopimusten käsittelyyn.
Vuorovaikutustestin kirjoittaminen
Tyypillisessä Hardhat-testitiedostossa describe-rakennetta käytetään testikokonaisuuksiin ja it-rakennetta yksittäisiin testeihin. it-lohkon sisällä muodostatte yhteyden sopimukseen, kutsutte sen funktioita ja tarkistatte tulokset väitteillä.
Muistakaa korvata deployedAddress sopimuksen todellisella osoitteella testiverkossanne.
const { expect } = require("chai");
const { ethers } = require("hardhat");
describe("Counter Contract Interaction", function () {
let counter;
const deployedAddress = "0x5FbDB2315678afecb367f032d93F642f64180aa3"; // Your contract address
before(async function () {
const CounterFactory = await ethers.getContractFactory("Counter");
counter = await CounterFactory.attach(deployedAddress);
});
it("should read the initial count correctly", async function () {
const initialCount = await counter.getCount();
expect(initialCount.toString()).to.equal("0");
});
it("should increment the count via transaction", async function () {
const initialCount = await counter.getCount();
await counter.increment();
const finalCount = await counter.getCount();
expect(finalCount.toString()).to.equal(initialCount.add(1).toString());
});
});Älykkään vuorovaikutuksen vinkit
Tehokkaassa sopimusten käsittelyssä kannattaa pitää mielessä seuraavat vinkit:
- Tarkistakaa osoitteet aina: Tarkistakaa vielä kerran sen sopimuksen osoite, jonka kanssa olette vuorovaikutuksessa.
- Ymmärtäkää gas: Tilaa muuttavat transaktiot kuluttavat gasia. Arvioikaa kustannukset Mainnet-käyttöönottoja varten.
- Käsitelkää virheet: Käyttäkää transaktioissa
try-catch-lohkoja, sillä transaktiot voivat palautua virheeseen. - Käyttäkää tapahtumia: Kuunnelkaa sopimuksen tapahtumia saadaksenne transaktioista jäsenneltyä tietoa.
- Testatkaa perusteellisesti: Kirjoittakaa kattavat testit kaikille tärkeille funktioille ja poikkeustapauksille.
Pikatarkistus: vuorovaikutustyypit
Olette oppineet kaksi pääasiallista tapaa käsitellä älysopimusten funktioita: tilan lukemisen (view/pure-funktiot) ja tilan muuttamisen (transaktiofunktiot).
Mikä seuraavista näitä vuorovaikutustapoja koskevista väitteistä on TOSI?
Kertaus: sopimusten käsittely
Olette oppineet onnistuneesti käsittelemään käyttöön otettuja älysopimuksia!
- Tutustuimme Hardhat Console -konsolin käyttöön välitöntä ja vuorovaikutteista testausta varten.
- Näitte, miten käyttöön otettuun sopimusinstanssiin muodostetaan yhteys.
- Erottelimme toisistaan `view`-funktioiden kutsumisen (maksuton, vain luku) ja transaktioiden lähettämisen (kuluttaa gasia ja muuttaa tilaa).
- Lopuksi käsittelimme automatisoitujen JavaScript-testien merkitystä luotettavassa sopimusten käsittelyssä.
Seuraavaksi olette valmiita tutustumaan Solidityn tilanhallinta- ja tallennusmalleihin!
Opi Lohkoketjun älysopimukset Soliditylla tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Käyttöönotettujen sopimusten käyttäminen” ilmainen?
Kyllä – oppitunnin ”Käyttöönotettujen sopimusten käyttäminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Lohkoketjun älysopimukset Soliditylla-kurssin, päivitä CoddyKit PROhon. Lohkoketjun älysopimukset Soliditylla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Käyttöönotettujen sopimusten käyttäminen”?
Tutustu käyttöönotettujen älysopimustesi käyttämiseen JavaScript-testeillä ja konsolikomennoilla. Harjoittelet Lohkoketjun älysopimukset Soliditylla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Lohkoketjun älysopimukset Soliditylla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Lohkoketjun älysopimukset Soliditylla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Käyttöönotettujen sopimusten käyttäminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Lohkoketjun älysopimukset Soliditylla-oppitunnilla?
Kyllä. Jokainen Lohkoketjun älysopimukset Soliditylla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Hardhatin tai Trufflen määrittäminen
- Sopimusten kääntäminen ja käyttöönotto
- Käyttöönotettujen sopimusten käyttäminen
- Sopimustestien kirjoittaminen ja suorittaminen