Како написати свој први паметни уговор?



Научите основе развоја паметних уговора и започните писање свог првог паметног уговора. Такође ћете знати како да тестирате паметни уговор.

У , научили сте шта су паметни уговори, различити језици паметних уговора и како поставити окружење за развој паметних уговора. У овом чланку ћете научити како да направите свој први паметни уговор. КористићуРемик ИДЕ за развој и тестирање паметног уговора.

Следеће теме су обрађене у овом водичу за развој паметних уговора:





Израда вашег паметног уговора

Једноставни паметни уговор са наруџбеницом биће развијен као део ове серије блогова. Како ова серија буде напредовала и како ће се уводити нови концепти програмског језика солидити, паметни уговор са наруџбеницом ће се развијати и побољшавати.



Структура паметног уговора

Паметни уговор солидити, у основи, представља колекцију следећих

  • подаци - који одржава тренутно стање уговора
  • функцију - који примењују логику за прелазак из стања уговора

Солидити паметни уговори следе стандардну структуру. Сваки паметни уговор започиње следећом изјавом



Прагма директива

Кључна реч „прагма“ може се користити за омогућавање одређених функција или провера компајлера. Изјава у наставку дефинише да се изворна датотека (паметни уговор) неће компајлирати са компајлером раније од 0.4.0 и верзијом компајлера након 0.6.0. Ова декларација осигурава ненамерно понашање приликом увођења нове верзије компајлера.

чврстоћа прагме> = 0,4,0<=0.6.0 

Изјава о уговору

Уговор се објављује помоћу кључне речи „уговор“. Овим се проглашава празан уговор који је означен називом „ПурцхасеОрдер“.

уговор ПурцхасеОрдер {}

Похрањивање релевантних података у уговору

Сваки уговор или у општем смислу сваки програм може захтевати чување неких података. Додавање података програму пружа ниво флексибилности. Прелазак са чврсто кодираних вредности у програму на вредности које пружа корисник је важна карактеристика. Променљиве вам омогућавају да похраните податке, означите их, преузмете и манипулишете подацима.

Развој паметног уговора: Увођење променљивих

Као солидност, варијабле су две врсте

  1. Тип вредности: Ова врста променљивих се прослеђује по вредности, тј. Увек се копирају када се користе као аргументи функције или у задацима. На пример: цели бројеви, логичке адресе итд.
  2. Типови референце: Ова врста променљивих је сложеног типа и преноси се референцом, те променљиве се не уклапају у 256 бита и њима се мора пажљиво управљати јер је њихово копирање скупо.

Додавање података у Смарт Цонтрацт

У уговору додамо неку променљиву података. За сваку наруџбеницу мора бити повезана нека количина производа. Додајмо променљиву продуцт_куантити која ће бити типа података цео број или број.

јава аддацтионлистенер (ово)

Променљива коју сада уводимо је цео број без потписа и представљена је уинт256, 256 овде означава 256 битова меморије.

  • У - непотписан (што значи да овај тип може представљати само позитивне цијеле бројеве, а не позитивне и негативне цијеле бројеве)
  • ИНТ - цео број
  • Величина 256 - 256 бита
  • минимална вредност уинт256 која се може доделити је 0
  • максимална вредност уинт256 која се може доделити је 2 ^ 256-1 [веома велики број]

Количина производа је само позитивна вредност и тренутна претпоставка је да ћемо задовољити веома велику вредност количине производа.

Декларисана променљива „продуцт_куантити“ део је стања уговора и стога се задржава или чува у уговорном простору. Тренутно ће ова променљива подразумевано бити 0.

уговор ПурцхасеОрдер {уинт256 продуцт_куантити}

Дефинисање конструктора

Конструктор се позива када се уговор примењује. Конструктор иницијализује уговор са неким вредностима. У тренутном сценарију, количина производа је постављена на 100, када се уговор примењује. Параметарски конструктор се такође може створити прослеђивањем променљиве и иницијализацијом продуцт_куантити употребом прослеђене вредности.

Кључна тачка коју овде треба напоменути је модификатор приступа „публиц“ повезан са конструктором. Јавна кључна реч одређује да свако може приступити овој функцији, ово није ограничена функција.

конструктор () публиц {продуцт_куантити = 100}

Додавање функција

Додајмо сада функцију да наш програм учинимо интерактивним. Функције су контролисане могућности које се могу додати програму. Било којој функцији претходи функција кључне речи. Све у свему, тако изгледа декларација функције' функцију ”.

Набавите функцију

