Bli en Bitcoin-utvikler: Basic 101

I denne guiden skal vi utforske hva som trengs for å være bitcoin-utvikler.

Faktum er at “bitcoin” og “blockchain-teknologi” generelt er det hotteste emnet på jorden akkurat nå. Verdien av 1 BTC har økt i løpet av de siste månedene (i skrivende stund):

Bli en Bitcoin-utvikler: Basic 101

Bildekreditt: CoinMarketCap

Hva skal til for å bli bitcoinutvikler?

I denne veiledningen vil vi sikte på å svare på det spørsmålet

Så hva er bitcoin?

Bitcoin er en kryptovaluta som ble konseptualisert i 2009 av den mystiske Satoshi Nakamoto. Det er en desentralisert digital valuta som fungerer i et peer-to-peer-system, ved hjelp av blockchain-teknologien. Hvis du vil bli bitcoin-utvikler, er det første du trenger å gjøre å lese Bitcoin Whitepaper av Satoshi Nakamoto.

Denne whitepaper er viktig lesing for alle som ønsker å komme inn i blockchain-spillet. Ikke bare gjorde det hvite papiret konseptualisering av bitcoin, det fikk oss også til å se hvordan et bysantinsk feiltolerant system kan fungere i et desentralisert miljø.

Hvis du er opptatt av å bli en Bitcoin-utvikler, er det viktig at du vet hvordan blockchain fungerer.

Hva er Blockchain?

Blockchain er en kjede av blokker der hver blokk inneholder verdidata uten sentral tilsyn. Det er kryptografisk sikkert og uforanderlig. En blockchain bruker to viktige datastrukturer: pekere og koblede lister.

Pekere

Pekere er variabler i programmeringen som lagrer adressen til en annen variabel. Vanligvis lagrer normale variabler i et hvilket som helst programmeringsspråk data.

F.eks. int a = 10, betyr at det er en variabel “a” som lagrer heltallverdier. I dette tilfellet lagrer den et heltall som er 10. Dette er en normal variabel.

Pekere lagrer imidlertid adresser til andre variabler i stedet for å lagre verdier. Derfor kalles de pekere, fordi de bokstavelig talt peker mot plasseringen av andre variabler.

Koblede lister

En koblet liste er en av de viktigste elementene i datastrukturer. Slik ser en lenket liste ut:

Bli en Bitcoin-utvikler: Basic 101

Det er en sekvens av blokker, som hver inneholder data som er koblet til neste blokker via en peker. Pekervariabelen, i dette tilfellet, inneholder adressen til neste node i den, og dermed blir forbindelsen opprettet. Den siste noden, som du kan se, har en nullpeker som betyr at pekeren ikke har noen verdi.

En viktig ting å merke seg her, pekeren inne i hver blokk inneholder adressen til neste blokk. Slik oppnås pekingen. Nå spør du kanskje hva betyr det for den første blokken i listen? Hvor holder pekeren til den første blokken?

Den første blokken kalles “genese-blokken”, og pekeren ligger ute i selve systemet. Det ser liksom slik ut:

Bli en Bitcoin-utvikler: Basic 101

Bilde med tillatelse: Coursera

Hvis du lurer på hva “hashpekeren” betyr, er det en peker som inneholder hash fra forrige blokk.

Som du kanskje har gjettet nå, er dette strukturen til blockchain basert på. En blokkjede er i utgangspunktet en koblet liste og ser omtrent slik ut:

Bli en Bitcoin-utvikler: Basic 101

Blockchain er en koblet liste som inneholder data og en hashpeker som peker på forrige blokk, og dermed oppretter kjeden. Hva er en hashpeker? En hashpeker er lik en peker, men i stedet for bare å inneholde adressen til forrige blokk inneholder den også hash av dataene i den forrige blokken. Denne lille tilpasningen er det som gjør blockchains så utrolig pålitelige og banebrytende.

Se for deg dette et øyeblikk, en hacker angriper blokk 3 og prøver å endre dataene. På grunn av egenskapene til hashfunksjoner vil en liten endring i data endre hasjen drastisk. Dette betyr at eventuelle små endringer gjort i blokk 3, vil endre hasjen som er lagret i blokk 2, nå som igjen vil endre dataene og hasjen til blokk 2 som vil resultere i endringer i blokk 1 og så videre og så videre . Dette vil forandre kjeden fullstendig, noe som er umulig. Dette er nøyaktig hvordan blokkjeder oppnår uforanderlighet.

