Kaip parašyti savo pirmąją išmaniąją sutartį?



Sužinokite išmaniosios sutarties kūrimo pagrindus ir pradėkite rašyti savo pirmąją išmaniąją sutartį. Jūs taip pat žinosite, kaip išbandyti išmaniąją sutartį.

Viduje , jūs sužinojote apie tai, kas yra išmaniosios sutartys, skirtingos išmaniųjų sutarčių kalbos ir kaip sukurti pažangią sutarčių kūrimo aplinką. Šiame straipsnyje sužinosite, kaip sudaryti savo pirmąją išmaniąją sutartį. Aš naudosiuRemiksuokite IDE, kad sukurtumėte ir išbandytumėte išmaniąją sutartį.

Žemiau pateiktos temos aptariamos šioje išmaniųjų sutarčių kūrimo pamokoje:





Kurkite savo išmaniąją sutartį

Šios tinklaraščių serijos metu bus sukurta paprasta išmanioji pirkimo užsakymo sutartis. Kai ši serija progresuoja ir diegiant naujas solidumo programavimo kalbos koncepcijas, vystysis ir tobulės pirkimo užsakymo išmanioji sutartis.



Pažangios sutarties struktūra

„Solidity“ išmanioji sutartis iš esmės yra šių dalykų rinkinys

  • duomenis - kuri palaiko dabartinę sutarties būklę
  • funkcija - kurie taiko sutarties būsenai logiką

„Solidity“ išmaniosios sutartys yra standartinės. Bet kokia protinga sutartis prasideda tokiu pareiškimu



„Pragmos“ direktyva

Raktinis žodis „pragma“ gali būti naudojamas įgalinti tam tikras kompiliatoriaus funkcijas ar patikrinimus. Toliau pateiktame teiginyje apibrėžiama, kad šaltinio failas (išmanioji sutartis) nebus kompiliuojamas su kompiliatoriumi anksčiau nei 0.4.0, o kompiliatoriaus versija po 0.6.0. Šis pareiškimas užtikrina, kad įdiegus naują kompiliatoriaus versiją nenumatytas nenumatytas elgesys.

pragmos tvirtumas> = 0,4,0<=0.6.0 

Sutarties deklaravimas

Sutartis deklaruojama naudojant raktinį žodį „sutartis“. Tai skelbia tuščią sutartį, kuri identifikuojama pavadinimu „PurchaseOrder“.

sutartis „PurchaseOrder“ {}

Atitinkamų sutarties duomenų saugojimas

Kiekvienoje sutartyje arba bendru požiūriu kiekvienoje programoje gali reikėti saugoti tam tikrus duomenis. Pridėjus duomenis prie programos, suteikiamas tam tikras lankstumas. Svarbus bruožas yra perėjimas nuo programoje užkoduotų reikšmių prie vartotojo pateiktų reikšmių. Kintamieji leidžia jums saugoti duomenis, žymėti duomenis, gauti duomenis ir jais manipuliuoti.

Protingas sutarčių kūrimas: kintamųjų pristatymas

Tvirtai kintamieji yra dviejų tipų

  1. Vertės tipas: Šio tipo kintamieji perduodami pagal vertę, t. Y. Jie visada nukopijuojami, kai naudojami kaip funkcijos argumentai arba priskiriant. Pvz .: sveiki skaičiai, loginis adresas ir kt.
  2. Nuorodų tipai: Šio tipo kintamieji yra sudėtingo tipo ir perduodami remiantis nuoroda, šie kintamieji netelpa į 256 bitų dydį ir turi būti atidžiai valdomi, nes jų kopijavimas yra brangus.

Duomenų pridėjimas prie „Smart Contract“

Pridėkime prie sutarties tam tikrą duomenų kintamąjį. Kiekvienam pirkimo užsakymui turi būti priskirtas tam tikras produkto kiekis. Pridėkime kintamąjį product_quantity, kuris bus duomenų tipo sveikasis skaičius arba skaičius.

ką ide naudoti java

Kintamasis, kurį dabar pristatome, yra nepasirašytas sveikasis skaičius ir jį žymi uint256, čia 256 reiškia 256 bitų saugyklą.

  • U - nepasirašytas (tai reiškia, kad šis tipas gali pateikti tik teigiamus sveikuosius skaičius, o ne teigiamus ir neigiamus skaičius)
  • INT - sveikasis skaičius
  • 256 - 256 bitų dydis
  • minimali vertė, kurią galima priskirti uint256, yra 0
  • didžiausia vertė, kurią galima priskirti uint256, yra 2 ^ 256-1 [labai didelis skaičius]

