Ethereum Gas – descriere completă, pas cu pas

az ethereum gas kriptopénz hírek mycryptoption

Ethereum Gas este o unitate care măsoară volumul de calcul necesar efectuării anumitor operațiuni. Fiecare operațiune efectuată în Ethereum – fie vorba de tranzacție sau contract smart – necesită cheltuirea unei anumite cantități de gas. Minerii plătesc în Ether echivalentul sumei ce corespunde cu cantitatea totală de gas de care au avut nevoie pentru executarea întregii operațiuni.

Ethereum Gas este astfel „combustibilul” ecosistemului Ethereum. Fiecare activitate derulată în Ethereum – simple tranzacții, contracte smart, ICO – necesită o anumită cantitate de gas. Ethereum gas este acea măsură care calculează suma taxelor pe care rețeaua trebuie să le plătească în vederea executării unei operațiuni. Din acest articol poți afla cum funcționează Ethereum gas.

De ce n-avem nevoie de gas în cazul Bitcoin?

Bitcoin a fost creat ca răspuns la același tip de întrebare. Și anume, poate fi creată o formă a banilor care să fie transferată între doi oameni, fără intermediar? Poate fi concepută o valută descentralizată capabilă să funcționeze cu tehnologia blockchain? Satoshi Nakamoto a răspuns la aceste întrebări, atunci când a creat Bitcoin. Ni s-a ofeit un sistem monetar descentralizat care poate transfera bani de la o persoană la alta, fără intermediari.

De-odată cu Bitcoin a apărut o problemă, care este și cea a blockchain-urilor de primă generație. Acestea permiteau doar tranzacții monetare, la care nu puteau fi adăugate condiții. Monica putea trimite lui Adrian 5 BTC, dar nu-i era permis să lege tranzacția de condiții. Astfel, nu-i putea spune lui Adrian că el va primii bani doar dacă execută diverse sarcini. Introducerea acestor condiții necesita script-uri complicate. Ca procesul să devină mai fluent, era nevoie de încă ceva. Acel „ceva”a venit sub forma contractelor smart.

Ce este contractul smart?

Contractele smart ajută ca schimbul de bani, imobile sau orice altă valoare să fie efectuat în mod practic, neconflictual, eliminând serviciile unei a treia părți (al unui intermediar). Despre Ethereum-ul creat de Vitalik Buterin putem afirma că a contribuit la dezvoltarea actualei generații. Prin Ethereum, s-a demonstrat lumii cum a reușit să evolueze blockchain-ul, de la un simplu mecanism de plată, la un element mult mai puternic și însemnat.

Contractele smart sunt contracte automate. Ele execută (în mod independent) instrucțiunile speciale programate în codul lor, la îndeplinirea condițiilor stabilite. Cu ajutorul contractelor smart, în ecosistemul Ethereum lucrurile decurg fără dificultăți. Dacă cineva execută o anumită sarcină în Ethereum, va iniția un contract smart cu una sau mai multe persoane.

Contractele smart cuprind o serie de comenzi, prin utilizarea limbajului de programare „solidity” și care funcționează pe baza instrumentului IFTTT: IF-THIS-THEN-THAT. Fundamental, dacă prima comandă a fost executată, atunci ea va executa următoarele funcții, în mod repetat, până ce nu ajunge la finalul contractului.

Automatele

O bună modalitate de înțelegere a funcționării acestora este imaginarea unor automate de produse. Fiecare pas efectuat de tine va declanșa efectuarea pasului următor. Este asemenea efectului de domino. Să analizăm pașii pe care-i efectuezi în timpul interacțiunii cu automatul:

  1. Introduci bani în automat
  2. Apeși butonul corespunzător produsului dorit
  3. Primești produsul

Privește aceste etape și gândește-te. Va funcționa vreuna dacă n-ai efectuat-o pe cea anterioară? Fiecare pas este legat de cel precedent. Trebuie să mai adăugăm un factor, iar astfel am obținut toate componentele contractelor smart. Si anume: n-a fost implicată vreo a treia parte; după cum ai văzut, de-a lungul întregii interacțiuni, ai intrat în contact doar cu aparatul.