Så hvordan ser en blokkoverskrift ut?

Bli en Bitcoin-utvikler: Basic 101

En blokkoverskrift inneholder:

  • Versjon: Blokkversjonsnummeret.
  • Tid: gjeldende tidsstempel.
  • Det nåværende vanskelige målet.
  • Hash av forrige blokk.
  • Nonce (mer om dette senere).
  • Hash av Merkle-roten.

Hva er gruvedrift?

“Mining” er hvordan du produserer nye bitcoins. Gruvedrift fungerer etter “proof-of-work” -prinsippet. Bevis for arbeid betyr i utgangspunktet dette: Å løse et problem må være ekstremt vanskelig, men når du først har løst det, skal det være enkelt å bevise at løsningen er riktig.

Vi vil se hvordan bitcoin og de fleste kryptovalutaer bruker den senere. Men foreløpig må vi forstå HVORFOR det kreves bevis på arbeid i utgangspunktet.

Et av de mange problemene Nakamoto sto overfor var å løse problemet med de bysantinske generalene. Hvert digitalt peer-to-peer desentralisert valutasystem mislyktes fordi de ikke svarte på det bysantinske generalproblemet. Nakamoto klarte endelig å svare på dette ved hjelp av proof-of-work.

Så, hva er bysantinske generaler problem?

Bli en Bitcoin-utvikler: Basic 101

Bilde med tillatelse: Medium

Ok så forestill deg at det er en gruppe bysantinske generaler og de vil angripe en by. De har to veldig forskjellige problemer:

  • Generalene og deres hærer er veldig langt fra hverandre, så sentralisert autoritet er umulig, noe som gjør koordinert angrep veldig tøft.
  • Byen har en enorm hær, og den eneste måten de kan vinne er hvis de alle angriper samtidig.

For å få til en vellykket koordinering sender hærene til venstre for slottet en budbringer til hærene på høyre side av slottet med en melding som sier “ATTACK ONSDAY.” Anta imidlertid at hærene til høyre ikke er forberedt på angrepet og si, “NEI. ATTACK FRIDAY ”og send budbringeren tilbake gjennom byen tilbake til hærene til venstre.

Det er her vi står overfor et problem.

En rekke ting kan skje med den stakkars budbringeren. Han kunne bli fanget, kompromittert, drept og erstattet med en annen budbringer av byen. Dette vil føre til at hærene får manipulert informasjon som kan resultere i et ukoordinert angrep og nederlag.

Dette har også klare referanser til blockchain. Kjeden er et stort nettverk; hvordan kan du muligens stole på dem? Hvis du sendte noen 4 Ether fra lommeboken din, hvordan ville du vite at noen i nettverket ikke kommer til å tukle med den og endre 4 til 40 Ether?

Satoshi Nakamoto var i stand til å omgå den bysantinske generalens problem ved å finne opp beviset på arbeidsprotokollen. Slik fungerer det. Anta at hæren til venstre vil sende en melding kalt “ATTACK MONDAY” til hæren til høyre, de kommer til å følge visse trinn.

  • For det første vil de legge til en “nonce” til originalteksten. Nonce kan være hvilken som helst tilfeldig heksadesimal verdi.

  • Etter det hash de teksten vedlagt med et nonce og ser resultatet. Anta at hypotetisk sett har hærene bestemt seg for å bare dele meldinger som ved hashing gir et resultat som starter med 5 nuller.

  • Hvis hashforholdene er oppfylt, vil de sende budbringeren med hashen av meldingen. Hvis ikke, vil de fortsette å endre verdien på nonce tilfeldig til de får ønsket resultat. Denne handlingen er ekstremt kjedelig og tidkrevende og tar mye beregningskraft.

  • Hvis budbringeren blir fanget av byen og meldingen blir tuklet med, i henhold til hashfunksjonens egenskaper, vil hasjen selv bli drastisk endret. Hvis generalene på høyre side, ser at den hashede meldingen ikke starter med den nødvendige mengden 0s, kan de bare avbryte angrepet.

Imidlertid er det et mulig smutthull.

