Kako postati Blockchain programer – Blockgeeks

 Kao što naslov sugerira, u ovom ćemo vam vodiču pokazati kako postati programer blockchaina. Kao što ćete uskoro vidjeti, razvoj blockchaina ne razlikuje se puno od redovitog web razvoja. Da bismo vam olakšali stvari, napisali smo ovaj vodič koji će vam pomoći da naučite razvoj blockchaina i pružiti vam korake na kraju svakog odjeljka.

Opseg razvoja na Bitcoin blockchainu bio je malo ograničen. Međutim, igra se potpuno promijenila pojavom Ethereuma, koji je bio prvi programabilni blockchain na svijetu. Programeri iz cijelog svijeta napokon su imali priliku graditi aplikacije na vrhu blockchaina. To je razlog zašto je učenje blockchain razvoja postalo tako vruća vještina.

Podrazumijeva se da živimo u “eri blockchaina”. Utjecaj koji može imati na našu budućnost zaista je zastrašujući i veličanstven. Pa, kako možete dobiti dio te “blockchain akcije”? Ako želite postati programer blockchaina, tada morate poduzeti određene korake.

Nadamo se da ćete na kraju vodiča imati alate potrebne za pokretanje vašeg putovanja. Ako ozbiljno želite postati programer, moramo postaviti neka očekivanja za vas. Prvo, trebat će vremena i morat ćete posvetiti svoje vrijeme i resurse svom obrazovanju (svoj tečaj blockchain razvoja možete nastaviti pohađanjem naših internetskih satova). Drugo, nemojte očekivati ​​trenutne rezultate, jer postajanje programerom blockchaina nije čarobna pilula.

Dakle, rekavši to, započnimo vaše putovanje.

Postanite Blockchain programer – Prekretnica # 1: Razumijevanje osnova

Alati za razvoj blockchaina

Jedna od najvećih prepreka s bilo čim novim i revolucionarnim, poput blockchain tehnologije, je upoznavanje različitih koncepata koji su sastavni dio sustava.

Ako ste početnik, postoje određeni pojmovi koje morate poznavati:

Učite tehnologiju Blockchain

  • Blockchain: Blok lanac je lanac blokova u kojem svaki blok sadrži vrijedne podatke bez ikakvog središnjeg nadzora. Kriptografski je siguran i nepromjenjiv.
  • Decentralizirano: Za Blockchain se kaže da je decentraliziran jer ne postoji središnja vlast koja nešto nadzire.
  • Konsenzusni mehanizam: Mehanizam kojim decentralizirana mreža postiže konsenzus o određenim pitanjima.
  • Rudari: Korisnici koji koriste svoju računarsku snagu za kopanje blokova.

Bilo bi poželjno saznati više o tim terminima koji se široko koriste u kriptosferi. Toplo se preporučuje da pročitate naš opsežni pojmovnik. Važno je naučiti ove osnovne pojmove jer ćete u suprotnom biti jako izgubljeni u svom obrazovanju. Sada je vrijeme da se malo više educirate o tehničkim aspektima blockchaina.

Ako ste zainteresirani za tehničke aspekte kako stvoriti fin-tech aplikaciju na vrhu Blockchaina, tada biste definitivno trebali naučiti detalje kriptoekonomije. Većina programera obično je dobro upućena u “kripto” dio jednadžbe, ali izuzetno nedostaje njihovo znanje o “ekonomiji”.

Ova razlika u znanju izuzetno je očita kada proučavate neke od ovih ICO-a koji lebde okolo. Vrlo je očito primijetiti da ekonomska strana njihovih ICO-a nije dobro promišljena.

Stoga, u svjetlu toga, može biti dobra ideja malo pročitati o ekonomiji i imati opću ideju o tome. Ako želite saznati više o kriptoekonomiji općenito, tada možete pogledati naš članak ovdje.

Ako vas kriptografija zaintrigira i želite znati kako rade potpisi i što znači kriptografija s javnim ključem, pročitajte ovo.

Nakon toga, toplo se preporučuje da razumijete kako funkcionira bitcoin. bitcoin je najrasprostranjenija, najfinija i jedna od najelegantnijih primjena blockchain tehnologije. Možete ga čak nazvati i najboljim primjerom onoga što blockchain tehnologija može postići isključivo zbog učinka koji je imala.

