V tem priročniku bomo raziskali, kaj je potrebno, da postanemo razvijalec bitcoinov.

Dejstvo je, da sta “bitcoin” in “blockchain tehnologija” na splošno trenutno najbolj vroča tema na svetu. Vrednost 1 BTC je v zadnjih nekaj mesecih (od pisanja) hitro naraščala:

Postanite razvijalec Bitcoinov: Basic 101

Zasluga za sliko: CoinMarketCap

Kaj je potrebno, da postaneš razvijalec bitcoinov?

V tem vodniku si bomo prizadevali odgovoriti na to vprašanje

Torej, kaj je bitcoin?

Bitcoin je kriptovaluta, ki jo je leta 2009 zasnoval skrivnostni Satoshi Nakamoto. To je decentralizirana digitalna valuta, ki deluje v sistemu peer-to-peer z uporabo tehnologije veriženja blokov.Če želite postati razvijalec bitcoinov, morate najprej prebrati Bitcoin Whitepaper avtorja Satoshi Nakamoto.

Ta knjiga je bistveno branje za vse, ki želijo vstopiti v igro blockchain. Ne samo, da je ta bela knjiga konceptualizirala bitcoin, pokazala nam je tudi, kako lahko bizantinski sistem, odporen na napake, deluje v decentraliziranem okolju.

Če ste navdušeni nad tem, da bi postali razvijalec Bitcoinov, je pomembno, da veste, kako deluje veriga blokov.

Kaj je Blockchain?

Blockchain je veriga blokov, kjer vsak blok vsebuje podatke o vrednosti brez kakršnega koli centralnega nadzora. Je kriptografsko varen in nespremenljiv. Blockchain uporablja dve pomembni podatkovni strukturi: kazalce in povezane sezname.

Kazalci

Kazalci so spremenljivke pri programiranju, ki shranijo naslov druge spremenljivke. Običajno spremenljivke v katerem koli programskem jeziku shranjujejo podatke.

Npr. int a = 10, pomeni, da obstaja spremenljivka “a”, ki shranjuje celoštevilčne vrednosti. V tem primeru shranjuje celoštevilčno vrednost, ki je 10. To je običajna spremenljivka.

Kazalci pa bodo namesto shranjevanja vrednosti shranili naslove drugih spremenljivk. Zato jih imenujemo kazalci, ker dobesedno kažejo na lokacijo drugih spremenljivk.

Povezani seznami

Povezani seznam je eden najpomembnejših elementov v podatkovnih strukturah. Takole je videti povezan seznam:

Postanite razvijalec Bitcoinov: Basic 101

To je zaporedje blokov, od katerih vsak vsebuje podatke, ki so prek kazalca povezani z naslednjim blokom. Kazalna spremenljivka v tem primeru vsebuje naslov naslednjega vozlišča v njem in s tem je vzpostavljena povezava. Kot vidite, ima zadnje vozlišče ničelni kazalec, kar pomeni, da kazalec nima vrednosti.

Pomembno je omeniti, da kazalec znotraj vsakega bloka vsebuje naslov naslednjega bloka. Tako dosežemo usmerjanje. Zdaj se morda sprašujete, kaj to pomeni za prvi blok na seznamu? Kje ostane kazalec prvega bloka?

Prvi blok se imenuje “blok geneze”, njegov kazalec pa leži v samem sistemu. Izgleda nekako takole:

Postanite razvijalec Bitcoinov: Basic 101

Vljudnost slike: Coursera

Če se sprašujete, kaj pomeni “kazalnik zgoščevanja”, je to kazalec, ki vsebuje zgoščevanje prejšnjega bloka.

Kot ste že uganili, na tem temelji struktura verige blokov. Blok veriga je v bistvu povezan seznam in izgleda nekako takole:

Postanite razvijalec Bitcoinov: Basic 101

Blockchain je povezan seznam, ki vsebuje podatke in kazalnik zgoščevanja, ki kaže na prejšnji blok, s čimer ustvarja verigo. Kaj je kazalnik zgoščevanja? Kazalec zgoščevanja je podoben kazalcu, vendar namesto da vsebuje samo naslov prejšnjega bloka, vsebuje tudi razpršitev podatkov znotraj prejšnjega bloka. Ta majhen poteg je tisto, zaradi česar so verige verig tako neverjetno zanesljive in privlačne.