Ingen hashfunksjon er 100% kollisjonsfri. Kollisjonsmotstand betyr dette: Gitt to forskjellige innganger A og B hvor H (A) og H (B) er deres respektive hashes, er det umulig for H (A) å være lik H (B). Hva det betyr er at for det meste vil hver inngang ha sin egen unike hash. Imidlertid er ingen hashfunksjon i praksis 100% kollisjonsfri.

Så hva om byen får beskjeden, tukler med den og deretter endrer nonce til de får ønsket resultat som har det nødvendige antallet 0s? Dette vil være ekstremt tidkrevende, men det er fortsatt mulig. For å motvirke dette, skal generalene bruke styrke i antall.

Anta at i stedet for bare en general til venstre sender meldinger til en general til høyre, er det 3 generaler til venstre som må sende en melding til de til høyre. For å gjøre det, kan de lage sin egen melding og deretter hash den kumulative meldingen og deretter legge en nonce til den resulterende hash og hash den igjen. Denne gangen vil de ha en melding som starter med seks 0-er.

Dette kommer tydeligvis til å være ekstremt tidkrevende, men denne gangen, hvis budbringeren blir fanget av byen, vil den tiden de vil ta for å tukle den kumulative meldingen og deretter finne den tilsvarende nonce for hasjen, være uendelig mer. Det kan til og med ta år. Så f.eks. hvis i stedet for en budbringer sender generalene flere budbringere, når byen er til og med halvveis i beregningsprosessen, vil de bli angrepet og ødelagt.

Generalene til høyre har det ganske enkelt. Alt de trenger å gjøre er å legge til meldingen med riktig nonce som vil bli gitt dem, hasj dem, og se om hasjen stemmer overens eller ikke. Å hase en streng er veldig enkelt å gjøre. Det er egentlig prosessen bak proof-of-work.

  • Prosessen bak å finne nonce for riktig hash-mål bør være ekstremt vanskelig og tidkrevende.
  • Prosessen med å sjekke resultatet for å se om det ikke er begått noen feilbehandling, bør imidlertid være veldig enkel.

Så det er slik gruvearbeidere i bitcoin implementerer arbeidsbevis for å gjøre gruvedriften sin.

De bruker beregningskraften til å bryte etter blokker ved å løse kryptografiske gåter. En blokk i bitcoin utvinnes hver 10. minutt.

Hvordan fungerer transaksjoner i Bitcoin?

Før vi fortsetter, et stort rop til professor Donald J Patterson og hans Youtube-kanal “djp3” for forklaringen.

Anta at Alice vil sende et visst antall bitcoins til Bob. Hvordan fungerer transaksjonssystemet i Bitcoin? Bitcoin-transaksjoner er veldig forskjellige fra Fiat-lommeboktransaksjoner. Hvis Alice skulle gi $ 2 til Bob, ville hun fysisk ta 2 dollar fra lommeboken og gi den til Bob. Imidlertid fungerer ikke ting slik i Bitcoin. Du eier ikke fysisk Bitcoin, det du har er beviset på at du har Bitcoins.

Det er to ting du må vite:

  • Gruvearbeiderne validerer transaksjonene dine ved å plassere dataene i gruvene de har blokkert. Til gjengjeld for å gi denne tjenesten krever de et transaksjonsgebyr.

  • Når det gjelder FIAT-valutaen, holder du ikke rede på hvordan og hvor du fikk den spesifikke noten fra. F.eks. Åpne lommeboken din akkurat nå og ta ut alle sedlene og myntene i den. Kan du fortelle hvor nøyaktig du fikk hver eneste spesifikke seddel og mynt fra? Sjansen er at du ikke gjør det. Imidlertid blir historien til hver eneste bitcoin-transaksjon i bitcoin notert.

Ok, så la oss gjøre et dypdykk i hvordan en bitcoin-transaksjon mellom Alice og Bob foregår. Det er to sider ved en transaksjon, Input og Output. Hele denne transaksjonen vil ha et navn som vi til slutt vil finne ut. For nå, la oss se på dynamikken.

Transaksjonsinngang

For å få denne transaksjonen til å skje, må Alice skaffe seg bitcoins som hun har mottatt fra forskjellige tidligere transaksjoner. Husk, som vi sa før, i bitcoins blir hver mynt regnskapsført via en transaksjonshistorikk.

Anta at Alice trenger å hente bitcoins fra følgende transaksjoner som vi skal gi navnet TX (0), TX (1) og TX (2). Disse tre transaksjonene blir lagt sammen, og det vil gi deg inngangstransaksjonen som vi skal kalle TX (Input).

