Вовед во Blockchain програмирање

Avatar img-thumbnail img-circle

во Криптовалути

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

Во Blockchain светот постојат огромни можности, моментално се развива основната инфраструктура и дефицитот на програмери е огромен, а инвестициите се огромни.

Да научите денекс Blockchain програмирање е како да станете веб девелопер во 2002.

Затоа ја започнуваме оваа серија на тема Blockchain програмирање, но најпрвин да започнеме со објаснување на некои основни работи бидејќи се работи за комплетно нова технологија.

Што е Blockchain и како работи

Blockchain е база на податоци која се состои од ланец на блокови каде секој блок ги содржи најновите промени во вредностите на базата.

Во секој блок се содржат листа на трансакции кои ја променуваат базата.

Поради овој модел, за да ја добиеме моменталната состојба на базата треба да ги процесираме сите блокови од почетокот на тој специфичен Blockchain.

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

Blockchain e исто така и децентрализирана база на податоци, тоа значи дека оваа база е реплицирана на илјадници компјутери низ целиот свет и сите ја имаат истата верзија на податоци.

Како овие компјутери се синхронизираат е подолга тема за која немаме време во овој артикал, но многу важен факт е дека за некој припадник на оваа мрежа да се обиде да го измами остатокот од мрежата ќе му се потребни 51% од процесирачката моќ на целата мрежа. Ова е практично невозможно да се изведе за поголемите мрежи како Bitcoin, Ethereum итн.

Blockchain и Веб 3.0

Називот Веб 3.0 многу често се поврзува со Blockchain, и со добра причина. Ќе ја објаснам на многу кратко историјата на Интернетот од Веб 1.0 па се до Веб 3.0 каде Blockchain се појавува во приказната.

Веб 1.0

Подемот на Интернетот започна во 90-тите со Веб 1.0 кога се појавија првите Веб пребарувачи, а со тоа првите Веб страни и Веб компании.

Во тоа време сите креираа Веб компании и добиваа преголеми инвестиции само поради тоа што беа на Веб. Доколку сте купиле акции во Microsoft или Apple во 90-тите, сега ке сте милионери. Но постоеја и стотици компании кои пропаднаа за само неколку години.

Овој период би го нарекол “Дивиот запад”, слично како и моменталната ситуација во Blockchain светот.

Но од аспект на крајните корисници, Веб 1.0 е периодот кога се креираа статични веб сајтови, емаил апликации и слично.

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

Веб 2.0

После Веб 1.0 дојде Веб 2.0. Ова е период кога се појавија многу поуспешни компании кои ги изградија своите бизниси врз инфраструктурата поставена во претходната ера. Овде се работеше најмногу на подобрување на корисничкото искуство и развивање многу понапредни веб и мобилни апликации. Ова е периодот на Facebook, Amazon, Netflix и еден куп други напредни веб и мобилни апликации за кои не ни помислувавме во времето на Веб 1.0.

Ова е периодот каде ние корисниците сами креираме содржини на овие веб 2.0 аплицкации кои другите корисници ги конзумираат.

Овде е зголемена моќта на корисниците бидејќи ние можеме да креираме свои брендови и медиа компании на Facebook, Instagram, TikTok и Youtube и да бидеме платени за тоа.

Овие платформи стануваат главните средства преку кои луѓето комуницираат, попопуларни од сите телевизии, весници и други старомодни медиуми.

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

Тие имаат алгоритми за кои не знаеме како работат, имаат моќ да исфрлат корисници од платформата и да им го скратат главниот приход на популарните корисници.

Во Веб 2.0, се појавуваат платформи каде корисниците можат да се организираат во посебни заедници, но крајниот збор сеуште го имаат платформите каде овие заедници се креираат.

Веб 3.0

Како најголема вредност, до сега, за Blockchain технологијата се секако криптовалутите. Ова е прв пат во историјата на светот да можеме да креираме пари кои се креирани од алгоритам кој се извршува на илјадници компјутери низ светот, но во исто време сме сигурни дека никој не може да мами и да излаже дека поседува повеќе пари од она што алгоритмот му доделил.

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

