హార్డ్హ్యాట్ మరియు ఇథర్స్తో వాఫిల్ హలో వరల్డ్ ట్యుటోరియల్
ఈ వాఫిల్opens in a new tab ట్యుటోరియల్లో, మనం హార్డ్హ్యాట్opens in a new tab మరియు ethers.jsopens in a new tab ఉపయోగించి ఒక సాధారణ "హలో వరల్డ్" స్మార్ట్ కాంట్రాక్ట్ ప్రాజెక్ట్ను ఎలా సెటప్ చేయాలో నేర్చుకుంటాం. ఆ తర్వాత మన స్మార్ట్ కాంట్రాక్ట్కు కొత్త కార్యాచరణను ఎలా జోడించాలో మరియు దానిని వాఫిల్తో ఎలా పరీక్షించాలో మనం నేర్చుకుంటాం.
కొత్త ప్రాజెక్ట్ను సృష్టించడం ద్వారా ప్రారంభిద్దాం:
yarn initలేదా
npm initమరియు అవసరమైన ప్యాకేజీలను ఇన్స్టాల్ చేయడం:
yarn add -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chaiలేదా
npm install -D hardhat @nomiclabs/hardhat-ethers ethers @nomiclabs/hardhat-waffle ethereum-waffle chainpx hardhat రన్ చేయడం ద్వారా ఒక నమూనా హార్డ్హ్యాట్ ప్రాజెక్ట్ను సృష్టించడం తదుపరి దశ.
888 888 888 888 888888 888 888 888 888888 888 888 888 8888888888888 8888b. 888d888 .d88888 88888b. 8888b. 888888888 888 "88b 888P" d88" 888 888 "88b "88b 888888 888 .d888888 888 888 888 888 888 .d888888 888888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y888👷 హార్డ్హ్యాట్ v2.0.3కి స్వాగతం 👷? మీరు ఏమి చేయాలనుకుంటున్నారు? …❯ ఒక నమూనా ప్రాజెక్ట్ను సృష్టించండిఖాళీ hardhat.config.jsని సృష్టించండినిష్క్రమించండిఅన్నీ చూపించుCreate a sample projectని ఎంచుకోండి
మన ప్రాజెక్ట్ నిర్మాణం ఈ విధంగా ఉండాలి:
1MyWaffleProject2├── contracts3│ └── Greeter.sol4├── node_modules5├── scripts6│ └── sample-script.js7├── test8│ └── sample-test.js9├── .gitattributes10├── .gitignore11├── hardhat.config.js12└── package.jsonఅన్నీ చూపించుఇప్పుడు ఈ ఫైల్లలో కొన్నింటి గురించి మాట్లాడుకుందాం:
- Greeter.sol - సాలిడిటీలో వ్రాసిన మన స్మార్ట్ కాంట్రాక్ట్;
1contract Greeter {2string greeting;34constructor(string memory _greeting) public {5console.log("గ్రీటింగ్తో గ్రీటర్ను డిప్లాయ్ చేస్తోంది:", _greeting);6greeting = _greeting;7}89function greet() public view returns (string memory) {10return greeting;11}1213function setGreeting(string memory _greeting) public {14console.log("గ్రీటింగ్ను '%s' నుండి '%s'కి మారుస్తోంది", greeting, _greeting);15greeting = _greeting;16}17}అన్నీ చూపించుమన స్మార్ట్ కాంట్రాక్ట్ను మూడు భాగాలుగా విభజించవచ్చు:
- కన్స్ట్రక్టర్ - ఇక్కడ మనం
greetingఅనే స్ట్రింగ్ రకం వేరియబుల్ను ప్రకటిస్తాము, - ఫంక్షన్ గ్రీట్ - పిలిచినప్పుడు
greetingను తిరిగి ఇచ్చే ఫంక్షన్, - ఫంక్షన్ సెట్గ్రీటింగ్ -
greetingవిలువను మార్చడానికి మనకు అనుమతించే ఫంక్షన్.
- sample-test.js - మన పరీక్షల ఫైల్
1describe("గ్రీటర్", function () {2 it("ఒకసారి మార్చిన తర్వాత కొత్త గ్రీటింగ్ను తిరిగి ఇవ్వాలి", async function () {3 const Greeter = await ethers.getContractFactory("Greeter")4 const greeter = await Greeter.deploy("హలో, వరల్డ్!")56 await greeter.deployed()7 expect(await greeter.greet()).to.equal("హలో, వరల్డ్!")89 await greeter.setGreeting("Hola, mundo!")10 expect(await greeter.greet()).to.equal("Hola, mundo!")11 })12})అన్నీ చూపించుతదుపరి దశలో మన కాంట్రాక్ట్ను కంపైల్ చేయడం మరియు పరీక్షలను అమలు చేయడం ఉంటాయి:
వాఫిల్ పరీక్షలు మోచా (ఒక టెస్ట్ ఫ్రేమ్వర్క్)ను చాయ్ (ఒక అస్సర్షన్ లైబ్రరీ)తో కలిపి ఉపయోగిస్తాయి. మీరు చేయాల్సిందల్లా npx hardhat testను అమలు చేసి, కింది సందేశం కనిపించే వరకు వేచి ఉండటమే.
✓ ఒకసారి మార్చిన తర్వాత కొత్త గ్రీటింగ్ను తిరిగి ఇవ్వాలిఇప్పటివరకు అంతా బాగానే ఉంది, మన ప్రాజెక్ట్కు మరికొంత సంక్లిష్టతను జోడిద్దాం
ఎవరైనా గ్రీటింగ్గా ఖాళీ స్ట్రింగ్ను జోడించే పరిస్థితిని ఊహించుకోండి. అది ఆత్మీయమైన పలకరింపు కాదు, కదా?
అలా జరగకుండా చూసుకుందాం:
ఎవరైనా ఖాళీ స్ట్రింగ్ను పంపినప్పుడు సాలిడిటీ యొక్క revertని ఉపయోగించాలనుకుంటున్నాము. మంచి విషయం ఏమిటంటే, వాఫిల్ యొక్క చాయ్ మ్యాచర్ to.be.revertedWith()తో మనం ఈ కార్యాచరణను సులభంగా పరీక్షించవచ్చు.
1it("ఖాళీ స్ట్రింగ్ను పంపినప్పుడు తిరిగి పంపాలి", async () => {2 const Greeter = await ethers.getContractFactory("Greeter")3 const greeter = await Greeter.deploy("హలో, వరల్డ్!")45 await greeter.deployed()6 await expect(greeter.setGreeting("")).to.be.revertedWith(7 "గ్రీటింగ్ ఖాళీగా ఉండకూడదు"8 )9})అన్నీ చూపించుమన కొత్త పరీక్ష పాస్ కాలేదని తెలుస్తోంది:
గ్రీటింగ్తో గ్రీటర్ను డిప్లాయ్ చేస్తోంది: హలో, వరల్డ్!'హలో, వరల్డ్!' నుండి 'Hola, mundo!'కి గ్రీటింగ్ను మారుస్తోంది ✓ ఒకసారి మార్చిన తర్వాత కొత్త గ్రీటింగ్ను తిరిగి ఇవ్వాలి (1514ms)గ్రీటింగ్తో గ్రీటర్ను డిప్లాయ్ చేస్తోంది: హలో, వరల్డ్!'హలో, వరల్డ్!' నుండి ''కి గ్రీటింగ్ను మారుస్తోంది 1) ఖాళీ స్ట్రింగ్ను పంపినప్పుడు తిరిగి పంపాలి 1 ఉత్తీర్ణం (2s) 1 విఫలంఅన్నీ చూపించుఈ కార్యాచరణను మన స్మార్ట్ కాంట్రాక్ట్లో అమలు చేద్దాం:
1require(bytes(_greeting).length > 0, "గ్రీటింగ్ ఖాళీగా ఉండకూడదు");ఇప్పుడు, మన సెట్ గ్రీటింగ్ ఫంక్షన్ ఈ విధంగా కనిపిస్తుంది:
1function setGreeting(string memory _greeting) public {2require(bytes(_greeting).length > 0, "గ్రీటింగ్ ఖాళీగా ఉండకూడదు");3console.log("గ్రీటింగ్ను '%s' నుండి '%s'కి మారుస్తోంది", greeting, _greeting);4greeting = _greeting;5}పరీక్షలను మళ్ళీ అమలు చేద్దాం:
✓ ఒకసారి మార్చిన తర్వాత కొత్త గ్రీటింగ్ను తిరిగి ఇవ్వాలి (1467ms)✓ ఖాళీ స్ట్రింగ్ను పంపినప్పుడు తిరిగి పంపాలి (276ms)2 ఉత్తీర్ణం (2s)అభినందనలు! మీరు సాధించారు :)
ముగింపు
మేము వాఫిల్, హార్డ్హ్యాట్ మరియు ఇథర్స్.jsలతో ఒక సాధారణ ప్రాజెక్ట్ను రూపొందించాము. ప్రాజెక్ట్ను ఎలా సెటప్ చేయాలో, పరీక్షను జోడించడం మరియు కొత్త కార్యాచరణను ఎలా అమలు చేయాలో మనం నేర్చుకున్నాము.
మీ స్మార్ట్ కాంట్రాక్ట్లను పరీక్షించడానికి మరిన్ని గొప్ప చాయ్ మ్యాచర్ల కోసం, అధికారిక వాఫిల్ డాక్స్opens in a new tabను చూడండి.
పేజీ చివరి అప్డేట్: 8 డిసెంబర్, 2023