Diagrammatisk vil det se slik ut:

Bli en Bitcoin-utvikler: Basic 101

Så det er det fra inngangssiden, la oss sjekke hvordan utgangssiden vil se ut.

Transaksjonsutgang

Produksjonen vil i utgangspunktet ha mengden bitcoins som Bob vil ha etter transaksjonen og gjenværende endring som er igjen, som deretter sendes tilbake til Alice. Denne endringen blir hennes inngangsverdi for alle fremtidige transaksjoner.

En billedlig fremstilling av utgangssiden ser slik ut:

Bli en Bitcoin-utvikler: Basic 101

Dette er en veldig enkel transaksjon som bare har en utgang (bortsett fra ENDRE), det er transaksjoner som er mulige med flere utganger. Slik ser den grunnleggende utformingen av transaksjonen ut. For at hele denne tingen skal gå gjennom, må imidlertid visse vilkår være oppfylt.

Vilkår for en transaksjon

  • TX (inngang) > TX (utgang). Inngangstransaksjonen må alltid være større enn utgangstransaksjonen. I enhver transaksjon er underskuddet mellom input og output (output + endring) transaksjonsgebyrene som gruvearbeidere samler inn. Så: Transaksjonsgebyrer = TX (Input) – (TX (output) + Change).

  • På inngangssiden: TX (0) + TX (1) + TX (2) = TX (Input). Hvis Alice ikke har de nødvendige midlene til å utføre transaksjonene, vil gruvearbeiderne bare avvise transaksjonene.

  • Bob kan måtte vise at han kan gi bevisene som trengs for å få bitcoins. Alice vil låse transaksjonene med Bobs offentlige adresse. Han må produsere sin private nøkkel for å låse opp transaksjonene og få tilgang til gebyrene sine.

  • Alice må også bekrefte at hun har de nødvendige rettighetene til å sende over bitcoins i utgangspunktet. Måten hun gjør det på er å signere transaksjonen med sin digitale signatur (også kalt hennes private nøkkel). Alle kan dekode dette ved å bruke hennes offentlige nøkkel og bekrefte at det virkelig var Alice som sendte dataene. Dette beviset kalles “Signaturdata”. Husk dette fordi dette vil være veldig viktig senere.

Så hva kommer til å være navnet på hele denne transaksjonen?

Inngangen (inkludert signaturdataene) og utdataene blir lagt sammen og hash ved hjelp av SHA 256-hashingalgoritmen. Utgangshashen er navnet som blir gitt til denne transaksjonen.

Koden for transaksjonsdetaljer

Slik ser transaksjonen ut i kodeformen aka skriptform. Anta at Alice vil sende 0,0015 BTC til Bob, og for å gjøre det, sender hun innganger som er verdt 0,0015770 BTC. Slik ser transaksjonsdetaljene ut:

Bli en Bitcoin-utvikler: Basic 101

Bilde med tillatelse: djp3 youtube-kanal.

Det første du ser:

Er navnet på Transaksjonen også hash for inngangs- og utgangsverdien.

Vin_sz er antall inndata, siden Alice sender dataene ved hjelp av bare en av hennes tidligere transaksjoner, er det 1.

Vout_sz er 2 fordi de eneste utgangene er Bob og endringen.

Ser du inngangsdataene? Alice bruker bare en inngangstransaksjon (i eksemplet vi ga ovenfor, dette vil være TX (0)), dette er grunnen til at vin_sz var 1.

  • Under inngangsdataene er signaturdataene hennes.
  • Under alt dette er utdataene:

Den første delen av dataene betyr at Bob får 0,0015 BTC.

Den andre delen betyr at 0.00005120 BTC er det Alice får tilbake som endring.

Husk nå at utdataene var 0,0015770 BTC? Dette er større enn (0,0015 + 0,00005120). Underskuddet på disse to verdiene er transaksjonsgebyret som gruvearbeiderne samler inn.

Før vi fortsetter, la oss diskutere en spesiell type transaksjon kalt Coinbase-transaksjon. Det er i utgangspunktet de første transaksjonsdataene som er på blokken, og det betyr gruvebelønningen som gruvearbeidere får ved gruvedrift av blokken. Per nå er belønningen 12,5 BTC. Disse transaksjonene har ingen inngangsdata, og de har bare utdata.