Поради ова Blockchain ја овозможува третата еволуција на интернетот, Веб 3.0.

Во Веб 3.0 светот, комбинацијата на Интернет и Blockchain овозможуваат креирање не само на содржини и заедници од страна на крајните корисници, туку и валути, банки, кредити, менувачници, бироа за регистрација.

Кодот што се извршува на Blockchain во форма на Smart Contracts е незапирлив, односно ниту една платформа, банка или држава не може да го промени или запре. Токму ова го прави доверлив и веродостоен Blockchain-от како нова форма за разменување доверба на Интернет помеѓу комплетни странци.

Криптовалути и Blockchain

До пред неколку години, имињата Биткоин и Blockchain се користеа како синоними, но тоа е далеку од вистината.

Биткоин е првата криптовалута која всушност ја покажа вредноста на Blockchain како технологија. Може да се каже и дека Биткоин е најуспешната крипотвалута, доколку судиме само преку цената.

Реалноста е дека Blockchain технологијата може да се користи во многу други области каде се потребни децентрализирани трансфери на вредност и доверба.

Ethereum

Како првенец во полето на генерални Blockchain апликации е Ethereum. Овој проект за прв пат воведе генерален програмски јазик, Solidity, преку кој можеме да извршуваме секакви операции во Blockchain мрежата. Во Bitcoin Blockhain, единствен вид на операција која се извршува e трансфер на криптовалути, во Ethereum Blockchain постои виртуелна машина која разбира посебен програмски јазик и може да извршува било какви програмски операции. Токму учење на овој програмски јазик ќе биде темата на наредните написи.

Адреси и Паричници (Wallets)

Секој корисник на Blockchain е идентификуван со негова адреса. Таа е јавна и секој може да ја види, но јавната адреса не може лесно да се поврзе со одредено физичко лице. Креирањето на адресите го прават тн. Паричник (Wallet) апликации. Паричниците не ги чуваат криптовалутите туку само менаџираат со клучевите на корисникот.

Процесот е следен:

  1. Паричникот генерира рандом приватен клуч, private key.
  2. Од приватниот клуч може да се генерираат повеќе јавни клучеви, public keys.
  3. Од секој јавен клуч се генерира една јавна адреса која фигурира на Blockchain. Таа е практично вашето Blockchain корисничко име (username).

Приватниот клуч во никој случај не се споделува јавно, ниту пак се споделува на Blockchain мрежата. Тој служи за криптографско потпишување на трансакциите што ги прави корисникот. Знаејќи го приватниот клуч може да се дознаат јавните клучеви, но знаејќи ги јавните клучеви не може да се дознае приватниот клуч. Ова е асиметрична криптографија. Приватниот клуч се користи исклучиво за потпишување на трансакциите што ги прави корисникот кои вршат промена или write операција на Blockchain.

Трансакции

Трансакциите се начинот на кој ја променуваме состојбата на Blockchain. Тие можат да бидат од 3 вида:

  1. Трансфер на криптовалути.
  2. Интеракција со Smart Contract.
  3. Креирање на Smart Contract.

Сите трансакции го имаат следниот формат:

{
  from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",
  to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",
  gasLimit: "21000",
  maxFeePerGas: "300",
  maxPriorityFeePerGas: "10",
  nonce: "0",
  value: "10000000000",
  data: “”
}

Првин ги содржи полињата from, to кои претставуваат изворна и дестинациска адреса на трансакцијата. Овие полиња може да се корисници но може и да се Smart Contracts.

Следните 3 полиња се во врска со gas, односно „гориво“ кое се троши за извршување на трансакциите, ќе го објасниме во наредните секции.

Nonce е уникатен број кој го одредува бројот на трансакција за одредена адреса.

Најважните на крајот, value или вредност преставува колку ether ќе се прати кон дестинациската адреса во оваа трансакција. Токму оваа трансакција е трансфер трансакција. Ова поле може и да е празно, не сите трансакции прават трансфер.

