portaldacalheta.pt
  • Главни
  • Агиле Талент
  • Финансијски Процеси
  • Дизајн Бренда
  • Трендови
Бацк-Енд

Како на једноставан начин створити ЕРЦ20 жетон



Циљ овог чланка је да демонстрира како створити ЕРЦ20 токен у што краћем времену.

Почнимо са основама: Шта је то ЕРЦ20 токен?



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



Илустрација ЕРЦ20 токена



Шта чини ЕРЦ20 жетоне тако атрактивним и успешним? У игри је неколико фактора:

  1. Као што ћете видети у овом упутству, ЕРЦ20 токени су једноставни и лаки за примену.
  2. Стандард ЕРЦ20 решава значајан проблем, јер су пијацама и крипто-новчаницима заснованим на блоцкцхаин-у потребан јединствени, стандардизовани скуп команди за комуникацију са низом токена којима управљају. То укључује правила интеракције између различитих токена, као и правила куповине токена.
  3. То је била прва популарна спецификација која је понудила стандардизацију Етхереум токена. То никако није било први , али захваљујући својој популарности брзо је постао индустријски стандард.

Баш као и други Етхереум токени, ЕРЦ20 токени се имплементирају као паметни уговори и извршавају на Етхереум Виртуал Мацхине (ЕВМ) на децентрализован начин.



Чврстоћа: програмски језик паметног уговора

Паметни уговори Етхереум написани су у Солидити. Иако постоје алтернативни језици, ретко ко их користи у ове сврхе. Солидност је слична ЈаваСцрипт-у, тако да ако имате неко знање о ЈаваСцрипт-у, или чак о Јава-и и другим језицима сличним Ц-у, не бисте требали имати проблема да откријете да ли је део кода у Солидити-у, чак и пре него што заправо савладате Солидити довољно да га користите то.

Ту забава започиње, јер бисте за кратко време могли да започнете креирање једноставног ЕРЦ20 уговора. Ово је једноставан задатак, довољно једноставан да ће овај чланак показати како можете написати и применити ЕРЦ20 токен за мање од сат времена.



Токен који ћемо створити у овој демонстрацији биће гола кост ЕРЦ20 имплементације, без превише звона и звиждука. Међутим, видео сам много сличних једноставних жетона у стварном свету, и они раде прилично добро.

Преглед ЕРЦ20 Токен Стандард

Шта је ЕРЦ20?

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



function totalSupply() public view returns (uint256); function balanceOf(address tokenOwner) public view returns (uint); function allowance(address tokenOwner, address spender) public view returns (uint); function transfer(address to, uint tokens) public returns (bool); function approve(address spender, uint tokens) public returns (bool); function transferFrom(address from, address to, uint tokens) public returns (bool);

Функције ЕРЦ20 омогућавају спољном кориснику, рецимо апликацији за крипто-новчаник, да сазна стање корисника и пребаци средства са једног корисника на другог уз одговарајуће овлашћење.

како тумачити резултате Монте Карло симулације

Паметни уговор дефинише два посебно дефинисана догађаја:



event Approval(address indexed tokenOwner, address indexed spender, uint tokens); event Transfer(address indexed from, address indexed to, uint tokens);

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

Поред стандардних функција ЕРЦ20, многи токени ЕРЦ20 садрже и додатна поља, а неки су постали де фацто део стандарда ЕРЦ20, ако не у писаној форми, онда у пракси. Ево неколико примера таквих поља.



string public constant name; string public constant symbol; uint8 public constant decimals;

Ево неколико тачака у вези са ЕРЦ20 и номенклатуром Солидити:

  • А public функцији се може приступити изван самог уговора
  • view у основи значи константно, тј. функција неће променити унутрашње стање уговора
  • Ан event је начин да Солидити дозволи клијентима нпр. сучеље ваше пријаве да бисте били обавештени о одређеним догађајима у оквиру уговора

Већина конструкција језика Солидити требало би да буде јасна ако већ поседујете основне Јава / ЈаваСцрипт вештине.

Писање ЕРЦ20 токена у солидност

ЕРЦ20 токени у солидности

Сад кад смо изложили основе и објаснили шта је потребно за креирање ЕРЦ20 токена, време је да започнемо са писањем неке логике.

Прво, морамо да дефинишемо два објекта за мапирање. Ово је појам Солидити за асоцијативни низ или кључ / вредност:

mapping(address => uint256) balances; mapping(address => mapping (address => uint256)) allowed;

Израз mapping(address => uint256) дефинише асоцијативни низ чији су кључеви типа address - број који се користи за означавање адреса рачуна, а чије су вредности типа uint256 - 256-битни цели број који се обично користи за чување стања жетона.

Први објект мапирања, balances, задржава стање токена на сваком рачуну власника.

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

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

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

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

перформансе сцала вс јава 8

Сада када имамо потребне структуре података, можемо почети да стварно уписујемо ЕРЦ20 логику у одговарајуће функције.

Подешавање броја ИЦО токена

Како постављамо број ИЦО токена? Па, постоји неколико начина за постављање максималног броја ИЦО токена и о овом питању би могло бити вредно саме расправе.