En ting du må huske på, en transaksjon i Bitcoin går gjennom hvis og bare hvis gruvearbeideren, som har utvunnet blokken, fysisk legger inn transaksjonen din i blokken. En gruvearbeider kan bli en midlertidig diktator for blokken de har utvunnet. De kan kreve transaksjonsgebyrer for hver transaksjon de legger inn i blokken.

Etter hvert som antall transaksjoner økte med stormskritt, økte også hastigheten blokkene fylte opp. Oftere enn ikke måtte folk faktisk vente til nye blokker ble opprettet slik at transaksjonene deres skulle gå gjennom. Dette skapte et etterslep av transaksjoner, faktisk var den eneste måten å få prioritet på transaksjonene dine å betale et høyt nok transaksjonsgebyr for å tiltrekke og stimulere gruvearbeiderne til å prioritere transaksjonene.

Dette introduserte “erstatt av avgift” -systemet. I utgangspunktet er det slik det fungerer. Anta at Alice sender 5 bitcoins til Bob, men transaksjonen går ikke gjennom på grunn av et etterslep. Hun kan ikke “slette” transaksjonen fordi bitcoins en gang brukt aldri kan komme tilbake. Imidlertid kan hun gjøre en ny transaksjon på 5 bitcoins med Bob, men denne gangen med transaksjonsgebyrer som er høye nok til å stimulere gruvearbeiderne. Når gruvearbeiderne setter transaksjonen i blokken, vil den også overskrive den forrige transaksjonen og gjøre den ugyldig.

Bitcoin Developer: Programmering i Bitcoin

Den opprinnelige Bitcoin Core ble kodet av Satoshi Nakamoto ved bruk av C++.

Før vi begynner, la oss sjekke ut noen av utfordringene som en blockchain-utvikler står overfor. Å lage og vedlikeholde en offentlig blockchain er ikke lett på grunn av en rekke årsaker.

(Før vi fortsetter, et stort rop til David Schwartz for hans hovedtale om C ++ bruk i blockchain programvareutvikling i CPPCON 2016.)

  • Årsak nr. 1: Sikkerhet

Blockchains, som David Schwartz uttrykker det, burde være festninger. For det første er koden offentlig og åpen for alle å se. Alle kan se over koden og se etter feil og sårbarheter. Imidlertid er ulempen med å finne sårbarheter på blockchain-koden enorm, i motsetning til andre ressurser med åpen kode. Enhver programmerer kan hacke seg inn og komme unna med potensielt millioner og millioner av dollar. På grunn av disse legitime sikkerhetsproblemene er utviklingen på blockchain vanligvis veldig treg.

  • Årsak nr. 2: Ressursadministrasjon

Det er viktig å holde tritt med nettverket. Du kan ikke komme for langt bak og ikke holde tritt med alle nettverkskravene. Du bør være godt rustet til å håndtere eksterne og lokale spørsmål.

  • Årsak nr. 3: Ytelse

Blockchain må alltid utføre så høye muligheter som mulig, men for at det skal skje må det valgte språket være ekstremt allsidig. Saken er at det er visse oppgaver i blockchain som kan parallelliseres, mens det er noen oppgaver som ikke kan gjøres parallelt.

Et godt eksempel på “parallelliserbar” oppgave er bekreftelse av digital signatur. Alt du trenger for signaturverifisering er nøkkelen, transaksjonen og signaturen. Med bare tre data kan du utføre bekreftelser parallelt.

Imidlertid bør ikke alle funksjonene på en blockchain gjøres på den måten. Tenk på selve transaksjonen. Flere transaksjoner kan ikke utføres parallelt. det må gjøres en om gangen for å unngå feil som dobbeltbruk. Noen språk er gode til parallelle operasjoner, mens andre er gode i ikke-parallelle operasjoner.

  • Årsak nr. 4: Isolasjon

Hva er deterministisk oppførsel?

Hvis A + B = C, uansett omstendighetene, vil A + B alltid være lik C. Det kalles deterministisk oppførsel.

Hash-funksjoner er deterministiske, noe som betyr at As hasj alltid vil være H (A).

Så i blockchain-utvikling, må alle transaksjonsoperasjoner være deterministiske. Du kan ikke ha en transaksjon som oppfører seg på en måte og deretter oppfører seg på en annen måte neste dag. På samme måte kan du ikke ha smarte kontrakter som fungerer på to forskjellige måter på to forskjellige maskiner.