Produkto kiekis yra tik teigiama vertė, o šiuo metu daroma prielaida, kad mes patenkinsime labai didelę produkto kiekio vertę.

Deklaruotas kintamasis „product_quantity“ yra sutarties būsenos dalis, todėl jis išlieka arba saugomas sutarties erdvėje. Šiuo metu šio kintamojo numatytoji vertė bus 0.

sutartis „PurchaseOrder“ {uint256 product_quantity}

Konstruktoriaus apibrėžimas

Konstruktorius iškviečiamas, kai dislokuojama sutartis. Konstruktorius inicijuoja sutartį su kai kuriomis reikšmėmis. Pagal dabartinį scenarijų produkto kiekis nustatomas iki 100, kai taikoma sutartis. Parametruotas konstruktorius taip pat gali būti sukurtas perduodant kintamąjį ir inicijuojant produkto_kiekį, naudojant perduotą vertę.

Čia reikia atkreipti dėmesį į prieigos modifikatorių „public“, susietą su konstruktoriumi. Viešasis raktinis žodis nurodo, kad šią funkciją gali pasiekti visi, tai nėra ribojama funkcija.

kaip atspausdinti masyvo php

konstruktorius () public {product_quantity = 100}

Funkcijų pridėjimas

Dabar pridėkime funkciją, kad mūsų programa būtų interaktyvi. Funkcijos yra valdomos galimybės, kurias galima pridėti prie programos. Prieš bet kurią funkciją yra raktinio žodžio funkcija. Apskritai taip atrodo funkcijos deklaracija' funkcija “.

Gauti funkciją

Vienas iš dažniausių bet kuriai programai keliamų reikalavimų yra nuskaityti išsaugotą vertę. Šioje sutartyje turėsime perskaityti reikšmę „produkto_kiekis“. Norint suteikti šią galimybę, pridedama skaitymo arba gavimo funkcija. Naudodamiesi šia funkcija mes nedarome jokio manipuliavimo saugoma verte, mes tik gauname išsaugotą vertę.

Dabar suskirstykime savo gavimo funkciją (get_quantity)

Nr. Raktažodis Vertė
vienas get_quantity (){neperduodami parametrai}
2 visuomenės{kiekvienas gali naudotis funkcija}
3 vaizdas{reiškia, kad funkcija nuskaito tik sutarties būseną, nekeičia sutarties būsenos, taigi ir vaizdas}
4 pateikia kintamąjį, kurio tipas yra uint256 {apibrėžta, ką grąžina funkcija}
funkcija get_quantity () viešoji peržiūra grąžina (uint256) {return product_quantity}

Nustatytojo funkcijos

Skaityti duomenis būtina ir tai įvykdėme paskutiniame skyriuje, tačiau daugumai scenarijų taip pat reikia gebėjimo taip pat rašyti / atnaujinti duomenis. Ši specifinė galimybė suteikiama pridedant nustatymo funkciją. Ši funkcija ima vartotojo vertę įvesties parametro pavidalu. Naudojant vartotojo pateiktą funkcijos reikšmę, kintamojo „produkto_kiekis“ reikšmė įrašoma / atnaujinama.

Dabar suskirstykime nustatytą funkciją („update_quantity“)

Pridedama funkcija produkto kiekio vertei atnaujinti

Nr. Raktažodis Vertė
vienas update_quantity (uint256 reikšmė){perduodama parametro uint256 tipo vertė}
2 visuomenės{kiekvienas gali naudotis funkcija}
3 Nereikalaujama, nes būsena atnaujinama funkcijomis
4 pateikia kintamąjį, kurio tipas yra uint256 (apibrėžta, ką grąžina funkcija)
funkcija update_quantity (uint256 vertė) public {product_quantity = product_quantity + value}

Visa tai sujungus, taip turėtų atrodyti bendra sutartis.