Dakle, poželjno je da pročitate bijelu knjigu bitcoina Satoshi Nakamoto. Možeš naći ovdje. To je dovršilo prvu prekretnicu.

Provjerimo akcijske korake koje trebate poduzeti ovdje:

  • Upoznajte se s raznim pojmovima i leksikonima.
  • Pročitajte više o tehničkim aspektima blockchaina.
  • Pročitajte bitcoin bitcoin.

Postanite Blockchain programer – Prekretnica # 2: Naučite postupak

Prilično je iznenađujuće vidjeti koliko mnogi “nadobudni programeri” uopće nisu imali stvarno iskustvo iz prve ruke s kriptovalutom. Kako možete inovirati i poboljšati platformu kad je niste koristili niti jednom?

Toplo se preporučuje da se već danas počnete upoznavati sa sustavom.

Idite na Coinbase ili bilo koju drugu burzu koja vam odgovara ili vam je dostupna u vašoj zemlji i kupite novčiće. Ne trebate odmah stvoriti opsežni portfelj, samo kupite nekoliko novčića i pogledajte kako cijeli postupak funkcionira.

Izuzetno je izravno. Budući da nećete kupiti puno novca, jednostavno upotrijebite osnovni internetski novčanik.

Ove novčanike je najjednostavnije koristiti među svima. Stvaranje je vrlo jednostavno, jer u osnovi stvara vlastiti račun na bilo kojoj usluzi zamjene. Nadalje, ovom novčaniku možete pristupiti s bilo kojeg poslužitelja ili bilo kojeg uređaja na svijetu ako je povezan s mrežom. Kad to kažem, postoji jedan veliki problem što se tiče internetskih novčanika. Vaš će se privatni ključ spremiti na drugi poslužitelj. U osnovi je to poput posluživanja ključa hakerima na srebrnom pladnju. NEMOJTE koristiti internetske novčanike za pohranu ogromne količine svog novca. Spremite minimum koji vam treba za razmjenu.

Dok stvarate opsežni portfelj, morate naučiti kako koristiti hladne novčanike za pohranu novca. Kako to učiniti možete naučiti ovdje. Kasnije, ako kreirate svoj ICO, MORATE znati kako rade novčanici, a posebno multi-sig novčanici.

Ovdje privodimo kraju ovaj dio, teži dio započinje od sljedeće prekretnice.

Ovdje su vaši koraci za radnju:

  • Saznajte kako funkcioniraju razmjene.
  • Upoznajte se s novčanicima.

Postanite Blockchain programer – Prekretnica # 3: Nabavimo kodiranje!

Kao programer blockchaina, suočit ćete se s mnoštvom izazova u pozadini. Stvaranje i održavanje javnog blockchaina nije lako iz više razloga.

(Prije nego što nastavimo, ogromna vika Davidu Schwartzu za glavnu riječ u vezi s korištenjem C ++-a u razvoju blockchain softvera u CPPCON 2016.)

  • Razlog br. 1: Sigurnost

Blockchains, kako kaže David Schwartz, trebali bi biti tvrđave. Prvo, kôd je javan i otvoren svima. Svatko može pogledati kod i provjeriti ima li grešaka i ranjivosti. Međutim, za razliku od ostalih resursa otvorenog koda, loša strana pronalaženja ranjivosti na blockchain kodu je velika. Bilo koji programer može hakirati i izvući se s potencijalno milijunima i milijunima dolara. Zbog ovih opravdanih sigurnosnih problema, razvoj na blockchainu obično je vrlo spor.

  • Razlog br. 2: Upravljanje resursima

Važno je držati korak s mrežom. Ne možete previše zaostajati i ne pratiti sve zahtjeve mreže. Trebali biste biti dobro opremljeni za obradu udaljenih i lokalnih upita.

  • Razlog br. 3: Izvedba

Blockchain uvijek mora raditi s najvišim mogućim mogućnostima, ali da bi se to dogodilo odabrani jezik mora biti izuzetno svestran. Stvar je u tome što postoje određeni zadaci u blockchainu koji se mogu paralelizirati, dok postoje neki zadaci koji se ne mogu raditi paralelno.