Zamislite si to za trenutek, heker napade blok 3 in poskuša spremeniti podatke. Zaradi lastnosti hash funkcij bo rahla sprememba podatkov drastično spremenila hash. To pomeni, da bodo kakršne koli manjše spremembe v bloku 3 spremenile zgoščevanje, ki je shranjeno v bloku 2, zdaj pa bodo spremenile podatke in zgoščevanje bloka 2, kar bo povzročilo spremembe v bloku 1 in tako naprej in tako naprej . To bo popolnoma spremenilo verigo, kar je nemogoče. Natanko tako blockchains dosežejo nespremenljivost.

Torej, kako je videti glava bloka?

Postanite razvijalec Bitcoinov: Basic 101

Glava bloka vsebuje:

  • Različica: številka različice bloka.
  • Čas: trenutni časovni žig.
  • Trenutno težka tarča.
  • Hash prejšnjega bloka.
  • Nonce (več o tem kasneje).
  • Hash Merkleove korenine.

Kaj je rudarstvo?

“Rudarstvo” je način, kako proizvajate nove bitcoin. Rudarstvo dela po principu “dokaz o delu”. Dokaz dela v bistvu pomeni to: Reševanje problema mora biti izjemno težko, toda ko ga rešite, mora biti dokazovanje pravilnosti rešitve preprosto..

Kako ga bodo bitcoin in večina kriptovalut izkoristili, bomo videli kasneje. Za zdaj pa moramo razumeti, ZAKAJ je bilo sploh treba predložiti dokaz o delu.

Ena izmed številnih težav, s katerimi se je soočil Nakamoto, je bila obravnava problema bizantinskih generalov. Vsak digitalni sistem enakovredne decentralizirane valute ni uspel, ker ni mogel odgovoriti na problem bizantinskih generalov. Nakamoto je na to končno lahko odgovoril z dokazili o delu.

Kaj je torej problem bizantinskih generalov??

Postanite razvijalec Bitcoinov: Basic 101

Vljudnost slike: srednja

Ok, predstavljajte si, da obstaja skupina bizantinskih generalov, ki želijo napasti mesto. Soočata se z dvema zelo različnima težavama:

  • Generali in njihove vojske so zelo oddaljeni, zato je centralizirana oblast nemogoča, zaradi česar je usklajen napad zelo težak.
  • Mesto ima ogromno vojske in edini način, kako lahko zmagajo, je, če vsi napadejo hkrati.

Za uspešno koordinacijo vojske na levi strani gradu pošljejo vojakom na desni strani gradu sporočilo s sporočilom “NAPAČI SREDO.” Recimo, da vojske na desni niso pripravljene na napad in rečejo: »NE. ATTACK PETEK «in pošljite selca skozi mesto nazaj vojakom na levi.

Tu se soočamo s težavo.

Slab sel se lahko zgodi marsikaj. Mesto bi ga lahko ujeli, ogrozili, ubili in zamenjali z drugim glasnikom. To bi privedlo do tega, da bi vojske dobivale nedovoljene informacije, kar bi lahko povzročilo neusklajen napad in poraz.

To se jasno sklicuje tudi na blockchain. Veriga je ogromno omrežje; kako jim lahko verjamete? Če bi nekomu pošiljali 4 Ether iz denarnice, kako bi zagotovo vedeli, da se nekdo v omrežju ne bo vmešaval in spremenil 4 na 40 Ether?

Satoshi Nakamoto je z izogibanjem protokola o delu lahko obšel problem bizantinskega generala. Tako deluje. Recimo, da želi vojska na levi poslati vojski na desni sporočilo z naslovom »ATTACK MONDAY«, da bo sledila določenim korakom.

  • Najprej bodo izvirnemu besedilu dodali »nonce«. Nonce je lahko katera koli naključna šestnajstiška vrednost.

  • Po tem razpršijo besedilo, ki je priloženo z noncem, in vidijo rezultat. Recimo, da so se vojske hipotetično odločile deliti samo sporočila, ki ob zgoščevanju dajo rezultat, ki se začne s 5 ničlami.

  • Če so pogoji razprševanja izpolnjeni, bodo messengerju poslali razpršeno sporočilo. Če ne, bodo še naprej naključno spreminjali vrednost nonce, dokler ne bodo dobili želenega rezultata. To dejanje je zelo dolgočasno in dolgotrajno ter zahteva veliko računalniške moči.

  • Če me mestec resnično ujame in sporočilo poseže, se bo v skladu z lastnostmi funkcije razpršitve drastično spremenilo. Če generali na desni strani, vidijo, da se zgoščeno sporočilo ne začne s potrebno količino 0, potem lahko napad preprosto prekinejo.

Vendar obstaja možna vrzel.

