Kao dobavljač ethersa, razumijem važnost točne procjene podataka o implementaciji ugovora kada radim s Ethereum blockchainom. U ovom postu na blogu podijelit ću neke uvide o tome kako dobiti procjenu podataka o implementaciji ugovora pomoću ethers.js, popularne JavaScript biblioteke za interakciju s Ethereum blockchainom.
Razumijevanje implementacije ugovora na Ethereumu
Prije nego što zaronimo u tehničke detalje procjene podataka o implementaciji ugovora, idemo ukratko razumjeti što podrazumijeva implementacija ugovora na Ethereumu. Kada implementirate pametni ugovor na Ethereum blockchain, u biti stvarate novu instancu koda ugovora i pohranjujete ga na blockchain. Ovaj proces zahtijeva slanje transakcije mreži, koja uključuje bajt kod ugovora i sve potrebne argumente konstruktora.
Trošak implementacije ugovora određen je količinom plina potrebnog za izvršenje transakcije implementacije. Plin je mjerna jedinica za računalni rad potreban za izvršenje transakcije na mreži Ethereum. Što je ugovorni kod složeniji i što su veći argumenti konstruktora, to će više plina biti potrebno za implementaciju.
Preduvjeti
Da biste slijedili primjere u ovom postu na blogu, morat ćete imati sljedeće:
- Node.js instaliran na vašem računalu
- Osnovno razumijevanje JavaScripta i Ethereum blockchaina
- Poznavanje etera.js
Možete instalirati ethers.js pomoću npm-a pokretanjem sljedeće naredbe:
npm instalirati eter
Procjena podataka o implementaciji ugovora s ethers.js
Da bismo procijenili podatke o implementaciji ugovora, morat ćemo izvršiti sljedeće korake:
- Sastavite pametni ugovor da biste dobili bajt kod i ABI.
- Stvorite novu instancu ethers.js
ContractFactoryrazreda. - Koristite
ContractFactoryza procjenu plina potrebnog za postavljanje.
Prođimo detaljno kroz svaki korak.
Korak 1: Sastavite pametni ugovor
Prvi korak je sastavljanje pametnog ugovora kako bi se dobio bajt kod i ABI. Možete koristiti alat poputsolc(kompilator Solidity) za sastavljanje vašeg ugovora. Evo primjera kako sastaviti jednostavan Solidity ugovor pomoćusolcu skripti Node.js:
const solc = zahtijevaju ('solc'); const fs = zahtijevaju ('fs'); // Čitanje izvornog koda ugovora const sourceCode = fs.readFileSync('SimpleContract.sol', 'utf8'); // Sastavite ugovor const input = { language: 'Solidity', izvori: { 'SimpleContract.sol': { content: sourceCode } }, postavke: { outputSelection: { '*': { '*': ['abi', 'evm.bytecode'] } } } }; const output = JSON.parse(solc.compile(JSON.stringify(input)))); const contract = output.contracts['SimpleContract.sol']['SimpleContract']; const bytecode = contract.evm.bytecode.object; const abi = ugovor.abi; console.log('Bajt kod:', bajt kod); console.log('ABI:', abi);
U ovom primjeru čitamo izvorni kod jednostavnog Solidity ugovora iz datoteke pod nazivomJednostavni ugovor.sol. Zatim sastavljamo ugovor pomoćusolci ekstrahirajte bajt kod i ABI iz izlaza kompilacije.
Korak 2: Stvorite novu instancuContractFactoryrazreda
Nakon što imamo bajt kod i ABI, možemo stvoriti novu instancuContractFactoryklasa iz etera.js. TheContractFactoryklasa se koristi za implementaciju novih instanci pametnog ugovora. Evo primjera:
const { eteri } = zahtijevaju ('eteri'); // Povežite se s pružateljem mreže Ethereum const = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'); const wallet = new ethers.Wallet('YOUR_PRIVATE_KEY', provider); // Kreirajte novu instancu ContractFactory const contractFactory = new ethers.ContractFactory(abi, bytecode, wallet);
U ovom primjeru povezujemo se s glavnom mrežom Ethereuma pomoću davatelja usluge Infura. Morat ćete zamijenitiVAŠ_INFURA_ID_PROJEKTAs vašim stvarnim ID-om Infura projekta. Također stvaramo novu instancu novčanika koristeći privatni ključ. ZamijenitiVAŠ_PRIVATNI_KLJUČs vašim stvarnim privatnim ključem.
Korak 3: Procijenite plin potreban za postavljanje
Jednom kada imamoContractFactoryNa primjer, možemo ga koristiti za procjenu plina potrebnog za implementaciju. TheContractFactoryklasa ima metodu tzvgetDeployTransactionkoji vraća objekt transakcije koji predstavlja transakciju postavljanja. Tada možemo koristitiprocijenitiPlinmetoda dobavljača za procjenu plina potrebnog za transakciju. Evo primjera:
// Procjena plina potrebnog za implementaciju const deployTransaction = contractFactory.getDeployTransaction(); const procenjeniGas = čekaj pružatelja.estimateGas(deployTransaction); console.log('Procijenjeni plin za implementaciju:', EstimatedGas.toString());
U ovom primjeru, mi zovemogetDeployTransactionmetodaContractFactoryda biste dobili objekt transakcije implementacije. Zatim koristimoprocijenitiPlinmetoda dobavljača za procjenu plina potrebnog za transakciju. Procijenjeni plin se vraća kao aBigNumber, pa ga pretvaramo u niz prije nego što ga zabilježimo u konzolu.
Čimbenici koji utječu na procjenu plina za implementaciju ugovora
Na procjenu plina za implementaciju ugovora može utjecati nekoliko čimbenika, uključujući:


- Složenost ugovora: Što je šifra ugovora složenija, to će više plina biti potrebno za implementaciju.
- Argumenti konstruktora: Ako vaš ugovor ima argumente konstruktora, veličina i složenost ovih argumenata također mogu utjecati na procjenu plina.
- Zagušenje mreže: Trenutno stanje Ethereum mreže također može utjecati na procjenu plina. Tijekom razdoblja velikog zagušenja mreže, cijene plina mogu biti više, što može povećati ukupne troškove implementacije.
Zaključak
Procjena podataka o implementaciji ugovora važan je korak u procesu implementacije pametnog ugovora na Ethereum blockchainu. Korištenjem ethers.js, možemo jednostavno procijeniti plin potreban za implementaciju i planirati svoje transakcije u skladu s tim.
Ako ste zainteresirani za kupnju etera za svoje blockchain projekte, mi smo pouzdani dobavljač etera. Nudimo visokokvalitetne etere kao što suMetil tert-butil eter (MTBE),Etilen glikol monobutil eter (BCS, EB), iTrietilen glikol monobutil eter (TBG, TB). Kontaktirajte nas kako bismo razgovarali o vašim potrebama nabave i započeli uspješno partnerstvo.
Reference
- dokumentacija za ethers.js: https://docs.ethers.io/v5/
- Dokumentacija Solidityja: https://docs.soliditylang.org/
- Ethereum službena web stranica: https://ethereum.org/