Dobar primjer zadatka koji se može paralelizirati jest provjera digitalnog potpisa. Sve što vam treba za provjeru potpisa su ključ, transakcija i potpis. Sa samo tri podataka provjeru možete provoditi paralelno.

Međutim, ne bi se sve funkcije na blockchainu trebale raditi na taj način. Zamislite samo izvršenje transakcije. Više transakcija ne može se izvršiti paralelno; to treba raditi jednu po jednu kako bi se izbjegle pogreške poput dvostrukog trošenja. Neki su jezici dobri u paralelnim operacijama, dok su neki dobri u neparalelnim operacijama.

  • Razlog br. 4: Izolacija

Što je determinističko ponašanje?

Ako je A + B = C, bez obzira na okolnosti, A + B će uvijek biti jednako C. To se naziva determinističkim ponašanjem.

Hash funkcije su determinističke, što znači da će hash A uvijek biti H (A).

Dakle, u razvoju blockchaina, sve transakcijske operacije moraju biti determinističke. Ne možete imati transakciju koja se ponaša na jedan način, a zatim se ponaša na drugi način sljedeći dan. Slično tome, ne možete imati pametne ugovore koji rade na dva različita načina na dva različita stroja.

Jedino rješenje za to je izolacija. U osnovi izolirate svoje pametne ugovore i transakcije od nedeterminističkih elemenata.

Postoje neki jezici koji ispunjavaju većinu tih potreba. Ako ste programer blockchaina, tada definitivno morate imati neko osnovno znanje o C ++ i JavaScriptu.

Iako se C ++ može činiti pomalo zastarjelim, istina je da izvrsno zadovoljava sve funkcionalnosti koje smo gore opisali. Zapravo je Satoshi Nakamoto napisao bitcoin izvorni kod na jeziku C++.

Zajedno s HTML-om i CSS-om, jedna je od tri temeljne tehnologije u proizvodnji sadržaja na svjetskoj mreži. Javascript se obično koristi za stvaranje vrlo interaktivnih web stranica.

Dakle, sada ćemo vidjeti kako stvoriti vrlo jednostavan blockchain pomoću Javascripta.

Ogromna vika savjee.be za sadržaj u nastavku.

Kako napraviti blok? Od čega se sastoji jednostavni blok? U našem jednostavnom kripto novcu koji ćemo izraditi (nazovimo ga “BlockGeeksCoin”), svaki blok će imati sljedeće podatke:

  • Indeks: Da biste znali broj bloka.
  • Vremenska oznaka: Da se zna vrijeme stvaranja.
  • Podaci: Podaci unutar bloka.
  • Prethodni heš: Hash prethodnog bloka.
  • Hash: Hash trenutnog bloka.

Prije nego što nastavimo. Morate razumjeti određene pojmove koje ćemo koristiti u našem programu:

  • Ovaj: Ključna riječ „this“ poziva se unutar funkcije i omogućuje vam pristup vrijednostima unutar određenog objekta koji poziva tu određenu funkciju.
  • Konstruktor: Konstruktor je posebna funkcija koja može pomoći u stvaranju i inicijalizaciji objekta unutar klase. Svaka je klasa ograničena na samo jedan konstruktor.

Sad kad je to gotovo, krenimo s izradom našeg bloka.

Stvaranje bloka

const SHA256 = zahtijeva ("kripto-js / sha256");

razred Block

{

konstruktor (indeks, vremenska oznaka, podaci, previousHash = ”)

{

this.index = indeks;

this.previousHash = previousHash;

this.timestamp = vremenska oznaka;

this.data = podaci;

this.hash = this.calculateHash ();

}

izračunajHash ()

{

vratiti SHA256 (this.index + this.previousHash + this.timestamp + JSON.stringify (this.data)). toString ();

}

}

Analiza koda

Ok, ovo je ovdje iz bloka. Dakle, u prvom retku koda nazvali smo kripto-js biblioteku jer funkcija raspršivanja sha256 nije dostupna u JavaScript-u.

Dalje, pozvali smo konstruktor unutar klase da pozove objekte koji će imati određene vrijednosti. Ono što vam vjerojatno upada u oči je funkcija CalcuHash (). Da vidimo što točno radi.