Један од најчешћих захтева за било који програм је очитавање сачуване вредности. У следећем уговору мораћемо да очитамо вредност „количина_производа“. Да би се обезбедила ова могућност, додаје се функција читања или функција добијања. У овој функцији не вршимо никакву манипулацију са сачуваном вредношћу, већ само дохваћамо сачувану вредност.

ктп вс селен што је боље

Раздвојимо сада нашу функцију гет (гет_куантити)

Не. Кључна реч Вредност
један гет_куантити (){нису прослеђени параметри}
2 јавно{свако може да приступи функцији}
3 поглед{означава функцију само чита стање уговора, не мења стање уговора, дакле приказ}
4 враћа променљиву типа уинт256 {дефинисано шта враћа функција}
функција гет_куантити () јавни приказ враћа (уинт256) {ретурн продуцт_куантити}

Функције сетера

Читање података је неопходно и то смо постигли у прошлом одељку, али већина сценарија такође захтева способност писања / ажурирања података. Ова специфична способност пружа се додавањем функције постављача. Ова функција узима вредност од корисника у облику улазног параметра. Коришћењем вредности коју корисник даје функцији, вредност променљиве „продуцт_куантити“ се уписује / ажурира.

Раздвојимо сада нашу постављену функцију (упдате_куантити)

Додавање функције за ажурирање вредности количине производа

Не. Кључна реч Вредност
један упдате_куантити (вредност уинт256){прослеђена је вредност параметра типа уинт256}
2 јавно{свако може да приступи функцији}
3 Није потребно јер се државе ажурирају помоћу функција
4 враћа променљиву типа уинт256 (дефинисано шта враћа функција)
функција упдате_куантити (вредност уинт256) публиц {продуцт_куантити = продуцт_куантити + валуе}

Спајајући све ово заједно, тако би требало да изгледа целокупан уговор.

чврстоћа прагме> = 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 } } 

Примена паметног уговора

Време је за тестирање паметног уговора. Да бисмо тестирали овај паметни уговор, користићемо га Ремик Онлине ИДЕ .

Ремик је мрежно игралиште за паметни уговор етхереум . Ремик је у потпуности заснован на прегледачу. Ремик вам пружа мрежни ИДЕ (интегрисано развојно окружење) у који можете да напишете своје паметне уговоре. Ремик вам пружа могућност мрежног компајлера чврстоће. Паметни уговор у Ремик ИДЕ-у се може компајлирати помоћу одређене верзије компајлера.

Ремик такође пружа могућност брзог тестирања паметног уговора.

Ремик пружа комплетан сет алата за започињање развоја паметног уговора и јединствено тестирање паметног уговора, без икакве инсталације на вашој локалној машини. Ово је од велике користи за почетак са солидношћу, јер програмери само треба да се усредсреде на писање паметног уговора, а не да брину о инфраструктури.

шта је јфраме у јави

Са Ремик ИДЕ-ом вам је потребан само прегледач и интернет веза да бисте започели са развојем паметних уговора. Брз развој, тестирање и валидација идеје за паметни уговор.

Ремик је недавно надоградио њихов кориснички интерфејс.

Remix-UI-Smart-Contracts-Edureka

Кликните на икону датотеке као што је истакнуто на горњој слици, отвориће се истраживач датотека.

  1. Кликом на икону плус може се створити нова датотека, назовите датотеку ПурцхасеОрдер.сол
  2. Ово ће створити празну датотеку под називом ПурцхасеОрдер.сол, кликните и отворите ову датотеку.
  3. Копирајмо цео уговор у ПурцхасеОрдер.сол.
  4. Кликните на другу икону, у левом менију одмах испод иконе датотеке, требало би да се појави опција солидити цомпилер.
  5. Под ознаком компајлера изаберите верзију компајлера. Тренутна изабрана верзија је 0.5.8.
  6. Објавите избор верзије компајлера, кликните на „Цомпиле ПурцхасеОрдер.сол“. Ово ће саставити паметни уговор.

7. Када се паметни уговор успешно компајлира, кликните на дугме „Детаљи компилације“ и требало би да се појаве следећи детаљи. Посткомпилација, две кључне информације су доступне

    • АБИ - бинарни интерфејс апликације. Ово је јсон датотека која детаљно описује све методе изложене у паметном уговору заједно са мета подацима података метода. О томе ће бити више речи у наредним блоговима.
    • Битецоде- ЕВМ (Етхереум виртуелна машина) оперативни код, логика паметног уговора претвара се у бајт код при компилацији.

8. Да би се тестирао паметни уговор, треба применити паметни уговор. Да бисте применили паметни уговор, кликните на следећу икону у левом менију, испод иконе компајлирања. Појавиће се следећи екран. Да би се тестирао паметни уговор, треба применити паметни уговор. Да бисте применили паметни уговор, кликните на следећу икону у левом менију, испод иконе компајлирања. Појавиће се следећи екран.