Den eneste løsningen på dette er isolasjon. I utgangspunktet isolerer du smarte kontrakter og transaksjoner fra ikke-deterministiske elementer.

Så vi har diskutert hovedproblemene som blockchain-utviklere står overfor. La oss nå endelig sjekke ut noen av språkene som utviklerne kan bruke til å kode på blockchain.

Språk nr. 1: C++

Først og fremst, la oss starte med bestefaren til dem alle, den eviggrønne C ++. C ++ ble opprettet av Bjarne Stroustrup som en utvidelse av C-språket. Språket ble designet for å ha fleksibiliteten og effektiviteten til C, men med noen store forskjeller. Den største forskjellen mellom C og C ++ er at mens C er prosessorientert, er C ++ objektorientert.

Hva dette betyr er at i C ++ blir dataene og funksjonene pakket inn i en pene liten pakke som kalles “objekter”, noe som betyr at når et objekt er opprettet, kan det enkelt kalles og brukes på nytt i andre programmer, noe som reduserer kodingstiden sterkt..

La oss se på det enkleste C ++ – programmet i verden. Programmet “Hello World”:

#inkludere

ved hjelp av navneområde std;

int main ()

{

cout << "Hei Verden!";

retur 0;

}

ved hjelp av navneområde std;

int main ()

{

cout << "Hei Verden!";

retur 0;

}

Denne koden vil skrives ut: Hello World!

Så hvorfor bruker folk fortsatt C ++ til koding? Det er sikkert mye mer glamorøse språk nå, hvorfor insisterer folk fortsatt på å gå tilbake til C ++? Hvorfor er bitcoin-blokkjeden kodet på C++?

Vel, når det skjer, har C ++ visse funksjoner som gjør det veldig tiltalende. (Rop ut Peter Wiulle og David Schwartz for følgende forklaring).

Funksjon nr. 1: Minnekontroll

Husk hva vi sa tidligere om utfordringene med blockchain-utvikling? Ikke bare skal blokkjeder være sikrede festninger, men de bør også ha effektiv ressursforvaltning. En blockchain er ment å samhandle med mange ikke-klarerte endepunkter mens du fortsatt gir rask service til alle noder.

Denne raske og raske tjenesten er avgjørende for suksessen til en kryptovaluta som bitcoin. Husk at de alle er basert på prinsippet om “konsensus”, alle noder i nettverket må akseptere og avvise nøyaktig samme blokker, ellers kan det være en gaffel i kjeden.

For å tilfredsstille alle disse kravene og utføre på høyeste nivå, trenger du tett og fullstendig kontroll over CPU- og minnebruk. C ++ gir det til brukerne.

Funksjon nr. 2: Tråding

Som vi har diskutert før, er en av hovedutfordringene med blockchain-programmeringen integrering av oppgaver som parallelliserer godt og oppgavene som ikke parallelliserer. De fleste språk spesialiserer seg på ett, men C ++ ‘s gjengingsevne er god nok til å håndtere både parallelle og ikke-parallelle oppgaver. En tråd er et sett med instruksjoner som kan utføres samtidig. Ikke bare tillater C ++ fir suveren multitrådeanlegg med effektiv mellomtrådskommunikasjon, det optimaliserer også ytelse med en tråd.

Feature # 3: Move Semantics

En av de mest interessante aspektene ved C ++ er flyttesemantikk. Flytt semantikk gir en måte for innholdet å bli flyttet mellom objekter i stedet for å kopieres direkte. La oss sjekke forskjellene mellom kopisemantikk og flyttesemantikk. (Etter data hentet fra Peter Alexanders svar i “Stackoverflow”).

Kopier semantikk:

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

Så hva skjer her? Verdien av b går inn i a og b forblir uendret på slutten av det hele.

Nå, vurder dette.

Flytt semantikk:

  • hevder (b = = c);
  • flytte (a, b);
  • hevde (a = = c);

Hva skjer her?

Kan du se forskjellen mellom de to kodeblokkene?