U bloku uzimamo sav sadržaj i hashiramo ga da bismo dobili heš tog određenog bloka. Koristimo funkciju JSON.stringify za pretvaranje podataka bloka u niz za njihovo raspršivanje.

Ok, imamo blok spreman i spreman za polazak. Sad spojimo blokove zajedno u blockchain.

Stvaranje blockchaina: Postati Blockchain inženjerom

klase Blockchain

{

// Odjeljak 1 Stvaranje bloka postanka

konstruktor()

{

this.chain = [this.createGenesisBlock ()];

}

createGenesisBlock ()

{

vrati novi blok (0, "01.01.2017", "Blok nastanka", "0");

}

// odjeljak 2 dodavanje novih blokova

getLatestBlock ()

{

vrati this.chain [this.chain.length – 1];

}

addBlock (newBlock) {

newBlock.previousHash = this.getLatestBlock (). hash;

newBlock.hash = newBlock.calculateHash ();

this.chain.push (newBlock);

}

// odjeljak 3 koji potvrđuje lanac

isChainValid ()

{

za (neka je i = 1; i < this.chain.length; i ++)

{

const currentBlock = this.chain [i];

const previousBlock = this.chain [i – 1];

if (currentBlock.hash! == currentBlock.calculateHash ()) {

return false;

}

if (currentBlock.previousHash! == previousBlock.hash)

{

return false;

}

}

povratak istinit;

}

}

Analiza koda

Ok, dakle, puno se stvari događa u lancu gore, podijelimo to na dijelove.

  • Odjeljak 1: Blok postanka

Što je blok geneze?

Genesis blok je prvi blok blockchaina, a razlog zašto je poseban je taj što dok svaki bock pokazuje na blok koji mu je prethodio, genesis blok ne upućuje ni na što. Dakle, u trenutku kada se stvori novi lanac, odmah se poziva blok geneze.

Također, možete vidjeti funkciju “createGenesisBlock ()” u kojoj smo podatke bloka dali ručno:

createGenesisBlock ()

{

vrati novi blok (0, "01.01.2017", "Blok nastanka", "0");

}

  • Odjeljak 2: Dodavanje blokova

Prvo, trebat ćemo znati koji je trenutno zadnji blok u blockchainu. Za to koristimo funkciju getLatestBlock ().

getLatestBlock ()

{

vrati this.chain [this.chain.length – 1];

}

Sad kad smo odredili najnoviji blok, pogledajmo kako ćemo dodati nove blokove.

addBlock (newBlock) {

newBlock.previousHash = this.getLatestBlock (). hash;

newBlock.hash = newBlock.calculateHash ();

this.chain.push (newBlock);

}

Pa, što se ovdje događa? Kako dodajemo blokove? Kako provjeravamo je li zadani blok valjan ili ne?

Sjećate se sadržaja bloka? Blok ima hash prethodnog bloka udesno?

Dakle, ono što ćemo ovdje učiniti je jednostavno. Usporedite prethodnu hash vrijednost novog bloka s hash vrijednošću najnovijeg bloka.

Kako postati programer blockchaina

Ljubaznošću slike: Lauri Hartikka, srednji članak

Ako se ove dvije vrijednosti podudaraju, to znači da je novi blok legitiman i da se dodaje u blockchain.

  • Odjeljak 3: Provjeravanje lanca

Sada moramo provjeriti je li itko petljao s našim blockchainom i je li sve stabilno.

Koristimo petlju “for” za prelazak iz bloka 1 u zadnji blok. Blok nastanka je blok 0.

za (neka je i = 1; i < this.chain.length; i ++)

{

const currentBlock = this.chain [i];

const previousBlock = this.chain [i – 1];

U ovom dijelu koda definiramo dva pojma, trenutni blok i prethodni blok. A sada ćemo jednostavno pronaći hash ove dvije vrijednosti.

if (currentBlock.hash! == currentBlock.calculateHash ()) {

return false;

}

if (currentBlock.previousHash! == previousBlock.hash)

{

return false;

}

}

povratak istinit;

}

Ako “previousHash” trenutnog bloka nije jednak “Hash” prethodnog bloka, tada će ova funkcija vratiti False, u suprotnom vratit će True.

Korištenje blockchaina

Sada ćemo napokon upotrijebiti blockchain za stvaranje našeg BlockGeeksCoin-a.