Опција постављања

Екран за примену пружа неколико избора, погледајмо их један по један.

  • Животна средина: Ово се може сматрати опцијом сличном одабиру куповине преносног рачунара од Амазон-а, Флипкарта или Невегга (све су то мрежни продавци) од кога одлучујете где желите да купујете на основу ваших захтева. Слично томе, у случају Ремика, имамо могућност где да применимо паметни уговор и тестирамо паметни уговор. Падајући мени поред ознаке окружења пружа три избора
    • ЈаваСцрипт ВМ - локални чвор Етхереум окреће се у меморији прегледача и пружа 5 претплаћених пробних рачуна који се могу користити за трансакцију (постављање, позивање функција)
    • Ињецтед Веб3 Провиде - Ово се ослања на МетаМаск. Метамаска је попут посредника или посредника, који омогућава веб апликацијама да комуницирају са паметним уговором. Метамаска пружа могућност управљања идентитетима и потписивање трансакција које се шаљу у мрежу етхереум.Овај посредник или 3рдстрана вам пружа помоћ у одређивању блоцкцхаин мреже на коју ће се применити паметни уговор.
    • Веб3 Провидер - ако користите локални Етхереум чвор и РПЦ крајња тачка је доступна, ова опција се може користити. Паметни уговор биће распоређен на локални Етхереум чвор.
  • Налози: Ови подаци се попуњавају на основу изабраног окружења. На пример. ЈаваСцрипт ВМ нуди 5 претплаћених пробних налога. У случају добављача Веб3 и Ињецтед Веб3 не пружају претплаћене пробне налоге.
  • Ограничење гаса: Ово дефинише максималну количину гаса коју је иницијатор спреман да потроши за било коју трансакцију. Ово је место за заштиту од бесконачне петље и исцрпљивање свих средстава са рачуна у случају бесконачне петље.
  • Вредност: Вредност која ће можда бити потребна за слање током примене паметног уговора. Ово је опционална вредност.

Да бисте применили уговор, изаберите ЈаваСцрипт ВМ опцију, изаберите први рачун из падајућег налога, забележите стање на рачуну (100 етера).

Уверите се да се име паметног уговора приказује ПурцхасеОрдер, кликните на имплементацију. Кључне акције које ће се догодити

  1. Стање на рачуну се мења са 100 етера на 99,999999 етера, одбијени износ је трансакциони трошак за примену паметног уговора.
  2. У оквиру распоређеног уговора, појавит ће се нова плочица за паметни уговор, која ће такође садржати адресу новог паметног уговора, отприлике овако (0к692а70д2е424а56д2ц6ц27аа97д1а86395877б3а)
  3. У прозору конзоле ће се појавити следеће информације
    1. Хеш трансакције - јединствено идентификује примену уговора
    2. Цена трансакције
    3. Адреса уговора

Интеракција са распоређеним уговором

  1. Према уговореном уговору, доступне су следеће две методе интеракције упдате_куантити и гет_куантити.
  2. Обе ове методе интеракције су јавне методе дефинисане у уговору „Наруџбеница“.
  3. Метода ажурирања количине „упдате_куантити“ захтева улазни параметар, дакле поље за унос.
  4. Метода „Добиј количину“ „гет_куантити“ добива вредност продуцт_куантити.
  5. Проверимо шта се дешава када се позове гет_куантити, прикаже се повратна вредност 100, која је иницијализована у конструктору. То не доводи до трансакције
  6. Позовимо упдате_куантити и наведимо 30 као улаз. Ово доводи до трансакције

Укратко, свака операција која узрокује операцију уписа у стање уговора (тј. Мења променљиве уговора) резултираће трансакцијом.

Било која операција која само чита стање уговора не узрокује трансакцију.

Закључак о развоју паметног уговора

Овим смо управо креирали први паметни уговор, само огребајући површину чврстоће. Управо смо видели шта је потребно за тестирање паметног уговора, од примене паметног уговора до покретања трансакција.

У следећем блогу који је наставак серије развоја паметних уговора, зауставићемо се дубље на основама солидности, дубље залазећи у примену паметних уговора.

Тиме закључујем ово Паметан уговор развојни блог. Надам се да сте уживали читајући овај блог и да вам је информативан.

Јаако желите да научите паметне уговоре, изградите каријеру у домену Блоцкцхаин-а и стекнете стручност у програмирању Етхереум-а, упишите се у мрежу уживо овде то долази са подршком од 24 * 7 која ће вас водити током читавог периода учења.

Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре „Развој паметних уговора“ и јавићемо вам се ранијест.