pragmos tvirtumas> = 0,4,0<=0.6.0 contract PurchaseOrder{ uint256 product_quantity //state variable /*Called with the contract is deployed and initializes the value*/ constructor() public{ product_quantity = 100 } // Get Function function get_quantity() public view returns(uint256){ return product_quantity } // Set Function function update_quantity(uint256 value) public { product_quantity = product_quantity + value } } 

Išmaniosios sutarties diegimas

Laikas išbandyti išmaniąją sutartį. Norėdami išbandyti šią protingą sutartį, mes naudosimės Remix Online IDE .

„Remix“ yra internetinė žaidimų aikštelė „ethereum“ išmanioji sutartis . „Remix“ yra visiškai pagrįstas naršykle. „Remix“ suteikia jums internetinę IDE (integruotą kūrimo aplinką), kur galite rašyti savo išmaniąsias sutartis. „Remix“ suteikia jums internetinio patikimumo kompiliatoriaus galimybę. „Remix IDE“ išmanioji sutartis gali būti sudaroma naudojant tam tikrą kompiliatoriaus versiją.

„Remix“ taip pat suteikia galimybę greitai išbandyti išmaniąją sutartį.

„Remix“ pateikia visą įrankių rinkinį, kad būtų galima pradėti kurti pažangias sutartis ir išbandyti išmaniąją sutartį, nedarant jokių diegimų jūsų vietinėje mašinoje. Tai yra nepaprastai naudinga pradedant nuo solidumo, nes kūrėjai tiesiog turi sutelkti dėmesį į sumanios sutarties rašymą, o ne nerimauti dėl infrastruktūros.

Su „Remix IDE“ jums tereikia naršyklės ir interneto ryšio, kad galėtumėte pradėti kurti pažangias sutartis. Greitas sumanios sutarties idėjos kūrimas, testavimas ir patvirtinimas.

„Remix“ neseniai atnaujino savo vartotojo sąsają.

Remix-UI-Smart-Contracts-Edureka

Spustelėkite failo piktogramą, kaip paryškinta aukščiau esančiame paveikslėlyje, atsidarys failų naršyklė.

  1. Spustelėjus pliuso piktogramą, galima sukurti naują failą, pavadinkite failą PurchaseOrder.sol
  2. Tai sukurs tuščią failą pavadinimu PurchaseOrder.sol, spustelėkite ir atidarykite šį failą.
  3. Nukopijuokime visą sutartį įklijuodami į PurchaseOrder.sol.
  4. Spustelėkite antrą piktogramą, kairiajame meniu tiesiai po failo piktograma, turėtų pasirodyti solidumo kompiliatoriaus parinktis.
  5. Po etikete Kompiliatorius pasirinkite kompiliatoriaus versiją. Dabartinė pasirinkta versija yra 0.5.8.
  6. Skelbdami kompiliatoriaus versiją, spustelėkite „Compile PurchaseOrder.sol“. Tai sudarys išmaniąją sutartį.

7. Kai išmanioji sutartis bus sėkmingai sukompiliuota, spustelėkite mygtuką „Kompiliavimo informacija“ ir turėtų pasirodyti tokia informacija. Po kompiliavimo pateikiama du pagrindiniai duomenys

    • ABI - taikomoji dvejetainė sąsaja. Tai yra „Json“ failas, kuriame išsamiai aprašomi visi išmaniojoje sutartyje aprašyti metodai, kartu pateikiant metodų metaduomenis. Daugiau apie tai bus aptarta tolesniuose tinklaraščiuose.
    • „Bytecode“- EVM („Ethereum“ virtualiosios mašinos) operacijos kodas, išmanioji sutarties logika konvertuojant į baitų kodą.

8. Norint išbandyti išmaniąją sutartį, reikia įdiegti išmaniąją sutartį. Norėdami įdiegti išmaniąją sutartį, spustelėkite kitą piktogramą kairiajame meniu, esančiame po kompiliavimo piktograma. Bus parodytas toks ekranas. Norint išbandyti išmaniąją sutartį, reikia įdiegti išmaniąją sutartį. Norėdami įdiegti išmaniąją sutartį, spustelėkite kitą piktogramą kairiajame meniu, esančiame po kompiliavimo piktograma. Bus parodytas toks ekranas.

Diegimo galimybė

Diegimo ekrane pateikiami keli pasirinkimai. Pažvelkime į juos po vieną.

  • Aplinka: Tai galima pagalvoti apie pasirinkimą, panašų į pasirinkimą pirkti nešiojamąjį kompiuterį iš „Amazon“, „Flipkart“, „Newegg“ (visa tai yra internetinis mažmenininkas), kurį pasirenkate norėdami pirkti, atsižvelgdami į savo poreikius. Panašiai ir „Remix“ atveju mes turime galimybę įdiegti išmaniąją sutartį ir išbandyti išmaniąją sutartį. Išskleidžiamajame meniu šalia aplinkos etiketės pateikiami trys pasirinkimai
    • „JavaScript VM“ - vietinis „Ethereum“ vienas mazgas yra suvestas naršyklės atmintyje ir pateikia 5 iš anksto finansuojamas bandomąsias paskyras, kurias galima naudoti operacijai atlikti (diegimas, funkcijų iškvietimas)
    • Injected Web3 Provide - tai priklauso nuo „MetaMask“. „Metamask“ yra tarsi brokeris ar tarpininkas, leidžiantis interneto programoms sąveikauti su išmaniąja sutartimi. „Metamask“ suteikia galimybę tvarkyti tapatybes ir pasirašyti operacijas, kurios bus siunčiamos į „ethereum“ tinklą. Šis tarpininkas arba 3rdšalis padės jums nustatyti „blockchain“ tinklą, į kurį bus įdiegta išmanioji sutartis.
    • „Web3 Provider“ - jei naudojate vietinį „Ethereum“ mazgą ir galimas RPC galinis taškas, galima naudoti šią parinktį. Išmanioji sutartis bus įdiegta vietiniame „Ethereum“ mazge.
  • Paskyros: ši informacija pateikiama atsižvelgiant į pasirinktą aplinką. Pavyzdžiui. „JavaScript VM“ teikia 5 iš anksto finansuojamas bandomąsias paskyras. „Web3“ teikėjo ir „Injected Web3“ atveju nepateikia išankstinio finansavimo bandomųjų paskyrų.
  • Dujų limitas: Tai apibrėžia didžiausią dujų kiekį, kurį iniciatorius yra pasirengęs išleisti bet kokiai operacijai. Čia reikia apsisaugoti nuo begalinio ciklo ir visų sąskaitos lėšų išeikvojimo esant begalinei kilpai.
  • Reikšmė: vertė, kurios gali prireikti perduoti diegiant išmaniąją sutartį. Tai neprivaloma reikšmė.

Jei norite įdiegti sutartį, pasirinkite „JavaScript“ VM parinktį, išskleidžiamajame meniu „Paskyros“ pasirinkite pirmąją sąskaitą, atkreipkite dėmesį į sąskaitos likutį (100 eterių).

Įsitikinkite, kad pateikiamas sumaniosios sutarties pavadinimas yra „PurchaseOrder“, spustelėkite diegti. Pagrindiniai veiksmai, kurie įvyks

  1. Sąskaitos likutis keičiasi nuo 100 eterio iki 99,999999 eterio, išskaičiuota suma yra sumaniosios sutarties diegimo operacijos kaina.
  2. Pagal įdiegtą sutartį pasirodys nauja išmaniosios sutarties dalis, kurioje taip pat bus nurodytas naujos išmaniosios sutarties adresas (0x692a70d2e424a56d2c6c27aa97d1a86395877b3a)
  3. Konsolės lange pasirodys tokia informacija
    1. Operacijų maišos - unikaliai identifikuoja sutarties diegimą
    2. Sandorio kaina
    3. Sutarties adresas

Sąveika su dislokuota sutartimi

  1. Pagal įdiegtą sutartį galimi du sąveikos metodai: update_quantity ir get_quantity.
  2. Abu šie sąveikos metodai yra viešieji metodai, apibrėžti „Pirkimo užsakymo“ sutartyje.
  3. Atnaujinimo kiekio metodas „update_quantity“ reikalauja įvesties parametro, taigi ir įvesties laukelio.
  4. Gauti kiekį „get_quantity“ metodas atgauna produkto_kiekio vertę.
  5. Patikrinkime, kas atsitinka, kai iškviečiama get_quantity, rodoma grąžinimo vertė 100, kuri buvo inicijuota konstruktoriuje. Tai nesukelia sandorio
  6. Pakvieskime „update_quantity“ ir pateikime 30 kaip įvestį. Dėl to įvyksta sandoris

Trumpai tariant, bet kuri operacija, dėl kurios rašymo operacija tampa sutarties būsena (t. Y. Keičia sutarties kintamuosius), bus sandoris.

Bet kokia operacija, kuri tik nuskaito sutarties būseną, nesudaro sandorio.

Protingos sutarties kūrimo išvada

Tuo mes ką tik sukūrėme savo pirmąją išmaniąją sutartį, tik subraižydami tvirtumo paviršių. Ką tik supratome, ko reikia norint išbandyti pažangiąją sutartį nuo sumaniosios sutarties įdiegimo iki operacijų inicijavimo.

Kitame tinklaraštyje, kuris yra pažangių sutarčių kūrimo serijos tęsinys, gilinsimės į tvirtumo pagrindus, giliau pasinersime į sumanių sutarčių diegimą.

Tuo aš tai darau išvadą Protinga sutartis plėtros dienoraštis. Tikiuosi, kad jums patiko skaityti šį tinklaraštį ir radote jį informatyviu.

kaip konvertuoti eilutę į datą

Jei norite išmokti išmaniųjų sutarčių, kurti karjerą „Blockchain“ srityje ir įgyti „Ethereum“ programavimo patirties, užsiregistruokite tiesiogiai internete čia yra 24 * 7 palaikymas, kuris padės jums mokytis.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje „Protingas sutarčių kūrimas“ ir mes susisieksime su jumis per pirmuosiusšv.