neka BlockGeeksCoin = novi Blockchain ();

BlockGeeksCoin.addBlock (novi Block (1, "20.07.2017", {iznos: 4})));

BlockGeeksCoin.addBlock (novi Block (2, "20.07.2017", {iznos: 8})));

I to je to!

Pa što se ovdje dogodilo?

Stvorili smo novu kriptovalutu na temelju blockchaina i nazvali je BlockGeeksCoin. Pozivajući se na ovaj novi objekt, aktivirao sam konstruktor, koji je zauzvrat automatski stvorio Genesis blok.

Jednostavno smo mu dodali još dva bloka i dali im neke podatke.

To je tako jednostavno.

(Hvala savjee.be na nevjerojatnom i jednostavnom objašnjenju.)

To je to za ovu prekretnicu. Pogledajmo korake akcije. Vrlo je jednostavno, ali definitivno nije lako:

  • Obrazujte se na jednom od mnogih jezika pogodnih za blockchain kao što su C ++, Javascript, C #, Go, itd.

Postanite Blockchain programer – Prekretnica # 4: Obrazujte se o pametnim ugovorima

kako funkcioniraju pametni ugovori

Kako definirate pametni ugovor?

Prema Wikipediji, pametni ugovor je “računalni protokol namijenjen olakšavanju, provjeri ili provođenju pregovora ili izvršavanja ugovora”. Iako ga je prvi predložio američki kriptograf Nick Szabo 1996. godine, Ethereum je često zaslužan za popularizaciju koncepta i njegovo stvaranje mainstreamom.

U našem detaljnom vodiču ovdje možete saznati više o pametnim ugovorima.

Dakle, koja su poželjna svojstva koja želimo u našem pametnom ugovoru?

Sve što se pokreće na blockchainu mora biti nepromjenjivo i mora imati sposobnost pokretanja kroz više čvorova bez ugrožavanja njegove cjelovitosti. Kao rezultat toga, funkcionalnost pametnog ugovora trebaju biti tri stvari:

  • Deterministički.
  • Prekinuta.
  • Izolirano.

Značajka 1: Deterministička

Program je deterministički ako daje isti izlaz zadanom ulazu svaki put. Npr. Ako je 3 + 1 = 4, tada će 3 + 1 UVIJEK biti 4 (pod pretpostavkom iste baze). Dakle, kada program daje isti izlaz istom skupu ulaza na različitim računalima, program se naziva determinističkim.

Postoje različiti trenuci kada program može djelovati na nedeterministički način:

  • Pozivanje nedeterminističkih funkcija sustava: Kad programer u svom programu pozove nedeterminističku funkciju.
  • Nedeterministički izvori podataka: Ako program pribavi podatke tijekom izvođenja, a taj izvor podataka je nedeterminističan, tada program postaje nedeterministički. Npr. Pretpostavimo da program koji dobije 10 najboljih Google pretraživanja određenog upita. Popis se može stalno mijenjati.
  • Dinamični pozivi: Kada program pozove drugi program, to se naziva dinamičko pozivanje. Budući da se cilj poziva određuje samo tijekom izvršenja, on je nedeterminističke prirode.

Značajka # 2: Prekinuti

U matematičkoj logici imamo pogrešku koja se naziva “zaustavljanje problema”. U osnovi se navodi da postoji nemogućnost saznanja može li zadani program izvršiti svoju funkciju u određenom vremenskom roku. 1936. Alan Turing je, koristeći Kantorov dijagonalni problem, zaključio da ne postoji način da se zna može li zadani program završiti u vremenskom ograničenju ili ne.

To je očito problem pametnih ugovora jer, prema definiciji, ugovori moraju biti u mogućnosti raskinuti u određenom roku. Neke su mjere poduzete kako bi se osiguralo da postoji način da se izvana “ubije” ugovor i da se ne uđe u beskrajnu petlju koja će iscrpiti resurse:

  • Turingova nepotpunost: Turingov nepotpuni blockchain imat će ograničenu funkcionalnost i neće moći vršiti skokove i / ili petlje. Stoga ne mogu ući u beskrajnu petlju.
  • Mjerač koraka i naknada: Program može jednostavno pratiti broj “koraka” koje je poduzeo, tj. Broj uputa koje je izvršio, a zatim prekinuti nakon što se izvrši određeni broj koraka. Druga metoda je mjerač naknade. Ovdje se ugovori izvršavaju uz unaprijed plaćenu naknadu. Svako izvršavanje instrukcija zahtijeva određeni iznos naknade. Ako potrošena naknada premaši unaprijed plaćenu naknadu, ugovor se raskida.
  • Odbrojavanje: Ovdje se čuva unaprijed određeni timer. Ako izvršenje ugovora premašuje vremenski rok, tada se vanjski prekida.