Aceeași tranzacție, în Ethereum

Cum ar arăta această tranzacție dacă s-ar fi petrecut în rețeaua Ethereum? Să presupunem că nu demult ai cumpărat ceva din automatul rețelei Ethereum; cum vor arăta pașii?

Primul pas – Introduci bani în aparat, iar acest lucru va fi înregistrat de toate nodurile de legătură ale rețelei Ethereum, iar tranzacția va fi actualizată în registru.

Al doilea pas – Apeși butonul ce corespunde produsului dorit, iar rețeaua va înregistra acest fapt, fiind actualizat atât în rețeaua Ethereum, cât și în registru.

Al treilea pas – Primești produsul, iar acest lucru este înregistrat de toate nodurile și de registru.

Rețeaua va înregistra și actualiza fiecare tranzacție efectuată prin contracte smart. Acest lucru înseamnă că fiecare participant la contract va fi responsabil pentru faptele sale. În acest fel este eliminată rea-voința, fiecare faptă a participantului fiind publică și întreaga rețea o poate vedea.

Ce este mașina virtuală Ethereum (EVM)?

Înainte de-a putea înțelege ce este mașina virtuală Ethereum (EVM), trebuie să vedem de ce avem nevoie de ea. Să ne întoarcem la contractele smart. Ce calități avantajoase am dori să includem în ele? Trebuie să avem în vedere că elementelele de pe blockchain trebuie să fie ireversibile și capabile să ruleze prin mai multe noduri, fără a le periclita integritatea. Ca urmare, funcționalitatea contractelor smart este dată de următoarele trei calități:

Determinism

Finalitate

Izolare

1. Determinism

Un program este determinist dacă în urma introducerii unei valori date ne furnizează același rezultat de fiecare dată. De exemplu, dacă 2 + 1 = 3, atunci 2 + 1 va fi ÎNTOTDEAUNA  3. Astfel, atunci când în urma introducerii unui set inițial de date un program ne oferă același rezultat pe diverse calculatoare, acesta este numit determinist.

Există însă situații în care un program nu va funcționa în mod determinist – de exemplu, dacă un programator introduce un algoritm nedeterminist sau date nedeterminate. La fel, dacă un program obține date în timpul rulării, iar sursa lor nu poate fi determinată, acel program nu va fi determinist.

2. Finalitate

În matematică, teoria calculabilității analizează o eroare pe care o numim „problema opririi”, atunci când un calculator nu știe dacă programul își poate executa funcția într-un termen stabilit. Alan Turing a dedus în 1936, folosindu-se de teoria mulțimilor elaborată de Georg Cantor, că nu există vreun mod ca să afle dacă un anumit program poate fi sau nu finalizat într-o limită de timp.

Aceasta este și problema contractelor smart, fiindcă, prin definiție, contractele trebuie să fie capabile de a fi finalizate într-un termen stabilit. Există însă diferite măsuri pe care le putem lua în vederea terminării unui contract, ceea ce ne ajută să nu intrăm într-un ciclu nesfârșit:

  • Teorema de incompletitudine a lui Turing – un blockchain incomplet Turing va avea funcționalitate limitată și nu va fi capabil de cicluri sau salturi; putem evita astfel să se formeze cicluri care nu se mai termină.
  • Contorul de trepte și taxe – programul va putea urmări cu ușurință „pașii” efectuați (număr comenzilor executate), iar în cazul contabilizării unui număr stabilit, va termina contractul. Contorul de taxe este o altă soluție. Aici contractele sunt executate prin taxe plătite dinainte. Executarea fiecărei comenzi va necesita taxe diferite. Dacă valoarea sumei cheltuite depășește valoarea taxei plătite în avans, contractul va înceta.

3. Izolare

