தொடக்கநிலையாளர்களுக்கான ஹலோ வேர்ல்ட் திறன் ஒப்பந்தம்
நீங்கள் தொகுதிச்சங்கிலி மேம்பாட்டிற்குப் புதியவராக இருந்து, எங்கிருந்து தொடங்குவது என்று தெரியவில்லை என்றால், அல்லது திறன் ஒப்பந்தங்களை எவ்வாறு நிலைநிறுத்துவது மற்றும் அவற்றுடன் தொடர்புகொள்வது என்பதைப் புரிந்துகொள்ள விரும்பினால், இந்த வழிகாட்டி உங்களுக்கானது. மெய்நிகர் பணப்பையான மெட்டாமேஸ்க் (புதிய தாவலில் திறக்கும்), Solidity (புதிய தாவலில் திறக்கும்), Hardhat (புதிய தாவலில் திறக்கும்) மற்றும் Alchemy (புதிய தாவலில் திறக்கும்) ஆகியவற்றைப் பயன்படுத்தி Sepolia சோதனைப் பிணையத்தில் ஒரு எளிய திறன் ஒப்பந்தத்தை உருவாக்கி நிலைநிறுத்துவது குறித்துப் பார்ப்போம் (இவை எதைக் குறிக்கின்றன என்று உங்களுக்கு இன்னும் புரியவில்லை என்றால் கவலைப்பட வேண்டாம், நாங்கள் அதை விளக்குவோம்).
உங்கள் ஒப்பந்தம் நிலைநிறுத்தப்பட்டதும், அதற்கான பயனர் இடைமுகத்தை நீங்கள் உருவாக்கலாம்.
எந்த நேரத்திலும் உங்களுக்குக் கேள்விகள் இருந்தால், Alchemy டிஸ்கார்ட் (புதிய தாவலில் திறக்கும்) இல் தொடர்புகொள்ளத் தயங்க வேண்டாம்!
படி 1: எத்திரியம் பிணையத்துடன் இணைக்கவும்
எத்திரியம் சங்கிலிக்குக் கோரிக்கைகளை அனுப்பப் பல வழிகள் உள்ளன. எளிமைக்காக, Alchemy இல் உள்ள இலவசக் கணக்கைப் பயன்படுத்துவோம், இது ஒரு தொகுதிச்சங்கிலி டெவலப்பர் தளம் மற்றும் API ஆகும், இது நமது சொந்தக் கணுக்களை இயக்காமலேயே எத்திரியம் சங்கிலியுடன் தொடர்புகொள்ள அனுமதிக்கிறது. இந்தத் தளத்தில் கண்காணிப்பு மற்றும் பகுப்பாய்விற்கான டெவலப்பர் கருவிகளும் உள்ளன, நமது திறன் ஒப்பந்த நிலைநிறுத்தத்தில் உள்முகமாக என்ன நடக்கிறது என்பதைப் புரிந்துகொள்ள இந்தப் பயிற்சியில் அவற்றைப் பயன்படுத்திக்கொள்வோம். உங்களிடம் ஏற்கனவே Alchemy கணக்கு இல்லையென்றால், இங்கே இலவசமாகப் பதிவு செய்யலாம் (புதிய தாவலில் திறக்கும்).
படி 2: உங்கள் செயலியை (மற்றும் API திறவுகோலை) உருவாக்கவும்
நீங்கள் Alchemy கணக்கை உருவாக்கியவுடன், ஒரு செயலியை உருவாக்குவதன் மூலம் API திறவுகோலை உருவாக்கலாம். இது Sepolia சோதனைப் பிணையத்திற்குக் கோரிக்கைகளை அனுப்ப அனுமதிக்கும். சோதனைப் பிணையங்கள் (testnets) பற்றி உங்களுக்குத் தெரியாவிட்டால், இந்தப் பக்கத்தைப் பார்க்கவும்.
- உங்கள் Alchemy டாஷ்போர்டில் உள்ள வழிசெலுத்தல் பட்டியில் (nav bar) "Select an app" என்பதைத் தேர்ந்தெடுத்து, "Create new app" என்பதைக் கிளிக் செய்வதன் மூலம் "Create new app" பக்கத்திற்குச் செல்லவும்.
- உங்கள் செயலிக்கு “Hello World” என்று பெயரிட்டு, ஒரு சிறிய விளக்கத்தை அளித்து, பயன்பாட்டு வகையைத் தேர்ந்தெடுக்கவும், எ.கா., "Infra & Tooling." அடுத்து, "Ethereum" என்று தேடி, பிணையத்தைத் தேர்ந்தெடுக்கவும்.
- தொடர "Next" என்பதைக் கிளிக் செய்து, பின்னர் “Create app” என்பதைக் கிளிக் செய்யவும், அவ்வளவுதான்! நகலெடுக்கக் கிடைக்கக்கூடிய API திறவுகோலுடன், உங்கள் செயலி வழிசெலுத்தல் பட்டி கீழ்தோன்றும் மெனுவில் (dropdown menu) தோன்ற வேண்டும்.
படி 3: ஒரு எத்திரியம் கணக்கை (முகவரியை) உருவாக்கவும்
பரிவர்த்தனைகளை அனுப்பவும் பெறவும் நமக்கு ஒரு எத்திரியம் கணக்கு தேவை. இந்தப் பயிற்சிக்காக, உங்கள் எத்திரியம் கணக்கு முகவரியை நிர்வகிக்கப் பயன்படுத்தப்படும் உலாவியில் உள்ள மெய்நிகர் பணப்பையான மெட்டாமேஸ்க்கைப் பயன்படுத்துவோம். பரிவர்த்தனைகள் பற்றி மேலும் அறிய.
நீங்கள் மெட்டாமேஸ்க்கைப் பதிவிறக்கம் செய்து, இங்கே (புதிய தாவலில் திறக்கும்) இலவசமாக ஒரு எத்திரியம் கணக்கை உருவாக்கலாம். நீங்கள் ஒரு கணக்கை உருவாக்கும்போது, அல்லது உங்களிடம் ஏற்கனவே கணக்கு இருந்தால், பிணையக் கீழ்தோன்றும் மெனுவைப் பயன்படுத்தி "Sepolia" சோதனைப் பிணையத்திற்கு மாறுவதை உறுதிசெய்து கொள்ளுங்கள் (இதனால் நாம் உண்மையான பணத்தைக் கையாள மாட்டோம்).
பட்டியலில் Sepolia-ஐ நீங்கள் காணவில்லை என்றால், மேல் வலது மூலையில் உள்ள மெனுவைத் திறந்து, "Networks" என்பதைத் தேர்ந்தெடுத்து, பிணையப் பட்டியலின் கீழே உள்ள "Show test networks" என்பதை இயக்கவும் (சோதனைப் பிணையங்களைப் பார்ப்பதற்கான மெட்டாமேஸ்க் வழிகாட்டியைக் (புதிய தாவலில் திறக்கும்) காண்க). பின்னர் பிணையத் தேர்வு மெனுவில் "Sepolia" என்பதைத் தேர்ந்தெடுக்கவும்.
படி 4: ஒரு பாசெட்டிலிருந்து ஈதரைச் சேர்க்கவும்
நமது திறன் ஒப்பந்தத்தைச் சோதனைப் பிணையத்தில் நிலைநிறுத்த, நமக்குச் சில போலி ETH தேவைப்படும். Sepolia ETH-ஐப் பெற, பல்வேறு பாசெட்களின் பட்டியலைக் காண Sepolia பிணைய விவரங்களுக்குச் செல்லலாம். ஒன்று வேலை செய்யவில்லை என்றால், மற்றொன்றை முயற்சிக்கவும், ஏனெனில் அவை சில நேரங்களில் காலியாகிவிடலாம். சில பாசெட்களில் தகுதி விதிகள் உள்ளன; எடுத்துக்காட்டாக, Alchemy-இன் Sepolia பாசெட்டிற்குப் பெறும் முகவரியானது எத்தேரியம் முதன்மை வலைப்பின்னலில் குறைந்தது 0.001 ETH-ஐ வைத்திருக்க வேண்டும். பிணைய நெரிசல் காரணமாக உங்கள் போலி ETH-ஐப் பெறச் சிறிது நேரம் ஆகலாம். சிறிது நேரத்திலேயே உங்கள் மெட்டாமேஸ்க் கணக்கில் ETH-ஐக் காண முடியும்!
படி 5: உங்கள் இருப்பைச் சரிபார்க்கவும்
நமது இருப்பு உள்ளதா என்பதை மீண்டும் சரிபார்க்க, Alchemy-இன் கம்போஸர் கருவியைப் (புதிய தாவலில் திறக்கும்) பயன்படுத்தி ஒரு eth_getBalance கோரிக்கையை அனுப்புவோம். இது நமது பணப்பையில் உள்ள ETH அளவை வழங்கும். உங்கள் மெட்டாமேஸ்க் கணக்கு முகவரியை உள்ளிட்டு “Send Request” என்பதைக் கிளிக் செய்த பிறகு, இது போன்ற ஒரு பதிலைக் காண வேண்டும்:
{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }
குறிப்பு: இந்த முடிவு Wei-இல் உள்ளது, ETH-இல் அல்ல. ஈதரின் மிகச்சிறிய மதிப்பாக Wei பயன்படுத்தப்படுகிறது. Wei-லிருந்து ETH-க்கு மாற்றுவது: 1 eth = 1018 wei. எனவே 0x2B5E3AF16B1880000 என்பதை தசமமாக மாற்றினால் 5*10¹⁸ கிடைக்கும், இது 5 ETH-க்குச் சமம்.
அப்பாடா! நமது போலிப் பணம் முழுவதும் அங்கேயே உள்ளது .
படி 6: நமது திட்டத்தைத் துவக்கவும்
முதலில், நமது திட்டத்திற்காக ஒரு கோப்புறையை உருவாக்க வேண்டும். உங்கள் கட்டளை வரிக்குச் சென்று தட்டச்சு செய்யவும்:
mkdir hello-world
cd hello-world
இப்போது நாம் நமது திட்டக் கோப்புறைக்குள் இருப்பதால், திட்டத்தைத் துவக்க npm init என்பதைப் பயன்படுத்துவோம். உங்களிடம் ஏற்கனவே npm நிறுவப்படவில்லை என்றால், Node.js நிறுவல் வழிமுறைகளைப் (புதிய தாவலில் திறக்கும்) பின்பற்றவும் (இந்தப் பயிற்சிக்கு நமக்கு Node.js மற்றும் npm தேவைப்படும்).
npm init
நிறுவல் கேள்விகளுக்கு நீங்கள் எவ்வாறு பதிலளிக்கிறீர்கள் என்பது முக்கியமல்ல, குறிப்புக்காக நாங்கள் அதை எவ்வாறு செய்தோம் என்பது இங்கே:
package name: (hello-world)
version: (1.0.0)
description: hello world smart contract
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/.../.../.../hello-world/package.json:
{
"name": "hello-world",
"version": "1.0.0",
"description": "hello world smart contract",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
package.json-க்கு ஒப்புதல் அளிக்கவும். அடுத்து நாம் நிறுவும் Hardhat 3, ES தொகுதித் திட்டங்களை மட்டுமே ஆதரிக்கிறது, எனவே திட்டத்தை அவ்வாறு குறிக்கவும்:
npm pkg set type=module
இப்போது நாம் தொடங்குவதற்குத் தயாராக உள்ளோம்!
படி 7: Hardhat (புதிய தாவலில் திறக்கும்)-ஐப் பதிவிறக்கவும்
Hardhat என்பது உங்கள் எத்திரியம் மென்பொருளைத் தொகுக்க, நிலைநிறுத்த, சோதிக்க மற்றும் பிழைத்திருத்தம் செய்வதற்கான ஒரு மேம்பாட்டுச் சூழலாகும். நேரடிச் சங்கிலியில் நிலைநிறுத்துவதற்கு முன்பு, திறன் ஒப்பந்தங்கள் மற்றும் பரவலாக்கப்பட்ட செயலிகளை (dapps) உள்ளூரில் உருவாக்கும்போது இது டெவலப்பர்களுக்கு உதவுகிறது.
Hardhat 3-க்கு Node.js v22.13.0 அல்லது அதற்குப் பிந்தைய பதிப்பு தேவை. நமது hello-world திட்டத்திற்குள் இதை இயக்கவும்:
npm install --save-dev hardhat
நிறுவல் வழிமுறைகள் (புதிய தாவலில் திறக்கும்) குறித்த கூடுதல் விவரங்களுக்கு இந்தப் பக்கத்தைப் பார்க்கவும்.
படி 8: Hardhat திட்டத்தை உருவாக்கவும்
npx hardhat --init என்பதை இயக்குவது ஒரு முழுமையான மாதிரித் திட்டத்தை உருவாக்கும், ஆனால் இந்தப் பயிற்சிக்காக நாம் அனைத்தையும் கைமுறையாக அமைப்போம், இதன் மூலம் நீங்கள் ஒவ்வொரு பகுதியையும் பார்க்க முடியும். உங்கள் திட்டக் கோப்புறையின் மூலத்தில், பின்வரும் உள்ளடக்கங்களுடன் hardhat.config.js என்ற கோப்பை உருவாக்கவும்:
import { defineConfig } from "hardhat/config"
export default defineConfig({
solidity: "0.8.34",
})
இங்குதான் நமது திட்டத்திற்கான அனைத்து அமைப்புகளையும் குறிப்பிடுவோம் (படி 13-இல்). இப்போதைக்கு, Solidity தொகுப்பானின் எந்தப் பதிப்பைப் பயன்படுத்த வேண்டும் என்பதை மட்டுமே இது Hardhat-க்குச் சொல்கிறது.
படி 9: திட்டக் கோப்புறைகளைச் சேர்க்கவும்
நமது திட்டத்தை ஒழுங்கமைக்க இரண்டு புதிய கோப்புறைகளை உருவாக்குவோம். உங்கள் கட்டளை வரியில் உங்கள் திட்டத்தின் மூலக் கோப்பகத்திற்குச் (root directory) சென்று தட்டச்சு செய்யவும்:
mkdir contracts
mkdir scripts
contracts/என்பது நமது ஹலோ வேர்ல்ட் திறன் ஒப்பந்தக் குறியீட்டுக் கோப்பை வைத்திருக்கும் இடமாகும்scripts/என்பது நமது ஒப்பந்தத்தை நிலைநிறுத்தவும் அதனுடன் தொடர்புகொள்ளவுமான ஸ்கிரிப்ட்களை வைத்திருக்கும் இடமாகும்
படி 10: நமது ஒப்பந்தத்தை எழுதவும்
நாம் எப்போதுதான் குறியீட்டை எழுதப் போகிறோம் என்று நீங்கள் உங்களைக் கேட்டுக்கொள்ளலாம்?? இதோ, நாம் படி 10-க்கு வந்துவிட்டோம்.
உங்களுக்குப் பிடித்த எடிட்டரில் hello-world திட்டத்தைத் திறக்கவும் (எங்களுக்கு VSCode (புதிய தாவலில் திறக்கும்) பிடிக்கும்). திறன் ஒப்பந்தங்கள் Solidity எனப்படும் மொழியில் எழுதப்படுகின்றன, இதைத்தான் நமது HelloWorld.sol திறன் ஒப்பந்தத்தை எழுதப் பயன்படுத்துவோம்.
- “contracts” கோப்புறைக்குச் சென்று HelloWorld.sol என்ற புதிய கோப்பை உருவாக்கவும்
- இந்தப் பயிற்சிக்காக நாம் பயன்படுத்தப் போகும் எத்தீரியம் அறக்கட்டளையின் மாதிரி ஹலோ வேர்ல்ட் திறன் ஒப்பந்தம் கீழே கொடுக்கப்பட்டுள்ளது. கீழே உள்ள உள்ளடக்கங்களை நகலெடுத்து உங்கள் HelloWorld.sol கோப்பில் ஒட்டவும், மேலும் இந்த ஒப்பந்தம் என்ன செய்கிறது என்பதைப் புரிந்துகொள்ளக் கருத்துகளைப் (comments) படிக்க மறக்காதீர்கள்:
// SPDX-License-Identifier: MIT
// சொற்பொருள் பதிப்பாக்கத்தைப் பயன்படுத்தி, Solidity பதிப்பைக் குறிப்பிடுகிறது.
// மேலும் அறிய: https://docs.soliditylang.org/en/latest/layout-of-source-files.html#pragma
pragma solidity ^0.8.24;
// `HelloWorld` என்ற பெயரிலான ஒரு ஒப்பந்தத்தை வரையறுக்கிறது.
// ஒரு ஒப்பந்தம் என்பது செயல்பாடுகள் மற்றும் தரவுகளின் (அதன் நிலை) தொகுப்பாகும். நிலைநிறுத்தப்பட்டவுடன், ஒரு ஒப்பந்தம் எத்திரியம் தொகுதிச்சங்கிலியில் ஒரு குறிப்பிட்ட முகவரியில் இருக்கும். மேலும் அறிய: https://docs.soliditylang.org/en/latest/structure-of-a-contract.html
contract HelloWorld {
// `string` வகையிலான `message` என்ற நிலை மாறியை அறிவிக்கிறது.
// நிலை மாறிகள் என்பவை ஒப்பந்த சேமிப்பகத்தில் நிரந்தரமாக சேமிக்கப்படும் மதிப்புகளைக் கொண்ட மாறிகள் ஆகும். `public` என்ற சிறப்புச்சொல், ஒப்பந்தத்திற்கு வெளியிலிருந்து மாறிகளை அணுகக்கூடியதாக மாற்றுகிறது, மேலும் பிற ஒப்பந்தங்கள் அல்லது கிளையண்டுகள் மதிப்பை அணுகுவதற்கு அழைக்கக்கூடிய ஒரு செயல்பாட்டை உருவாக்குகிறது.
string public message;
// பல வகுப்பு அடிப்படையிலான பொருள்-நோக்கு மொழிகளைப் போலவே, கன்ஸ்ட்ரக்டர் என்பது ஒப்பந்தம் உருவாக்கப்படும்போது மட்டுமே செயல்படுத்தப்படும் ஒரு சிறப்புச் செயல்பாடாகும்.
// ஒப்பந்தத்தின் தரவைத் துவக்க கன்ஸ்ட்ரக்டர்கள் பயன்படுத்தப்படுகின்றன. மேலும் அறிய: https://docs.soliditylang.org/en/latest/contracts.html#constructors
constructor(string memory initMessage) {
// `initMessage` என்ற சரம் அளபுருவை ஏற்றுக்கொண்டு, ஒப்பந்தத்தின் `message` சேமிப்பக மாறியில் மதிப்பை அமைக்கிறது).
message = initMessage;
}
// ஒரு சரம் அளபுருவை ஏற்றுக்கொண்டு `message` சேமிப்பக மாறியைப் புதுப்பிக்கும் ஒரு பொதுவான செயல்பாடு.
function update(string memory newMessage) public {
message = newMessage;
}
}
இது மிகவும் எளிமையான திறன் ஒப்பந்தமாகும், இது உருவாக்கப்படும்போது ஒரு செய்தியைச் சேமிக்கிறது மற்றும் update செயல்பாட்டை அழைப்பதன் மூலம் புதுப்பிக்கப்படலாம்.
படி 11: உங்கள் திட்டத்துடன் மெட்டாமேஸ்க் மற்றும் Alchemy-ஐ இணைக்கவும்
நாம் ஒரு மெட்டாமேஸ்க் பணப்பை, Alchemy கணக்கை உருவாக்கி, நமது திறன் ஒப்பந்தத்தை எழுதியுள்ளோம், இப்போது மூன்றையும் இணைக்க வேண்டிய நேரம் இது.
உங்கள் மெய்நிகர் பணப்பையிலிருந்து அனுப்பப்படும் ஒவ்வொரு பரிவர்த்தனைக்கும் உங்கள் தனித்துவமான தனிப்பட்ட திறவுகோலைப் பயன்படுத்தி ஒரு கையொப்பம் தேவை. நமது நிரலுக்கு இந்த அனுமதியை வழங்க, நமது தனிப்பட்ட திறவுகோலை (மற்றும் Alchemy API திறவுகோலை) ஒரு சூழல் கோப்பில் (environment file) பாதுகாப்பாகச் சேமிக்கலாம்.
பரிவர்த்தனைகளை அனுப்புவது பற்றி மேலும் அறிய, பரிவர்த்தனைகள் ஆவணத்தைப் பார்க்கவும்.
நமது திட்டத்தின் மூலக் கோப்பகத்தில் ஒரு .env கோப்பை உருவாக்கி, அதில் உங்கள் மெட்டாமேஸ்க் தனிப்பட்ட திறவுகோல் மற்றும் HTTP Alchemy API URL-ஐச் சேர்க்கவும்.
- உங்கள் தனிப்பட்ட திறவுகோலை ஏற்றுமதி செய்ய இந்த வழிமுறைகளைப் (புதிய தாவலில் திறக்கும்) பின்பற்றவும்
- HTTP Alchemy API URL-ஐப் பெறக் கீழே பார்க்கவும்
Alchemy API URL-ஐ நகலெடுக்கவும்
உங்கள் .env இதுபோன்று இருக்க வேண்டும்:
API_URL="https://eth-sepolia.g.alchemy.com/v2/your-api-key"
PRIVATE_KEY="your-metamask-private-key"
இவற்றை நமது குறியீட்டுடன் இணைக்க, படி 13-இல் உள்ள நமது hardhat.config.js கோப்பில் இந்த மாறிகளைக் குறிப்பிடுவோம். Node.js தானாகவே .env கோப்புகளைப் படிக்க முடியும், எனவே நிறுவக் கூடுதல் தொகுப்பு எதுவும் தேவையில்லை.
.env-ஐ கமிட் செய்ய வேண்டாம்! உங்கள் .env கோப்பை யாருடனும் பகிரவோ அல்லது வெளிப்படுத்தவோ வேண்டாம் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள், ஏனெனில் அவ்வாறு செய்வதன் மூலம் உங்கள் ரகசியங்களை நீங்கள் சமரசம் செய்கிறீர்கள். நீங்கள் பதிப்புக் கட்டுப்பாட்டைப் (version control) பயன்படுத்தினால், உங்கள் .env-ஐ ஒரு gitignore கோப்பில் சேர்க்கவும்.படி 12: Ethers.js-ஐ நிறுவவும்
Ethers.js என்பது நிலையான ஜேசன்-ஆர்பிசி முறைகளை மிகவும் பயனர் நட்பு முறைகளுடன் மூடுவதன் மூலம் எத்திரியத்துடன் தொடர்புகொள்வதையும் கோரிக்கைகளை அனுப்புவதையும் எளிதாக்கும் ஒரு நிரலகமாகும்.
கூடுதல் கருவிகள் மற்றும் நீட்டிக்கப்பட்ட செயல்பாட்டிற்கான செருகுநிரல்களை (Plugins) (புதிய தாவலில் திறக்கும்) ஒருங்கிணைப்பதை Hardhat மிகவும் எளிதாக்குகிறது. ஒப்பந்த நிலைநிறுத்தத்திற்கு Ethers செருகுநிரலை (புதிய தாவலில் திறக்கும்) நாம் பயன்படுத்திக் கொள்வோம் (Ethers.js (புதிய தாவலில் திறக்கும்) சில மிகச் சிறந்த ஒப்பந்த நிலைநிறுத்த முறைகளைக் கொண்டுள்ளது).
உங்கள் திட்டக் கோப்பகத்தில் தட்டச்சு செய்யவும்:
npm install --save-dev @nomicfoundation/hardhat-ethers ethers
அடுத்த படியில் நமது hardhat.config.js-இல் செருகுநிரலையும் சேர்ப்போம்.
படி 13: hardhat.config.js-ஐப் புதுப்பிக்கவும்
இதுவரை நாம் பல சார்புகளையும் (dependencies) செருகுநிரல்களையும் சேர்த்துள்ளோம், இப்போது நமது திட்டத்திற்கு அவை அனைத்தையும் பற்றித் தெரியப்படுத்த hardhat.config.js-ஐப் புதுப்பிக்க வேண்டும்.
உங்கள் hardhat.config.js-ஐ இதுபோன்று புதுப்பிக்கவும்:
import { existsSync } from "node:fs"
import hardhatEthers from "@nomicfoundation/hardhat-ethers"
import { configVariable, defineConfig } from "hardhat/config"
// .env கோப்பு இருந்தால், அதிலிருந்து API_URL மற்றும் PRIVATE_KEY ஆகியவற்றை process.env இல் ஏற்றவும்
if (existsSync(".env")) process.loadEnvFile()
export default defineConfig({
plugins: [hardhatEthers],
solidity: "0.8.34",
networks: {
sepolia: {
type: "http",
url: configVariable("API_URL"),
accounts: [configVariable("PRIVATE_KEY")],
},
},
})
configVariable ஆனது தேவைப்படும்போது மட்டுமே சூழல் மாறியிலிருந்து ஒவ்வொரு மதிப்பையும் படிக்குமாறு Hardhat-க்குச் சொல்கிறது, எனவே மதிப்புகள் அமைக்கப்படுவதற்கு முன்பே compile போன்ற கட்டளைகள் வேலை செய்யும். உங்கள் தனிப்பட்ட திறவுகோலை ஒரு எளிய உரை கோப்பில் வைத்திருக்க நீங்கள் விரும்பவில்லை என்றால், Hardhat மறைகுறியாக்கப்பட்ட விசைச் சேமிப்பகத்திலிருந்து உள்ளமைவு மாறிகளையும் (புதிய தாவலில் திறக்கும்) படிக்க முடியும்.
படி 14: நமது ஒப்பந்தத்தைத் தொகுக்கவும்
இதுவரை எல்லாம் சரியாக வேலை செய்கிறதா என்பதை உறுதிப்படுத்த, நமது ஒப்பந்தத்தைத் தொகுப்போம். compile பணி என்பது உள்ளமைக்கப்பட்ட Hardhat பணிகளில் ஒன்றாகும்.
கட்டளை வரியிலிருந்து இயக்கவும்:
npx hardhat compile
நீங்கள் முதல்முறை தொகுக்கும்போது, Hardhat Solidity தொகுப்பானைப் பதிவிறக்குகிறது. அதன் பிறகு Compiled 1 Solidity file with solc 0.8.34 போன்ற ஒன்றை நீங்கள் காண வேண்டும். இல்லையென்றால், நீங்கள் எப்போதும் Alchemy டிஸ்கார்ட் (புதிய தாவலில் திறக்கும்) இல் செய்தி அனுப்பலாம்.
படி 15: நமது நிலைநிறுத்த ஸ்கிரிப்டை எழுதவும்
இப்போது நமது ஒப்பந்தம் எழுதப்பட்டு, நமது உள்ளமைவுக் கோப்பு தயாராக உள்ளதால், நமது ஒப்பந்த நிலைநிறுத்த ஸ்கிரிப்டை எழுத வேண்டிய நேரம் இது.
scripts/ கோப்புறைக்குச் சென்று deploy.js என்ற புதிய கோப்பை உருவாக்கி, அதில் பின்வரும் உள்ளடக்கங்களைச் சேர்க்கவும்:
import { network } from "hardhat"
const { ethers } = await network.create()
const HelloWorld = await ethers.getContractFactory("HelloWorld")
// நிலைநிறுத்தத்தைத் தொடங்கவும், இது ஒரு ஒப்பந்தப் பொருளாக மாறும் ஒரு ப்ராமிஸை வழங்கும்
const hello_world = await HelloWorld.deploy("Hello World!")
await hello_world.waitForDeployment()
console.log("Contract deployed to address:", await hello_world.getAddress())
இந்தக் குறியீட்டின் ஒவ்வொரு வரியும் என்ன செய்கிறது என்பதைப் பார்ப்போம்.
const { ethers } = await network.create()
Hardhat 3-இல், ஒரு ஸ்கிரிப்ட் வெளிப்படையாக ஒரு பிணையத்திற்கான இணைப்பைத் திறக்கிறது. நீங்கள் ஸ்கிரிப்டை இயக்கும்போது --network விருப்பத்துடன் நீங்கள் தேர்ந்தெடுக்கும் பிணையத்துடன் network.create() இணைகிறது, மேலும் hardhat-ethers செருகுநிரல் அந்த இணைப்பில் ஒரு ethers பொருளைச் சேர்க்கிறது.
const HelloWorld = await ethers.getContractFactory("HelloWorld")
ethers.js-இல் உள்ள ContractFactory என்பது புதிய திறன் ஒப்பந்தங்களை நிலைநிறுத்தப் பயன்படுத்தப்படும் ஒரு சுருக்கமாகும், எனவே இங்குள்ள HelloWorld என்பது நமது ஹலோ வேர்ல்ட் ஒப்பந்தத்தின் நிகழ்வுகளுக்கான ஒரு தொழிற்சாலையாகும். hardhat-ethers செருகுநிரலைப் பயன்படுத்தும்போது ContractFactory மற்றும் Contract நிகழ்வுகள் இயல்பாகவே முதல் கையொப்பமிடுபவருடன் இணைக்கப்படும்.
const hello_world = await HelloWorld.deploy("Hello World!")
ContractFactory-இல் deploy()-ஐ அழைப்பது நிலைநிறுத்தத்தைத் தொடங்கும், மேலும் Contract-க்குத் தீர்வு காணும் ஒரு Promise-ஐ வழங்கும். இது நமது ஒவ்வொரு திறன் ஒப்பந்தச் செயல்பாடுகளுக்கும் ஒரு முறையைக் கொண்ட பொருளாகும். deploy()-க்கு நீங்கள் அனுப்பும் வாதங்கள் ஒப்பந்தத்தின் ஆக்கிக்குச் செல்லும், இங்கே அது ஆரம்பச் செய்தியாகும்.
நிலைநிறுத்தப் பரிவர்த்தனை ஒரு தொகுதியில் சேர்க்கப்படும் வரை waitForDeployment() காத்திருக்கும், மேலும் getAddress() புதிய ஒப்பந்தத்தின் முகவரியை வழங்கும். கூடுதல் விவரங்களுக்கு ethers.js ஒப்பந்த ஆவணத்தைப் (புதிய தாவலில் திறக்கும்) பார்க்கவும்.
படி 16: நமது ஒப்பந்தத்தை நிலைநிறுத்தவும்
இறுதியாக நமது திறன் ஒப்பந்தத்தை நிலைநிறுத்தத் தயாராகிவிட்டோம்! கட்டளை வரிக்குச் சென்று இயக்கவும்:
npx hardhat run scripts/deploy.js --network sepolia
அதன் பிறகு நீங்கள் இது போன்ற ஒன்றைக் காண வேண்டும்:
Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570
நாம் Sepolia Etherscan (புதிய தாவலில் திறக்கும்)-க்குச் சென்று நமது ஒப்பந்த முகவரியைத் தேடினால், அது வெற்றிகரமாக நிலைநிறுத்தப்பட்டிருப்பதைக் காண முடியும். பரிவர்த்தனை இதுபோன்று இருக்கும்:
From முகவரி உங்கள் மெட்டாமேஸ்க் கணக்கு முகவரியுடன் பொருந்த வேண்டும் மற்றும் To முகவரி “Contract Creation” என்று கூறும், ஆனால் நாம் பரிவர்த்தனையைக் கிளிக் செய்தால் To புலத்தில் நமது ஒப்பந்த முகவரியைக் காண்போம்:
வாழ்த்துகள்! நீங்கள் எத்திரியம் சங்கிலியில் ஒரு திறன் ஒப்பந்தத்தை நிலைநிறுத்திவிட்டீர்கள் 🎉
உள்முகமாக என்ன நடக்கிறது என்பதைப் புரிந்துகொள்ள, உங்கள் Alchemy டாஷ்போர்டில் (புதிய தாவலில் திறக்கும்) உங்கள் "Hello World" செயலி பெற்ற கோரிக்கைகளைப் பார்க்கலாம்.
நாம் .deploy() செயல்பாட்டை அழைத்தபோது Hardhat/Ethers நமக்காக உள்முகமாகச் செய்த ஒரு சில ஜேசன்-ஆர்பிசி அழைப்புகளை அங்கே காண்பீர்கள். இங்கே குறிப்பிட வேண்டிய இரண்டு முக்கியமானவை eth_sendRawTransaction, இது நமது ஒப்பந்தத்தை Sepolia சங்கிலியில் எழுதுவதற்கான கோரிக்கையாகும், மற்றும் eth_getTransactionByHash இது ஹாஷ் கொடுக்கப்பட்ட நமது பரிவர்த்தனை பற்றிய தகவல்களைப் படிப்பதற்கான கோரிக்கையாகும் (பரிவர்த்தனைகளை அனுப்பும்போது இது ஒரு பொதுவான முறை). பரிவர்த்தனைகளை அனுப்புவது பற்றி மேலும் அறிய, பரிவர்த்தனைகள் ஆவணத்தைப் பார்க்கவும்.
இந்தப் பயிற்சிக்கு அவ்வளவுதான். அடுத்து, உங்கள் ஒப்பந்தத்திற்கான பயனர் இடைமுகத்தை நீங்கள் உருவாக்கலாம்.