Značajka # 3: Izolirana

U blockchainu, svatko i svatko može prenijeti pametni ugovor. Međutim, zbog toga ugovori mogu svjesno i nesvjesno sadržavati viruse i programske pogreške. Ako ugovor nije izoliran, to može omesti cijeli sustav. Stoga je presudno da se ugovor drži izoliranim u pješčaniku kako bi se cijeli ekosustav spasio bilo kakvih negativnih učinaka.

Sad kad smo vidjeli ove značajke, važno je znati kako se izvršavaju. Obično se pametni ugovori izvode pomoću jednog od dva sustava:

  • Virtualni strojevi: Ethereum to koristi.
  • Docker: Tkanina to koristi.

Usporedimo ovo dvoje i utvrdimo što čini bolji ekosustav. Radi jednostavnosti, usporedit ćemo Ethereum (virtualni stroj) s Fabric (Docker).

Ako ste posebno zainteresirani za razvoj Ethereuma, važno je naučiti i solidnost.

Za sve koji žele naučiti kako napraviti DAPP (decentralizirane aplikacije) ili ući u ICO igru, učenje Solidity je apsolutno neophodno. Već imamo detaljan vodič za njega koji možete pročitati ovdje. Međutim, ovdje ćemo vam dati osnovni pregled. Solidity su razvili Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai i nekoliko bivših suradnika Ethereuma kako bi omogućili pisanje pametnih ugovora na blockchain platformama kao što je Ethereum.

Solidnost je namjerno umanjen, labavo upisan jezik sa sintaksom vrlo sličnom ECMAScriptu (Javascript). Postoje neke ključne točke koje treba zapamtiti iz dokumenta Ethereum Design Rationale, naime da radimo na modelu steka i memorije s veličinom riječi od 32 bajta, EVM (Ethereum Virtual Machine) daje nam pristup programu “ stack “što je poput prostora registra u koji također možemo zalijepiti adrese memorije kako bismo napravili petlju / preskakanje programskog brojača (za sekvencijalno upravljanje programom), proširivu privremenu” memoriju “i trajniju” pohranu “koja je zapravo zapisana u trajnu blockchain, i što je najvažnije, EVM zahtijeva potpunu determiniranost unutar pametnih ugovora.

Ako ste zainteresirani za učenje solidnosti, ovdje možete provjeriti naš temeljni tečaj.

Pa, pogledajmo sada korake za radnju:

  • Shvatite kako funkcioniraju pametni ugovori.
  • (Neobvezno za programere Ethereuma) Naučite solidnost.

Postanite Blockchain programer – Prekretnica br. 5: Uđite u tvrtku za razvoj Blockchain-a

Jedna od najvažnijih stvari koju kao početnik možete učiniti je stalno ostati u mješavini.

Idite i pridružite se forumima Reddit, Gitbub stranicama i StackExchangeu i povežite se s drugim programerima i uvijek budite u potrazi za vijestima u vezi s tehnologijom.

Uz to, bilo bi vam korisno znati što ljudi traže u programerima blockchaina. Koje osobine tvrtke traže kad žele zaposliti? Te podatke možete pronaći ovdje.

Ove informacije mogu biti vrlo korisne u preciznom podešavanju vaših vještina dovoljno da se svidite tvrtkama.

Put do postajanja Blockchain programerom ili inženjerom: Zaključak

Dakle, ovo je grubi putokaz za vas i vaše putovanje do toga da postanete blockchain programer. Samo ovo neće biti dovoljno, naravno, trebat ćete pokazati vlastitu inicijativu i uvijek biti u kombinaciji.

Ako tražite izvor informacija o razvoju blockchaina, kliknite ovdje.

Želimo vam sve najbolje na vašem putu!

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
map