Når vi bruker flyttesemantikken, trenger ikke verdien av “b” være uendret. Det er forskjellen mellom kopisemantikk og flyttesemantikk. Den største fordelen med move semantics er at du bare kan få kopier av visse data når du trenger dem, noe som reduserer redundansen i koden sterkt og gir et enormt ytelsesløft. Så som du kan se, er denne effektive minneadministrasjonen og høy ytelse ønskelig for blockchain.

Feature # 4: Kompilere tidspolymorfisme

Hva er polymorfisme?

Husker du da vi kalte C ++ et “objektorientert programmeringsspråk” (OOP)? Polymorfisme er tilfeldigvis en OOP-eiendom. Ved hjelp av polymorfisme bruker du en bestemt funksjon på mer enn én måte. I C ++ kan polymorfisme brukes på to måter:

  • Kompiler tidspolymorfisme.
  • Kjør tid polymorfisme.

Her vil vi bare fokusere på kompileringstidspolymorfisme. Det er to måter C ++ implementerer kompileringstidspolymorfisme på:

  • Funksjon Overbelastning.
  • Overbelastning av operatør.

Funksjon Overbelastning:

Funksjonsoverbelastning er når du har mange funksjoner med samme navn, men med forskjellige parameterinntak.

Tenk på dette programmet:

#inkludere

ved hjelp av navneområde std;

klasse A

{

void func (int x) // første forekomst av funksjonen tar bare en heltallverdi

{

cout<<x<<endl;

}

void func (double x) // andre forekomst av funksjonen tar bare en dobbel verdi

{

cout<<x<<endl;

}

void func (int x, int y) // tredje forekomst av funksjonen tar to heltallverdier

{

cout<<x = y<<endl;

}

}

int main ()

{

En obj1 // gjør ett objekt av klasse A

// nå skal vi kalle funksjonene

obj1.func (2);

obj1.func (2.65);

obj1.func (2,5);

retur 0;

}

Nå når du kjører denne funksjonen vil utgangen være:

  • 2
  • 2.65
  • 7

Så, som du kan se, ble den samme funksjonen func () brukt på 3 forskjellige måter.

Overbelastning av operatør:

I C ++ kan den samme operatoren ha mer enn en betydning.

F.eks. “+” Kan brukes både til matematisk tillegg og til sammenføyning.

Sammenslåing betyr i utgangspunktet å ta to strenger og kombinere dem som en.

Så 3 + 4 = 7.

OG

Block + geeks = Blockgeeks.

Den samme operatøren, gjorde to forskjellige funksjoner, dette er operatørens overbelastning.

Kompileringstidspolymorfismen hjelper mye i blockchain-utvikling. Det hjelper med å sette ansvar hver for seg i forskjellige funksjoner, og i sin tur øke ytelsen til hele systemet.

Funksjon nr. 5: Kodeisolering

C ++ har navneromfunksjoner som kan importeres fra ett program til et annet. Navneområdet hjelper til med å unngå navnekollisjoner. Siden C ++ har klasser, kan den også fungere som grenser mellom forskjellige APIer og hjelpe til med å gjøre klar separasjon.

En klasse i C ++ er en brukerdefinert type eller datastruktur deklarert med søkeordklasse som har data og fungerer som sine medlemmer. Du kan få tilgang til funksjonene deklarert i klassen ved å erklære objekter fra den aktuelle klassen.

Funksjon # 6: Modenhet

Språket er både modent og oppdateres regelmessig. Det er minst 3 solide kompilatorer, som David Schwartz sier, og de nye funksjonene er rettet mot å løse virkelige problemer. Feilsøking og analyseverktøy av alle slag er tilgjengelig for alt fra ytelsesprofilering til automatisk deteksjon av problemer av alle slag. Dette betyr at språket stadig vokser for å innlemme nyere og bedre funksjoner.

På grunn av de ovennevnte funksjonene valgte Satoshi Nakamoto C ++ til å være basisspråket for bitcoin-kildekoden.

Bruke Bitcoin Wallets

Hvis du vil bli en Bitcoin-utvikler, må du definitivt vite hvordan bitcoin-lommebøker fungerer.

Bli en Bitcoin-utvikler: Basic 101

Uten tvil er den sikreste måten å lagre kryptovaluta ved å bruke en papirlommebok. Ved å følge noen få tips nedenfor, kan du sette opp en helt gratis. Dette gjør deg virkelig til mesteren på investeringen din, og hvis forholdsregler følges, er det ingen mulighet for at dine private nøkler blir kjent av noen andre.