Oricine poate introduce un contract smart în blockchain. Chiar de aceea, contractele pot conține, voit sau întâmplător, viruși sau erori. Dacă nu este izolat, contractul poate perturba întreaga rețea. Astfel, este indispensabil ca, în vederea protejării ecosistemului de efectele negative, contractele să fie păstrate în mod izolat.

După ce-am făcut cunoștință cu aceste caracteristici, să vedem cum sunt ele aplicate. În general,contractele smart sunt desfășurate prin două sisteme:

Mașini virtuale: Utilizate de Ethereum.

Docker: Utilizat de Fabric.

Mașini virtuale  

Mașinile virtuale asigură un mediu mai determinist, mai finalizabil și mai izolat pentru încheierea contractelor smart. Dar și docker are avantajul său. Acesta asigură flexibilitatea limbajului de programare, în timp ce în cazul unei mașini virtuale, precum EVM, este nevoie de asimilarea unui limbaj total nou (solidity) pentru crearea contractelor smart.

EVM este mașina virtuală în care funcționează toate contractele smart din Ethereum. Aceasta este o mașină simplă Turing-Complete de 256 bytes, ce permite ca, prin luarea în considerare a resurselor și memoriei, orice program derulat în EVM să rezolve orice problemă.

Ce este Ethereum Gas?

Képtalálat a következőre: „ethereum gas”

Cum am mai spus în introducere, gas este o unitate care măsoară eforturile de calcul necesare executării unor operațiuni. Majoritatea contractelor smart derulate în EVM este codificată prin Solidity (Ethereum planifică, în viitor, trecerea de la solidity la viper). Fiecare linie a Solidity necesită o anumită cantitate de gas.

Prin analogie, vom pricepe mult mai ușor. Astfel, să presupunem că te pregătești de drum. Înainte de a porni, urmează pașii: du-te la benzinărie șistabilește de cât combustibil vei avea nevoie; alimentează-ți vehiculul; plătește suma datorată pentru combustibil.

Să vedem asemănarea cu Ethereum. Conducerea vehiculului este procesul pe care dorești să-l execuți, de exmplu  cel al funcțiilor contractelor smart. În cazul de față, combustibilul reprezintă gas-ul, iar benzinăria sunt minerii. Suma pe care o vei plăti va reprezenta recompensa minerilor. Pentru toate operațiunile pe care utilizatorii doresc să le execute în Ethereum, ei vor furniza gas în vederea:

Acoperirii traficului de date

Asigurării întregului proces de calcul

De ce există sistemul Gas?

Asemenea celorlalte sisteme peer-topeer, ce necesită validare, și Ethereum depinde în mare măsură de hashrate-ul minerilor. Cu cât există mai mulți mineri, cu atât mai mare va fi hashrate-ul, iar sistemul va deveni proporțional mai sigur și mai rapid. Ca sistemul să atragă cât mai mulți mineri, acesta trebuie conceput să fie cât mai profitabil și tentant pentru ei.

În Ethereum, există două modalități de câștig: prin minatul blocurilor și prin obținerea recompensei de bloc. Minerii sunt responsabili de introducerea tranzacțiilor în blocuri. În vederea acestora, ei trebuie să-și folosească capacitatea de calcul pentru validarea contractelor smart. Sistemul Gas le asigură perceperea unei anumite taxe, ce este denumită taxa de miner și care îi motivează să participe activ la activitățile din ecosistem. Ce taxă pot ei percepe? Înainte s-o calculăm, să vedem cum măsurăm Gas-ul.

Cum convertim Gas în Ether?

Gas este măsurat în unitate gas. Tranzacția trimisă către rețeaua Ethereum va plăti o  anumită sumă (discretă, de exemplu 100) de gas, în funcție de câte comenzi EVM trebuie să efectueze. Cum vom converti gas pe ether?

Nu există un preț fix de conversie. Inițiatorul tranzacției stabilește prețul gas care îi convine. De partea cealaltă, este datoria minerului să verifice tranzacțiile ce-i convin. În general, prețul gas este de 20 Gwei (0,00000002 ETH), dar în timpul traficului mare de pe rețea poate crește – deoarece există mai multe tranzacții care concurează să ajungă în blocul următor.