Nobena funkcija razpršitve ni 100% trčena. Odpornost proti trkom pomeni to: Glede na dva različna vhoda A in B, kjer sta H (A) in H (B) njuni ustrezni zgoščevalni enoti, je neizvedljivo, da je H (A) enak H (B). To pomeni, da bo imel vsak vložek večinoma svoj unikatni zgoščeni znak. Vendar v praksi nobena zgoščevalna funkcija ni stoodstotno brez trkov.

Kaj torej, če mesto dobi sporočilo, ga posega in nato spremeni nonce, dokler ne dobi želenega rezultata, ki ima zahtevano število 0? To bo izredno dolgotrajno, vendar je še vedno mogoče. Da bi temu nasprotovali, bodo generali uporabili moč v številkah.

Recimo, da namesto da bi en general na levi pošiljal sporočila enemu generalu na desni, so na levici 3 generali, ki morajo poslati sporočilo tistim na desni. Da bi to lahko storili, lahko ustvarijo svoje sporočilo, nato razkrojijo kumulativno sporočilo in nato dodajo nonce nastalemu razpršilu in ga znova razpršijo. Tokrat želijo sporočilo, ki se začne s šestimi 0.

Očitno bo to izredno dolgotrajno, toda tokrat, če bo messenger ujel mesto, bo čas, ki ga bodo potrebovali za poseganje v kumulativno sporočilo in nato našli ustrezen nonce za razpršitev, neskončno več. To lahko traja celo leta. Tako npr. če namesto enega selca, generali pošljejo več glasnikov, ko bo mesto še na polovici računskega procesa, jih bodo napadli in uničili.

Generali na desni imajo to precej enostavno. Vse, kar morajo storiti, je, da sporočilu dodajo pravilno nonce, ki jim bo dano, jih razpršijo in preverijo, ali se razpršitev ujema ali ne. Razprševanje niza je zelo enostavno. To je v bistvu postopek za dokazovanjem dela.

  • Postopek iskanja nonceta za ustrezen cilj razpršitve bi moral biti izredno težaven in dolgotrajen.
  • Postopek preverjanja rezultata, da bi ugotovili, ali ni bila storjena nobena zloraba, mora biti zelo preprost.

Torej, tako rudarji v bitcoinih izvajajo dokaze o delu, da bi lahko rudarili.

Svojo računsko moč uporabljajo za pridobivanje blokov z reševanjem kriptografskih ugank. Vsak 10 minut se pridobi en blok bitcoinov.

Kako transakcije delujejo v Bitcoinu?

Preden nadaljujemo, pokličite profesorja Donalda J. Pattersona in njegov Youtube kanal “djp3” za razlago.

Recimo, da želi Alice poslati določeno število bitcoinov Bobu. Kako deluje sistem transakcij v Bitcoinu? Bitcoin transakcije se zelo razlikujejo od transakcij z denarnico Fiat. Če bi Alice Bobu dala 2 dolarja, bi iz denarnice fizično vzela 2 dolarja in ga dala Bobu. Vendar stvari v Bitcoinu ne delujejo tako. Nimate fizičnega lastnika nobenega bitcoina, kar imate, je dokaz, da imate Bitcoin.

Obstajata še dve stvari, ki jih morate vedeti:

  • Rudarji potrdijo vaše transakcije tako, da dajo podatke v rudnike, ki so jih blokirali. V zameno za to storitev zaračunajo provizijo za transakcijo.

  • Ko gre za valuto FIAT, v resnici ne spremljate, kako in od kod ste dobili to posebno noto. Npr. Takoj odprite denarnico in odstranite vse bankovce in kovance v njej. Ali lahko poveste, od kod natančno ste dobili posamezne bankovce in kovance? Verjetno je, da ne. Vendar se pri bitcoinih upošteva zgodovina vsake posamezne transakcije bitcoinov.

Ok, zdaj se poglobimo v to, kako poteka bitcoin transakcija med Alice in Bobom. Transakcija ima dve strani, vhod in izhod. Celotna transakcija bo imela ime, ki ga bomo ugotovili na koncu. Za zdaj si oglejmo dinamiko.

Vnos transakcije

Da bi se ta transakcija lahko zgodila, mora Alice dobiti bitcoine, ki jih je prejela iz različnih predhodnih transakcij. Ne pozabite, kot smo že omenili, da se v bitcoinih vsak kovanec obračuna prek zgodovine transakcij.

Recimo, da mora Alice vleči bitcoin iz naslednjih transakcij, ki jih bomo imenovali TX (0), TX (1) in TX (2). Te tri transakcije bodo seštete in to vam bo dalo vhodno transakcijo, ki jo bomo imenovali TX (Input).

Diagramoma bo videti tako:

Postanite razvijalec Bitcoinov: Basic 101

Torej, to je to z vhodne strani, poglejmo, kako bo videti izhodna stran.

Izhod transakcije

V izhodu bo v bistvu prikazana količina bitcoinov, ki jih bo imel Bob po transakciji, in morebitne preostale spremembe, ki bodo nato poslane nazaj Alice. Ta sprememba nato postane njena vhodna vrednost za vse prihodnje transakcije.

Slikovna predstavitev izhodne strani je videti takole:

Postanite razvijalec Bitcoinov: Basic 101

Zdaj je to zelo preprosta transakcija, ki ima samo en izhod (razen SPREMEMBE), obstajajo transakcije, ki so možne z več izhodi. Takole je videti osnovna postavitev transakcije. Da pa gre skozi celo to stvar, pa morajo biti izpolnjeni določeni pogoji.

Pogoji transakcije

  • TX (vhod) > TX (izhod). Vhodna transakcija mora biti vedno večja od izhodne transakcije. Pri vsaki transakciji je primanjkljaj med vhodom in izhodom (proizvodnja + sprememba) transakcijske provizije, ki jih rudarji poberejo. Torej: Provizije za transakcije = TX (vhod) – (TX (izhod) + sprememba).

  • Na vhodni strani: TX (0) + TX (1) + TX (2) = TX (vhod). Če Alice nima sredstev, potrebnih za izvedbo transakcij, bodo rudarji transakcije preprosto zavrnili.

  • Bob bo moral pokazati, da lahko predloži dokazila, potrebna za pridobitev bitcoinov. Alice bo transakcije zaklenila z Bob-ovim javnim naslovom. Predložiti bo moral svoj zasebni ključ, da bo odklenil transakcije in pridobil dostop do svojih provizij.

  • Alice mora tudi preveriti, ali ima sploh potrebne pravice za pošiljanje bitcoinov. To naredi tako, da transakcijo odjavi s svojim digitalnim podpisom (znan tudi kot njen zasebni ključ). Vsakdo lahko to dešifrira z uporabo njenega javnega ključa in preveri, ali je podatke res poslala Alice. Ta dokaz se imenuje „Podpisni podatki“. Zapomnite si to, ker bo to pozneje zelo pomembno.

Torej, kako bo ime celotne te transakcije?

Vhodni podatki (vključno s podatki o podpisu) in izhodni podatki se seštejejo in zgostijo z uporabo algoritma zgoščevanja SHA 256. Izhodno zgoščevanje je ime, ki je dano tej transakciji.

Koda podrobnosti transakcije

Tako je videti transakcija v obliki kode, tj. Skriptni obliki. Recimo, da želi Alice Bob-u poslati 0,0015 BTC in da bi to storila, pošlje vnose, ki so vredni 0,0015770 BTC. Takole so videti podrobnosti o transakciji:

Postanite razvijalec Bitcoinov: Basic 101

Vljudnost slike: djp3 youtube kanal.

Prva stvar, ki jo vidite:

Je ime Transakcije, imenovano razpršitev vhodne in izhodne vrednosti.

Vin_sz je število vhodnih podatkov, ker Alice podatke pošilja samo z eno od svojih prejšnjih transakcij, je 1.

Vout_sz je 2, ker sta edina izhoda Bob in sprememba.

Ali vidite vhodne podatke? Alice uporablja samo eno vhodno transakcijo (v primeru, ki smo ga navedli zgoraj, bo to TX (0)), to je razlog, zakaj je bil vin_sz 1.

  • Pod vhodnimi podatki so njeni podpisni podatki.
  • Pod vsem tem so izhodni podatki:

Prvi del podatkov pomeni, da Bob dobi 0,0015 BTC.

Drugi del pomeni, da je 0,00005120 BTC tisto, kar Alice vrača kot spremembo.

Ne pozabite, da so bili vhodni podatki 0,0015770 BTC? To je večje od (0,0015 + 0,00005120). Primanjkljaj teh dveh vrednosti je provizija za transakcijo, ki jo pobirajo rudarji.

Preden nadaljujemo, se pogovorimo o posebni vrsti transakcije, imenovani transakcija Coinbase. V bistvu gre za prve podatke o transakciji, ki so na bloku, in pomeni nagrado za rudarstvo, ki jo rudarji dobijo ob rudarjenju bloka. Trenutno je nagrada 12,5 BTC. Te transakcije nimajo vhodnih podatkov in imajo samo izhodne podatke.