Последно е полето data, кое овде е празно бидејќи имаме само трансфер. Доколку вршиме интеракција со Smart Contract тогаш во ова поле ќе дефиниравме името на функцијата што се повикува и аргументите.

При креирање на Smart Contract во дата полето го запишуваме целиот компајлиран код, а за дестинациска адреса на ставаме нултата адреса, со ова Blockchain клиентот знае дека ова е Contract creation трансакција. 

Smart Contracts

Ова се апликациите кои се извршуваат на Blockchain мрежата. Ова се многу мали апликации, еден Smart Contract содржи код колку една класа.

Секој Smart Contract си има своја адреса, логика(code) и состојба(state). Тие се комплетно јавни и секој може да ги прочита и да ги повикува функциите. Најпопуларен јазик за пишување Smart Contract е Solidity во кој ќе навлеземе подетално во овој серијал.

Предности на Smart Contracts:

  1. Веродостојни: Сигурни сме дека кодот што го гледаме е оној што ќе се изврши.
  2.  Незапирливи: Ниту една институција или држава не може да го сопре кодот од извршување, за разлика од нормалните Веб 2.0 апликации.
  3. Трансфер на пари: Најинтересната функционалност на Smart Contracts е токму можноста за трансфер на криптовалути и токени директно низ кодот.

Недостатоци:

  1. Споро извршување: За интеракција со Smart Contracts е потребно да се креира трансакција и таа да биде процесирана од целата Blockchain мрежа. Во просек трансакциите се процесираат од 10 до 20 секунди на Ethereum мрежата. Далеку од она на што сме навикнати со постоечките апликации.
  2. Скапо извршување: За извршување на трансакции е потребно да се плати тн. “Gas fee” ова е како такса што се плаќа на miners, односно оние кои ги процесираат трансакциите и ja ажурираат состојбата на Blockchain.
  3. Ограничени можности: Програмските јазици за пишување Smart Contracts се ограничени по дизајн. Не смеете да чувате премногу податоци и да извршувате преголеми функции за да не ја оптоварите мрежата.

Gas

Gas или Gas fee е таксата што мора да се плати за да го извршите вашиот код на Blockchain.

Ова постои од две главни причини:

  1. Такса кон miners: Со оваа такса им плаќате на сите оние сервери кои ги процесираат и верифицираат сите трансакции на Blockchain бидејќи тие сепак трошат струја и ресурси за да работат.
  2. Заштита на мрежата: Количината на Gas што ќе ја платите се зголемува со комплексноста на операцијата што сакате да ја направите, доколку вашата функција користи многу серверски ресурси, што би ја успорило целата мрежа, тогаш ќе ве чини повеќе. Но не само тоа, постои и строго ограничување, Gas limit. Доколку кодот што сакате да го извршите е премногу комплексен и би искористил gas повеќе од горниот gas limit, тогаш трансакцијата нема ни да почне да се извршува, и ќе биде одбиена. Ова е со причина да се заштити мрежата без разлика на тоа колку пари би дале за gas fee.

Hello World

Не може ова да биде текст за програмери без вистинско парче код.

Ова е пример за Storage Smart Contract во Solidity каде може да се запишува и чита една променлива. Чување на јавни, но важни податоци е една од главните причини за користење на Smart Contracts.

contract Storage {
    uint256 number;
    function store(uint256 num) public {
        number = num;
    }

    function retrieve() public view returns (uint256){
        return number;
    }   
}

Во следниот напис навлегуваме во Solidity програмирање.

Стани премиум член и доби пристап до сите содржини, специјален попуст на над 2.200 производи во ИТ маркет, верификуван профил и можност за огласување на ИТ Огласник. Плус ќе го поддржиш медиумот кој го градиме цели 16 години!

basic

членство

42 ден./мес

зачлени се

1337

членство

125 ден./мес

зачлени се
* плаќањето е на годишно ниво

Доколку веќе имаш премиум членство, најави се тука.

Добивај известувања
Извести ме за
guest
0 Коментари
Inline Feedbacks
View all comments