Dette betyr selvfølgelig at det er enda viktigere å føre oversikt over dem. Hvis du mister private nøkler, mister du hele innholdet i papirlommeboken (men igjen, det gjelder for hver lommebok der ute.)

Hva er en papirlommebok?

For å holde det veldig enkelt, er papirlommebøker en frakoblet metode for å lagre kryptovaluta. Det inkluderer utskrift av offentlige og private nøkler på et papir som du deretter lagrer og lagrer på et sikkert sted. Nøklene skrives ut i form av QR-koder som du kan skanne i fremtiden for alle transaksjonene dine. Årsaken til at det er så trygt er at det gir full kontroll til deg, brukeren. Du trenger ikke å bekymre deg for velvære til en maskinvare, og du trenger heller ikke å bekymre deg for hackere eller noe skadelig programvare. Du trenger bare å ta vare på et stykke papir.

Sette opp en papirlommebok

Papirlommebøker dannes ved å bruke et program for å tilfeldig generere en offentlig og privat nøkkel. Tastene vil være unike, og programmet som genererer dem er åpen kildekode. De med avansert kunnskap om koding kan sjekke bakenden av programmet selv for tilfeldighet i resultatene. Dessuten genererer vi nøklene våre offline. Dette utrydder eksponeringen for trusler på nettet, og sletting av det enkle programmet etter bruk vil ødelegge spor etter dem.

Ikke bekymre deg hvis det høres forvirrende ut, det er det ikke. Du trenger ingen spesifikk kunnskap om koding eller kryptering. Alt du trenger er en datamaskin, en internettforbindelse, noe å registrere nøklene på.

Uansett, la oss lage vår papirlommebok. Følg disse trinnene:

  • Forsikre deg om at datamaskinen din er helt fri for skadelig programvare. En helt ny datamaskin vil være ideell, men er ofte ikke gjennomførbar.
  • Besøk siden WalletGenerator.net.

Bli en Bitcoin-utvikler: Basic 101

  • Last ned zip-filen ved å klikke her:

    Bli en Bitcoin-utvikler: Basic 101

  • Når du har lastet ned, åpner du “index.html” -filen, men før det må du sørge for at internett er av. Hele prosessen er gjort for å sikre at lommeboken din er fri for hackere.

Bli en Bitcoin-utvikler: Basic 101

  • Nå er det på tide å generere lommeboken din. Fortsett å sveve over den uthevede teksten, og den vil generere flere tegn. Eller hvis du vil, kan du skrive inn tilfeldige tegn manuelt. Bare fortsett å gjøre det til telleren går til “0”.

    Bli en Bitcoin-utvikler: Basic 101

  • I det øyeblikket tellingen går til null, genereres lommeboken din.

Bli en Bitcoin-utvikler: Basic 101

  • Skriv ut siden eller lag flere kopier av tallene fra den. (Viktig: Forsikre deg om at skriveren ikke er koblet til Wi-Fi på dette tidspunktet).

  • Slett lagret webside. Du kan nå trygt koble deg til Internett på nytt.
  • Oppbevar dine private nøkler i deres langsiktige, private og sikre hjem.

Nå som du har lommeboken din, kan du gå til en av børsene for å bytte din fiat-valuta mot bitcoin. Noen av sentrene du kan bruke er:

  • Bitfinex.
  • Bitstempel.
  • BTC-e.
  • Coinbase.

Du må gjøre undersøkelser og finne ut hvilke børser som fungerer best i ditt område.

Å være i know

En av de mest kritiske tingene du må gjøre for å være bitcoin-utvikler er å være kjent.

Det er mange utviklersamfunn hvor du kan bli med og samhandle med andre utviklere.

Konklusjon om Bitcoin Developer

Så, der går du.

Denne guiden vil gi deg en grunnleggende ide om hva du trenger å gjøre og lære for å bli en Bitcoin-utvikler.

Du kan sjekke kursene våre hvis du vil starte utviklerkarrieren din i dag.

Bitcoin, og kryptovaluta generelt, har uendelige muligheter i fremtiden. Vi kan veldig godt være på slutten av den neste store epoken som definerer protokollen. Kan blockchain-teknologi være neste internett? Bare tiden kan vise det.

Det som imidlertid kan sies uten tvil er at det store omfanget av bitcoin og andre blockchain-applikasjoner ikke har noen grenser.

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