Nekaj, kar morate upoštevati, je, da transakcija z Bitcoinom poteka, če in samo, če rudar, ki je izkopal blok, fizično vstavi vašo transakcijo v blok. Rudar lahko postane začasni diktator bloka, ki so ga minirali. Za vsako transakcijo, ki jo vstavijo v blok, lahko zaračunajo provizije za transakcije.

Ko se je število transakcij hitro povečevalo, se je povečala tudi stopnja polnjenja blokov. Bolj pogosto kot ne, so ljudje dejansko morali počakati, da so bili ustvarjeni novi bloki, da bodo lahko njihove transakcije potekale. To je ustvarilo zaostanke v transakcijah, pravzaprav je bil edini način, da svoje transakcije postavijo v prednost, plačati dovolj visoko provizijo za transakcije, da bi rudarje pritegnili in spodbudili, da dajo prednost vašim transakcijam..

S tem je bil uveden sistem „nadomestitev s plačilom“. V bistvu tako deluje. Recimo, da Alice pošilja 5 bitcoinov Bobu, vendar transakcija zaradi zaostanka ne gre. Transakcije ne more “izbrisati”, ker se enkrat porabljeni bitcoini ne morejo več vrniti. Lahko pa opravi še eno transakcijo 5 bitcoinov z Bobom, tokrat pa s transakcijskimi provizijami, ki so dovolj visoke, da spodbudijo rudarje. Ko rudarji v transakcijo vnesejo njeno transakcijo, bo tudi prepisala prejšnjo transakcijo in jo razveljavila.

Razvijalec Bitcoin: Programiranje v Bitcoin

Prvotno Bitcoin Core je kodiral Satoshi Nakamoto s pomočjo C++.

Preden začnemo, si oglejmo nekaj izzivov, s katerimi se srečuje razvijalec blokov. Ustvarjanje in vzdrževanje javne verige blokov zaradi številnih razlogov ni enostavno.

(Preden nadaljujemo, velik krik Davidu Schwartzu za njegov glavni govor o uporabi C ++ pri razvoju programske opreme blockchain v CPPCON 2016.)

  • Razlog št. 1: Varnost

Blockchains, kot pravi David Schwartz, bi morali biti trdnjave. Prvič, koda je javna in odprta za ogled. Vsakdo lahko pogleda kodo in preveri, ali obstajajo napake in ranljivosti. Vendar pa je v nasprotju z drugimi viri odprte kode slaba stran iskanja ranljivosti na blockchain kodi velika. Vsak programer lahko vdre in se mu izogne ​​s potencialnimi milijoni in milijoni dolarjev. Zaradi teh upravičenih varnostnih pomislekov je razvoj na verigi verig običajno zelo počasen.

  • Razlog št. 2: Upravljanje virov

Pomembno je, da ste v koraku z omrežjem. Ne morete preveč zaostajati in ne slediti vsem zahtevam omrežja. Morali bi biti dobro opremljeni za obravnavanje oddaljenih in lokalnih poizvedb.

  • Razlog št. 3: Uspešnost

Blockchain mora vedno delovati z najvišjimi možnimi zmožnostmi, vendar mora biti izbrani jezik izredno vsestranski. Stvar je v tem, da obstajajo nekatere naloge v verigi verig, ki jih je mogoče paralelizirati, medtem ko obstajajo nekatere naloge, ki jih ni mogoče izvajati vzporedno.

Dober primer naloge, ki jo je mogoče vzporediti, je preverjanje digitalnega podpisa. Za preverjanje podpisa potrebujete le ključ, transakcijo in podpis. S samo tremi podatki lahko preverjanja izvajate vzporedno.

Vseh funkcij v verigi blokov pa ne bi smeli izvajati tako. Pomislite na samo izvedbo transakcije. Več transakcij ni mogoče izvajati vzporedno; to je treba storiti po eno, da se izognemo napakam, kot so dvojne porabe. Nekateri jeziki so dobri pri vzporednih operacijah, nekateri pa pri neparalelnih operacijah.

  • Razlog št. 4: Izolacija

Kaj je deterministično vedenje?

Če je A + B = C, bo A + B ne glede na okoliščine vedno enak C. To se imenuje deterministično vedenje.

Funkcije razpršitve so deterministične, kar pomeni, da je A-jeva razpršitev vedno H (A).

Torej, pri razvoju verige blokov morajo biti vse transakcijske operacije deterministične. Ne morete imeti transakcije, ki bi se obnašala tako, nato pa naslednji dan. Prav tako ne morete imeti pametnih pogodb, ki delujejo na dva različna načina v dveh različnih strojih.

Edina rešitev za to je izolacija. V bistvu svoje pametne pogodbe in transakcije ločite od nedeterminističnih elementov.