За потребе нашег ЕЦР20 водича користићемо најједноставнији приступ: Поставите укупан износ токена у време креирања уговора и у почетку доделите све „власнику уговора“, тј. Рачуну који је применио паметни уговор:

uint256 totalSupply_; constructor(uint256 total) public { totalSupply_ = total; balances[msg.sender] = _totalSupply; }

Конструктор је посебна функција коју Етхереум аутоматски позива одмах након примене уговора. Обично се користи за иницијализацију стања токена помоћу параметара које прослеђује налог за примену у уговору.

msg је глобална променљива коју је прогласио и населио сам Етхереум. Садржи важне податке за извршење уговора. Поље које овде користимо: msg.sender садржи рачун Етхереум-а који извршава тренутну функцију уговора.

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

Набавите укупну залиху жетона

function totalSupply() public view returns (uint256) { return totalSupply_; }

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

Набавите жетоново стање власника

function balanceOf(address tokenOwner) public view returns (uint) { return balances[tokenOwner]; }

balanceOf вратиће тренутно стање токена на рачуну, идентификовано адресом власника.

Пренесите жетоне на други рачун

function transfer(address receiver, uint numTokens) public returns (bool) { require(numTokens <= balances[msg.sender]); balances[msg.sender] = balances[msg.sender] — numTokens; balances[receiver] = balances[receiver] + numTokens; emit Transfer(msg.sender, receiver, numTokens); return true; }

Као што му само име говори, transfer функција се користи за померање numTokens износ токена са стања власника на стање другог корисника или receiver. Власник преноса је msg.sender односно онај који извршава функцију, што подразумева да само власник токена може да их пренесе другима.

Солидити-ов начин утврђивања предиката је require. У овом случају рачун за пренос има довољан салдо да изврши пренос. Ако је require изјава не успе, трансакција се одмах враћа уназад без икаквих промена записаних у блоцкцхаин.

Непосредно пре изласка, функција активира ЕРЦ20 догађај Transfer омогућавајући регистрованим слушаоцима да реагују на његово довршавање.

Одобрите делегата за повлачење жетона

Ова функција се најчешће користи у сценарију тржишта токена.

function approve(address delegate, uint numTokens) public returns (bool) { allowed[msg.sender][delegate] = numTokens; emit Approval(msg.sender, delegate, numTokens); return true; }

Шта approve чини да дозволи власнику, тј. msg.sender да одобри делегатски рачун - могуће и само тржиште - да повуче токене са свог рачуна и пренесе их на друге рачуне.

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

шта су гешталт принципи

На крају извршења, ова функција активира Approval догађај.

Набавите број жетона одобрених за повлачење

function allowance(address owner, address delegate) public view returns (uint) { return allowed[owner][delegate]; }

Ова функција враћа тренутни одобрени број токена од стране власника одређеном делегату, како је постављено у approve функцију.

Пренесите токене делегатом

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

function transferFrom(address owner, address buyer, uint numTokens) public returns (bool) { require(numTokens <= balances[owner]); require(numTokens <= allowed[owner][msg.sender]); balances[owner] = balances[owner] — numTokens; allowed[owner][msg.sender] = allowed[from][msg.sender] — numTokens; balances[buyer] = balances[buyer] + numTokens; Transfer(owner, buyer, numTokens); return true; }

Двоје require изјаве при покретању функције треба да верификују да ли је трансакција легитимна, тј. да власник има довољно токена за пренос и да делегат има одобрење за (бар) numTokens да се повуче.

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

Могли бисмо се овде зауставити и имати ваљану имплементацију ЕРЦ20. Међутим, желимо ићи корак даље, јер желимо знак индустријске снаге. То захтева да наш код учинимо мало сигурнијим, мада ћемо и даље моћи да држимо токен релативно једноставним, ако не и основним.

СафеМатх Солидити Либрари

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

Сафематх библиотека у Солидити: илустрација

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

Додајмо СафеМатх на наш код:

library SafeMath { // Only relevant functions function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a — b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c>= a); return c; } }

СафеМатх користи assert изјаве за проверу исправности прослеђених параметара. Требало би assert неуспех, извршавање функције ће бити одмах заустављено и све промене блока ће се вратити.

Даље, додајмо следећу изјаву којом уводимо библиотеку у компајлер Солидити:

using SafeMath for uint256;

Затим наивну аритметику коју смо користили заменимо функцијама СафеМатх:

balances[msg.sender] = balances[msg.sender].sub(numTokens); balances[receiver] = balances[receiver].add(numTokens); balances[buyer] = balances[buyer].add(numTokens); balances[owner] = balances[owner].sub(numTokens);

Спакујте све заједно

У Солидити-у су функције и догађаји паметног уговора умотани у целину која се назива а уговор које можете у тишини превести у „блок-класу“. Испод је уговор компатибилан са ЕРЦ20 који смо креирали, укључујући и садржај нашег кода. Поља имена и симбола могу се мењати по жељи. Већина жетона држи децималну вредност на 18, па ћемо и ми учинити исто.

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

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

Програмери Етхереум обично користе алате за примену као што су Тартуф . Чак је и Тартуф превише за ограничене потребе овог чланка, а зове се једноставна мрежна алатка Ремик ће бити довољан.

Да бисте га користили, мораћете да инсталирате Додатак МетаМаск у вашем прегледачу и на Ринкеби (Етхереум тест нетворк) налогу са барем мало Ринкеби Етхер-а у себи. То су релативно једноставни кораци, па нећемо улазити у детаље.

У случају да немате ниједно, пређите на МетаМаск и Ринкеби за везе за преузимање и за добијање јасних упутстава за инсталацију и употребу.

Сада када имамо све градивне блокове на месту, прећи ћемо на Ремик и налепите горњи код, укључујући прагма ред и СафеМатх библиотеку, у мрежни уређивач.

Затим ћемо скочити на другу картицу с десне стране под називом „ Трцати И кликните на „ Развити . “ Појавиће се искачући прозор МетаМаск који тражи да потврдимо трансакцију. Наравно, ми ћемо то одобрити.

слика алт текст

  • Зелена кутија: Обавезно идите на Ринкеби
  • Плави оквир: Подесите укупну залиху токена
  • Црвени оквир: Распоређивање!

Гист : хттпс://гист.гитхуб.цом/гиладХаимов/8е81дбде10ц9аефф69а1д683ед6870бе#филе-басицерц20-сол

Честитамо! Управо сте применили свој први ЕРЦ20 токен, као истинит Етхереум профессионал . Као што је и обећано, токен је једноставан и лаган, али у потпуности функционалан, у складу са стандардом ЕРЦ20 и заштићен МатхСафе-ом. Спреман је за куповину, плаћање и пренос кроз читав Блоцкцхаин.

Да ли је то све што постоји код паметних уговора?

Не, ни изблиза, јер се наша кратка демонстрација једва огреба по површини и бави се само једним аспектом развоја паметних уговора.

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

Ипак, ако можете да поновите оно што смо овде урадили, то је чврст темељ да проширите своје знање и пређете на сложеније уговоре када је то потребно.

Разумевање основа

Шта је паметни уговор?

Паметни уговор је део кода изведен на виртуелној машини Етхереум. Паметни уговор Етхереум је непроменљив и може слати или примати етер и податке.

Шта су ЕРЦ20 токени?

Поједностављено, ЕРЦ20 токени су уговори који имплементирају ЕРЦ20 стандард. Операције којима се управљају ови уговори укључују добијање укупне понуде и биланса токена и методе коришћене за њихов пренос.

стварни трошак калкулатора за запослене

Који програмски језик користи Етхереум?

Развој Етхереума тренутно се изводи у Солидити, програмском језику оријентисаном на уговор инспирисаном ЈаваСцриптом, Питхоном и Ц ++.

Шта значи ЕРЦ?

ЕРЦ је скраћеница од Етхереум Рекуест фор Цоммент. Овом захтеву је додељен број 20, па отуда и суфикс.

РеацтивеУИ и МВВМ образац у ВПФ апликацијама

Бацк-Енд

РеацтивеУИ и МВВМ образац у ВПФ апликацијама
Андроид ДДМС: Водич за ултимативну Андроид конзолу

Андроид ДДМС: Водич за ултимативну Андроид конзолу

Бацк-Енд

Популар Постс
Како створити бот за анализу расположења е-поште: Водич за НЛП.
Како створити бот за анализу расположења е-поште: Водич за НЛП.
Поуке из инвестиционе стратегије Варрена Буффетта и његове грешке
Поуке из инвестиционе стратегије Варрена Буффетта и његове грешке
Зашто отплата дељења не успева? Неки предложени лекови
Зашто отплата дељења не успева? Неки предложени лекови
Повећајте своју продуктивност помоћу Амазон Веб Сервицес
Повећајте своју продуктивност помоћу Амазон Веб Сервицес
Развој Андроид ТВ-а - Долазе велики екрани, припремите се!
Развој Андроид ТВ-а - Долазе велики екрани, припремите се!
 
Доступност на мрежи: зашто се стандарди В3Ц често игноришу
Доступност на мрежи: зашто се стандарди В3Ц често игноришу
Алати наредбеног ретка за програмере
Алати наредбеног ретка за програмере
Зен девРант-а
Зен девРант-а
Заступства и гаранција: Алат за спајања и преузимања о коме би сваки продавац требао знати
Заступства и гаранција: Алат за спајања и преузимања о коме би сваки продавац требао знати
Значај дизајна усмереног на човека у дизајну производа
Значај дизајна усмереног на човека у дизајну производа
Популар Постс
  • шта инвеститори траже
  • цорп ц вс цорп с
  • када је измишљен програмски језик ц
  • @медијски екран и (максимална ширина
  • иот и технологија паметне куће
  • јавне белешке често постављана питања контакт мобилни интерфејс
  • променљиве у класи Питхон
Категорије
  • Агиле Талент
  • Финансијски Процеси
  • Дизајн Бренда
  • Трендови
  • © 2022 | Сва Права Задржана

    portaldacalheta.pt