Ce este limita Gas a Ethereum?

Ca un proces să fie executat în Ethereum, inițiatorul tranzacției trebuie – înainte de a o introduce în rețea – să furnizeze o limită gas. Aceasta reprezintă cantitatea maximă de gas pe care inițiatorul tranzacției este dispus să o plătească pentru ea.

La stabilirea limitei gas, trebuie avute în vedere următoarele aspecte:

  • Diversele operațiuni vor avea taxe gas diferite
  • Minerii pot înceta executarea, dacă gas-ul s-a terminat
  • Dacă rămâne ceva gas, acesta va fi returnat imediat celui care a generat fincționarea

Să vedem acest lucru prin prisma unui scenariu ipotetic. Să presupunem că vom adăuga două numere în contract, iar acesta va efectua următoarele operațiuni:

  • stocarea a 10 variabile, ceea ce va costa 45 gas
  • adăugarea a două variabile, pentru 10 gas
  • furnizarea rezultatului, în schimbul a 45 gas

Presupunând că expeditorul va stabili o limită de 120 gas, iar minerul va utiliza în total 100 gas (45 + 10 + 45), taxa ce-i cuvine minerului va fi – dacă ne bazăm pe faptul că un gas valorează 20 Gwei –  0,000002 ETH (100 * 20 Gwei).

Cât gas ne rămâne?

120 – 100 = 20 gas.

Cei 20 de gas neutilizați vor fi returnați expeditorului  (20 * 20 Gwei) = 0,0000004 ETH.

Privind limita gas, există două posibile scenarii:

Limita stabilită este prea mică

Dacă în timpul unei operațiuni se termină gas-ul, aceasta va reveni la starea inițială, ca și cum nimic nu s-ar fi întâmplat, însă generatorul procesului trebuie să plătească minerilor costurile aferente calculelor pe care le-au efectuat, iar operațiunea se va adăuga blocului (chiar dacă nu s-a executat).

Întorcându-ne la comparația privind călătoria: dacă n-ai alimentat destul combustibil în vehicul, nu vei ajunge în locul dorit; însă ai plătit la benzinărie pentru combustibil.

Să vedem cum funcționează acestea în contractele smart, după următorii pași:

  • stocarea a 10 variabile, ce costă 45 gas
  • adăugarea a două variabile, pentru 10 gas
  • furnizarea rezultatului, în schimbul a 45 gas. În acest caz însă, expeditorul stabilește o limită de 90 gas. Știm deja că pentru efectuarea tranzacției avem nevoie de 100 gas. Potrivit acestui scenariu, minerul efectua procesul și va calcula taxa după o valoare de 90 gas (90 * 20 Gwei) = 0,0000018 ETH. În final, contractul ajunge în starea inițială, iar tranzacția intră în blockchain.

Limita gas este prea mare

Ce s-ar întâmpla dacă am stabili o limită gas prea mare? Restul va fi înapoiat expeditorului? Toretic funcționează bine, dar în realitate doar aproximativ.

Minerii sunt mărginiți de limitarea gas a blocului, care să presupunem că este de  6700000 gas.Operațiunea de bază costă 21000 gas. Știm că minerii pot finaliza doar tranzacții a căror valoare nu depășește sau este egală cu limita gas a blocului.

Astfel, dacă avem o tranzacție A (care ne oferă simplu ETH-ul), cu o limită de 42.000 gas, și o tranzacție B și C (tot de transfer simplu ETH), cu o limită de 21.000 fiecare, adăgarea cărui bloc va fi mai convenabilă minerului? Oare va fi efectuată tranzacția A, iar cantitatea uriașă de gas va fi restituită? Chiar din acest motiv, nu este recomandabil să stabilim o limită gas prea mare. Aceasta trebuie stabilită astfel încât să fie doar cu un pic mare decât cantitatea gas necesară efectuării tranzacțiilor.

Mai multe articole