Torej, razpravljali smo o glavnih težavah, s katerimi se srečujejo razvijalci blokov. Zdaj pa si končno oglejmo nekatere jezike, s katerimi lahko razvijalci kodirajo na verigi blokov.

Jezik # 1: C++

Najprej in najpomembneje, začnimo z dedkom vseh, zimzelenim C ++. C ++ je ustvaril Bjarne Stroustrup kot razširitev jezika C. Jezik je bil zasnovan tako, da ima prilagodljivost in učinkovitost C, vendar z nekaj večjimi razlikami. Največja razlika med C in C ++ je v tem, da je C ++ usmerjen v proces, C ++ pa objektno usmerjen.

To pomeni, da so v C ++ podatki in funkcije zaviti v en majhen majhen paket, imenovan “predmeti”, kar pomeni, da ko je predmet enkrat ustvarjen, ga je mogoče enostavno poklicati in ponovno uporabiti v drugih programih, kar močno zmanjša čas kodiranja.

Poglejmo si najpreprostejši program C ++ na svetu. Program “Hello World”:

#include

uporaba imenskega prostora std;

int main ()

{

cout << "Pozdravljen, svet!";

vrnitev 0;

}

uporaba imenskega prostora std;

int main ()

{

cout << "Pozdravljen, svet!";

vrnitev 0;

}

Natisnila se bo ta koda: Hello World!

Torej, zakaj ljudje še vedno uporabljajo C ++ za kodiranje? Zagotovo obstajajo bolj glamurozni jeziki, zakaj ljudje še vedno vztrajajo pri vrnitvi na C ++? Zakaj je bitcoin blockchain kodiran na C++?

No, kot se zgodi, ima C ++ nekatere funkcije, zaradi katerih je zelo privlačen. (Za naslednjo razlago kričite Petra Wiulleja in Davida Schwartza).

Funkcija # 1: Nadzor pomnilnika

Se spomnite, kaj smo že povedali o izzivih razvoja verige blokov? Ne samo, da bi morali biti verige blokov zaščitene trdnjave, ampak bi morale imeti tudi učinkovito upravljanje virov. Blockchain naj bi komuniciral z veliko nezaupljivimi končnimi točkami, hkrati pa zagotavljal hitro storitev vsem vozliščem.

Ta hitra in hitra storitev je ključnega pomena za uspeh kriptovalute, kot je bitcoin. Ne pozabite, da vsi temeljijo na principu “konsenza”, vsa vozlišča v omrežju morajo sprejeti in zavrniti popolnoma iste bloke, sicer bi lahko v verigi obstajala vilica.

Če želite zadovoljiti vse te zahteve in delovati na najvišji ravni, potrebujete strog in popoln nadzor nad uporabo procesorja in pomnilnika. C ++ to daje svojim uporabnikom.

Funkcija # 2: Navoj

Kot smo že razpravljali, je eden glavnih izzivov blockchain programiranja integracija nalog, ki se dobro paralelizirajo, in nalog, ki se ne paralelizirajo. Večina jezikov je specializiranih za enega, vendar je zmožnost navojev C ++ dovolj dobra za obvladovanje vzporednih in ne vzporednih nalog. Nit je niz navodil, ki jih je mogoče izvajati hkrati. C ++ ne samo, da omogoča odlične večnitne naprave z učinkovito komunikacijo med nitmi, ampak tudi optimizira delovanje ene niti..

Funkcija # 3: Premikanje semantike

Eden najbolj zanimivih vidikov C ++ je semantika premikov. Semantika premikanja omogoča, da se vsebina premika med predmeti, namesto da bi se neposredno kopirala. Oglejmo si razlike med semantiko kopiranja in semantiko premikanja. (Po podatkih iz odgovora Petra Alexandera v “Stackoverflow”).

Kopiraj semantiko:

  • trdi (b == c);
  • a = b;
  • trdi (a == b && b == c);

Kaj se torej tukaj dogaja? Vrednost b gre v a, b pa ostane nespremenjen na koncu celotne stvari.

Zdaj pa razmislite o tem.

Premakni semantiko:

  • trdi (b = = c);
  • premik (a, b);
  • trdi (a = = c);

Kaj se tukaj dogaja?

Ali lahko vidite razliko med dvema blokoma kod?

Ko uporabljamo semantiko premikanja, ni treba, da je vrednost “b” nespremenjena. To je razlika med semantiko kopiranja in semantiko premikanja. Največja prednost semantike premikov je, da lahko kopije določenih podatkov dobite le, ko jih potrebujete, kar močno zmanjša odvečnost kode in močno poveča zmogljivost. Kot vidite, sta za blockchain zaželena tako učinkovito upravljanje pomnilnika kot tudi visoka zmogljivost.

Značilnost # 4: Prevedite polimorfizem časa

Kaj je polimorfizem?

Se spomnite, ko smo C ++ imenovali »jezik objektno usmerjenega programiranja (OOP)«? Polimorfizem je slučajno lastnost OOP. Z uporabo polimorfizma določeno funkcijo uporabljate na več načinov. V C ++ se polimorfizem lahko uporablja na dva načina:

  • Prevedite polimorfizem časa.
  • Polimorfizem med izvajanjem.

Tu se bomo osredotočili le na polimorfizem časa prevajanja. Obstajata dva načina, kako C ++ izvaja prevajanje časovnega polimorfizma:

  • Preobremenitev funkcije.
  • Preobremenitev operaterja.

Preobremenitev funkcije:

Preobremenitev funkcije je, če imate več funkcij z istim imenom, vendar z drugačnim vnosom parametrov.

Razmislite o tem programu:

#include

uporaba imenskega prostora std;

razred A

{

void func (int x) // prvi primerek funkcije ima samo eno celoštevilčno vrednost

{

cout<<x<<endl;

}

void func (double x) // drugi primerek funkcije ima samo eno dvojno vrednost

{

cout<<x<<endl;

}

void func (int x, int y) // tretji primerek funkcije ima dve celoštevilčni vrednosti

{

cout<<x = y<<endl;

}

}

int main ()

{

A obj1 // izdelava enega predmeta razreda A

// zdaj bomo poklicali funkcije

obj1.func (2);

obj1.func (2,65);

obj1.func (2,5);

vrnitev 0;

}

Zdaj, ko zaženete to funkcijo, bo izhod:

  • 2.
  • 2.65
  • 7.

Kot lahko vidite, je bila ista funkcija func () uporabljena na 3 različne načine.

Preobremenitev operaterja:

V C ++ ima isti operater več kot en pomen.

Npr. Znak “+” se lahko uporablja tako za matematično seštevanje kot za združevanje.

Združevanje v bistvu pomeni, da vzamemo dve struni in ju združimo kot eno.

Torej 3 + 4 = 7.

IN

Block + geeks = Blockgeeks.

Isti operater je imel dve različni funkciji, to je preobremenitev operaterja.

Časovni polimorfizem Compile zelo pomaga pri razvoju verige blokov. Pomaga pri ločevanju odgovornosti pri različnih funkcijah in posledično pri povečanju učinkovitosti celotnega sistema.

Funkcija # 5: Izolacija kode

C ++ ima funkcije imenskega prostora, ki jih je mogoče uvoziti iz enega programa v drugega. Imenski prostor pomaga pri izogibanju trkom imen. Ker ima C ++ razrede, lahko deluje kot meja med različnimi API-ji in pomaga pri jasnem ločevanju.

Razred v jeziku C ++ je uporabniško določen tip ali podatkovna struktura, razglašena z razredom ključnih besed, katerega člani so podatki in funkcije. Do funkcij, razglašenih v razredu, lahko dostopate tako, da prijavite predmete tega razreda.

Značilnost # 6: Zrelost

Jezik je zrel in se redno posodablja. Kot pravi David Schwartz, obstajajo vsaj 3 trdni prevajalniki, nove funkcije pa so namenjene reševanju resničnih težav. Na voljo so razhroščevalniki in analitična orodja za vse, od profiliranja zmogljivosti do samodejnega zaznavanja težav vseh vrst. To pomeni, da jezik nenehno narašča in vključuje novejše in boljše lastnosti.

Zaradi zgoraj navedenih lastnosti je Satoshi Nakamoto izbral C ++ za osnovni jezik izvorne kode bitcoinov.

Uporaba Bitcoin denarnic

Če želite postati razvijalec Bitcoinov, potem zagotovo morate vedeti, kako delujejo bitcoin denarnice.

Postanite razvijalec Bitcoinov: Basic 101

Brez dvoma je najvarnejši način shranjevanja katere koli kriptovalute uporaba papirnate denarnice. Če upoštevate nekaj spodnjih kazalcev, ga lahko nastavite popolnoma brezplačno. Tako ste resnično mojster vaše naložbe, če pa se upoštevajo previdnostni ukrepi, ni mogoče, da bi vaše zasebne ključe poznal kdo drug.

To seveda pomeni, da je njihovo evidentiranje še kako pomembno. Izguba zasebnih ključev pomeni, da boste izgubili celotno vsebino papirnate denarnice (potem pa to velja za vsako denarnico tam zunaj.)

Kaj je papirnata denarnica?

Da bo zelo preprosto, so papirnate denarnice način hladilnega shranjevanja kriptovalut brez povezave. Vključuje tiskanje javnih in zasebnih ključev na papir, ki ga nato shranite in shranite na varno mesto. Tipke so natisnjene v obliki QR kod, ki jih lahko v prihodnosti skenirate za vse svoje transakcije. Razlog, zakaj je tako varen, je v tem, da daje popoln nadzor vam, uporabniku. Ni vam treba skrbeti za dobro počutje dela strojne opreme, prav tako vam ni treba skrbeti za hekerje ali kakršno koli škodljivo programsko opremo. Samo poskrbeti morate za list papirja.

Nastavitev papirnate denarnice

Papirnate denarnice nastanejo s pomočjo programa za naključno generiranje javnega in zasebnega ključa. Tipke bodo unikatne in program, ki jih generira, je odprtokoden. Tisti z naprednim znanjem kodiranja lahko sami preverijo zaledje programa glede naključnosti rezultatov. Še več, ključe bomo generirali brez povezave. S tem se izkorenini izpostavljenost spletnim grožnjam in izbris preprostega programa po uporabi bo zanje uničil vse sledi.

Ne skrbite, če se sliši zmedeno, ni tako. Ne boste potrebovali posebnega znanja o kodiranju ali šifriranju. Vse, kar potrebujete, je računalnik, internetna povezava in nekaj, na kar lahko posnamete svoje ključe.

Kakorkoli že, ustvarimo svojo papirnato denarnico. Sledite tem korakom:

  • Prepričajte se, da je v vašem računalniku popolnoma kakršna koli oblika zlonamerne programske opreme. Popolnoma nov računalnik bi bil idealen, vendar pogosto ni izvedljiv.
  • Obiščite stran WalletGenerator.net.

Postanite razvijalec Bitcoinov: Basic 101

  • Zip datoteko prenesite s klikom tukaj:

    Postanite razvijalec Bitcoinov: Basic 101

  • Ko ga prenesete, odprite datoteko “index.html”, vendar pred tem preverite, ali je internet izklopljen. Celoten postopek poteka tako, da zagotovite, da v vaši denarnici ni hekerjev.

Postanite razvijalec Bitcoinov: Basic 101

  • Zdaj je čas, da ustvarite svojo denarnico. Lebdite nad označenim besedilom in ustvarilo bo več znakov. Če pa želite, lahko ročno vnesete naključne znake. Samo nadaljujte, dokler števec ne preide na “0”.

    Postanite razvijalec Bitcoinov: Basic 101

  • V trenutku, ko štetje postane nič, se ustvari vaša denarnica.

Postanite razvijalec Bitcoinov: Basic 101

  • Natisnite stran ali naredite več kopij številk z nje. (Pomembno: Prepričajte se, da tiskalnik trenutno ni povezan z Wi-Fi).

  • Izbriši shranjeno spletno stran. Zdaj se lahko varno znova povežete z internetom.
  • Zasebne ključe shranjujte v njihovem dolgoročnem, zasebnem, varnem domu.

Zdaj, ko imate svojo denarnico, lahko obiščete eno od borz, kjer boste svojo fiat valuto zamenjali za bitcoin. Nekatere izmenjave, ki jih lahko uporabite, so:

  • Bitfinex.
  • Bitstamp.
  • BTC-e.
  • Coinbase.

Raziskati morate in ugotoviti, katere izmenjave najbolje delujejo na vašem območju.

Biti v znanju

Ena najbolj kritičnih stvari, ki jih morate storiti, da bi postali razvijalec bitcoinov, je, da ste seznanjeni.

Obstajajo številnih skupnostih razvijalcev kjer se lahko pridružite in sodelujete z drugimi razvijalci.

Zaključek razvijalca Bitcoinov

Torej, gremo.

Ta vodnik vam bo dal osnovno predstavo o tem, kaj morate storiti in se naučiti, da postanete razvijalec Bitcoinov.

Če želite danes začeti svojo kariero razvijalcev, lahko preverite naše tečaje.

Bitcoin in kriptovaluta na splošno ima v prihodnosti neskončne možnosti. Morda smo na robu naslednjega velikega protokola, ki določa dobo. Ali je tehnologija veriženja blokov lahko naslednji internet? Samo čas lahko pokaže.

Brez dvoma lahko rečemo, da sam obseg bitcoinov in drugih blockchain aplikacij ne pozna meja.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me