Bliv Bitcoin-udvikler: Basic 101

I denne vejledning skal vi undersøge, hvad der kræves for at være bitcoin-udvikler.

Faktum er, at “bitcoin” og “blockchain-teknologi” generelt er det hotteste emne på jorden lige nu. Værdien af ​​1 BTC er steget i løbet af de sidste par måneder (i skrivende stund):

Bliv Bitcoin-udvikler: Basic 101

Billedkredit: CoinMarketCap

Hvad skal der til for at blive bitcoin-udvikler?

I denne vejledning vil vi sigte på at besvare dette spørgsmål

Så hvad er bitcoin?

Bitcoin er en kryptokurrency, der blev konceptualiseret i 2009 af den mystiske Satoshi Nakamoto. Det er en decentral digital valuta, der fungerer i et peer-to-peer-system ved hjælp af blockchain-teknologien. Hvis du vil blive bitcoin-udvikler, er det første, du skal gøre, at læse Bitcoin Whitepaper af Satoshi Nakamoto.

Denne hvidbog er vigtig læsning for alle, der ønsker at komme ind i blockchain-spillet. Ikke kun gjorde hvidbogen konceptualiseringen af ​​bitcoin, det fik os også til at se, hvordan et byzantinsk fejltolerant system kan fungere i et decentralt miljø.

Hvis du er ivrig efter at blive en Bitcoin-udvikler, er det vigtigt at du ved, hvordan blockchain fungerer.

Hvad er Blockchain?

Blockchain er en kæde af blokke, hvor hver blok indeholder værdidata uden centralt tilsyn. Det er kryptografisk sikkert og uforanderligt. En blockchain bruger to vigtige datastrukturer: markører og sammenkædede lister.

Markører

Markører er variabler i programmeringen, der gemmer adressen på en anden variabel. Normalt gemmer normale variabler på ethvert programmeringssprog data.

For eksempel. int a = 10, betyder at der er en variabel “a”, der gemmer heltalværdier. I dette tilfælde lagrer den et heltal, der er 10. Dette er en normal variabel.

Markører gemmer dog adresser på andre variabler i stedet for at gemme værdier. Derfor kaldes de pegepinde, fordi de bogstaveligt talt peger mod placeringen af ​​andre variabler.

Tilknyttede lister

En sammenkædet liste er en af ​​de vigtigste punkter i datastrukturer. Sådan ser en linket liste ud:

Bliv Bitcoin-udvikler: Basic 101

Det er en sekvens af blokke, der hver indeholder data, der er knyttet til den næste blok via en markør. Markørvariablen indeholder i dette tilfælde adressen på den næste node i den, og dermed oprettes forbindelsen. Den sidste node, som du kan se, har en nul-markør, hvilket betyder, at markøren ikke har nogen værdi.

En vigtig ting at bemærke her, markøren inde i hver blok indeholder adressen på den næste blok. Sådan opnås pegningen. Nu spørger du måske hvad betyder det for den første blok på listen? Hvor forbliver markøren på den første blok?

Den første blok kaldes “genesis block”, og dens markør ligger ude i selve systemet. Det ser sådan ud som dette:

Bliv Bitcoin-udvikler: Basic 101

Billede med tilladelse: Coursera

Hvis du undrer dig over, hvad “hash-markøren” betyder, er det en markør, der indeholder hashen fra den forrige blok.

Som du måske har gættet nu, er dette, hvad blockchain-strukturen er baseret på. En blokkæde er grundlæggende en sammenkædet liste og ser sådan ud:

Bliv Bitcoin-udvikler: Basic 101

Blockchain er en sammenkædet liste, der indeholder data og en hash-markør, der peger på sin tidligere blok og dermed opretter kæden. Hvad er en hash-markør? En hash-markør ligner en markør, men i stedet for bare at indeholde adressen på den forrige blok indeholder den også hash af dataene inden i den forrige blok. Denne ene lille tweak er det, der gør blockchains så utroligt pålidelige og banebrydende.

Forestil dig dette et øjeblik, en hacker angriber blok 3 og forsøger at ændre dataene. På grund af egenskaberne ved hashfunktioner vil en lille ændring i data ændre hashen drastisk. Dette betyder, at eventuelle mindre ændringer foretaget i blok 3 vil ændre hash, der er gemt i blok 2, nu som igen vil ændre dataene og hashen til blok 2, hvilket vil resultere i ændringer i blok 1 og så videre og så videre . Dette vil ændre kæden fuldstændigt, hvilket er umuligt. Dette er præcis, hvordan blockchains opnår uforanderlighed.

Så hvordan ser en blokoverskrift ud?

Bliv Bitcoin-udvikler: Basic 101

En blokoverskrift indeholder:

  • Version: Blokversionsnummeret.
  • Tid: det aktuelle tidsstempel.
  • Det nuværende vanskelige mål.
  • Hash af den forrige blok.
  • Nonce (mere om dette senere).
  • Hash af Merkle-roden.

Hvad er minedrift??

“Minedrift” er, hvordan du producerer nye bitcoins. Minedrift fungerer efter “proof-of-work” -princippet. Bevis for arbejde betyder grundlæggende dette: At løse et problem skal være ekstremt svært, men når du først har løst det, skal det være enkelt at bevise, at løsningen er korrekt.

Vi vil se, hvordan bitcoin og de fleste kryptokurver bruger det senere. Men for nu skal vi forstå, hvorfor det først var nødvendigt med bevis for arbejde.

Et af de mange problemer, som Nakamoto stod overfor, var at løse problemet med de byzantinske generaler. Hvert digitalt peer-to-peer-decentraliseret valutasystem mislykkedes, fordi de ikke besvarede det byzantinske generalproblem. Nakamoto var endelig i stand til at besvare dette ved hjælp af proof-of-work.

Så hvad er byzantinske generaler problem?

Bliv Bitcoin-udvikler: Basic 101

Billede med tilladelse: Medium

Ok, så forestil dig, at der er en gruppe byzantinske generaler, og de vil angribe en by. De står over for to meget forskellige problemer:

  • Generalerne og deres hære er meget langt fra hinanden, så central autoritet er umulig, hvilket gør koordineret angreb meget hårdt.
  • Byen har en enorm hær, og den eneste måde, de kan vinde er, hvis de alle angriber på én gang.

For at opnå en vellykket koordinering sender hære til venstre for slottet en budbringer til hære til højre for slottet med en besked, der siger “ATTACK WEDNESDAY.” Antag dog, at hære til højre ikke er forberedt på angrebet og sige, ”NEJ. ATTACK FRIDAY ”og send budbringeren tilbage gennem byen tilbage til hære til venstre.

Det er her, vi står over for et problem.

En række ting kan ske med den stakkels messenger. Han kunne blive fanget, kompromitteret, dræbt og erstattet af en anden messenger af byen. Dette vil føre til, at hære får manipuleret information, som kan resultere i et ukoordineret angreb og nederlag.

Dette har også klare henvisninger til blockchain. Kæden er et kæmpe netværk; hvordan kan du muligvis stole på dem? Hvis du sendte nogen 4 Ether fra din tegnebog, hvordan ville du med sikkerhed vide, at nogen i netværket ikke vil manipulere med det og ændre 4 til 40 Ether?

Satoshi Nakamoto var i stand til at omgå den byzantinske generals problem ved at opfinde bevis for arbejdsprotokol. Sådan fungerer det. Antag at hæren til venstre vil sende en besked kaldet “ATTACK MONDAY” til hæren til højre, de vil følge visse trin.

  • For det første tilføjer de en “nonce” til den originale tekst. Nonce kan være en vilkårlig tilfældig hexadecimal værdi.

  • Derefter hash de teksten tilføjet med en nonce og se resultatet. Antag, at hypotetisk set har hære besluttet kun at dele meddelelser, som ved hashing giver et resultat, der starter med 5 nuller.

  • Hvis hashbetingelserne er opfyldt, sender de messenger med hash af meddelelsen. Hvis ikke, vil de fortsætte med at ændre værdien af ​​nonce tilfældigt, indtil de får det ønskede resultat. Denne handling er ekstremt kedelig og tidskrævende og tager meget beregningskraft.

  • Hvis budbringeren bliver fanget af byen, og beskeden manipuleres, i henhold til egenskaber for hashfunktion, vil hasjen selv blive drastisk ændret. Hvis generalerne på højre side ser, at den hashede meddelelse ikke starter med den krævede mængde 0s, kan de simpelthen afbryde angrebet.

Der er dog et muligt smuthul.

Ingen hash-funktion er 100% kollisionsfri. Kollisionsmodstand betyder dette: Givet to forskellige indgange A og B, hvor H (A) og H (B) er deres respektive hash, er det umuligt for H (A) at være lig med H (B). Hvad det betyder er, at for det meste vil hver input have sin egen unikke hash. I praksis er ingen hashfunktion dog 100% kollisionsfri.

Så hvad nu hvis byen får beskeden, tamper med den og derefter ændrer nonce indtil de får det ønskede resultat, der har det krævede antal 0s? Dette vil være ekstremt tidskrævende, men det er stadig muligt. For at imødegå dette, skal generalerne bruge styrke i antal.

Antag, i stedet for kun en general til venstre, der sender beskeder til en general til højre, er der 3 generaler til venstre, der skal sende en besked til dem til højre. For at gøre det kan de lave deres egen besked og derefter hash den kumulative besked og derefter tilføje en nonce til den resulterende hash og hash den igen. Denne gang vil de have en besked, der starter med seks 0’er.

Dette vil naturligvis være ekstremt tidskrævende, men denne gang, hvis budbringeren bliver fanget af byen, vil den tid, de vil tage for at manipulere den kumulative besked og derefter finde den tilsvarende nonce for hasjen, være uendeligt mere. Det kan endda tage år. Så f.eks. hvis i stedet for en budbringer sender generalerne flere budbringere, når byen endda er halvvejs gennem beregningsprocessen, bliver de angrebet og ødelagt.

Generalerne til højre har det ret nemt. Alt, hvad de skal gøre, er at tilføje beskeden med den korrekte nonce, der vil blive givet til dem, hash dem og se, om hashen matcher eller ej. Hashing af en streng er meget let at gøre. Det er i det væsentlige processen bag proof-of-work.

  • Processen bag at finde nonce til det passende hash-mål skal være ekstremt vanskelig og tidskrævende.
  • Processen med at kontrollere resultatet for at se, om der ikke er begået nogen fejlbehandling, bør imidlertid være meget enkel.

Så det er sådan, at minearbejdere i bitcoin implementerer bevis for arbejde for at udføre minedrift.

De bruger deres beregningskraft til at udvinde blokke ved at løse kryptografiske gåder. En blok i bitcoin udvindes hver 10. minut.

Hvordan fungerer transaktioner i Bitcoin?

Inden vi fortsætter, en kæmpe råb til professor Donald J Patterson og hans Youtube-kanal “djp3” for forklaringen.

Antag, at Alice vil sende et bestemt antal bitcoins til Bob. Hvordan fungerer transaktionssystemet i Bitcoin? Bitcoin-transaktioner er meget forskellige fra Fiat-tegnebogstransaktioner. Hvis Alice skulle give $ 2 til Bob, ville hun fysisk tage 2 dollars fra sin tegnebog og give den til Bob. Ting fungerer dog ikke sådan i Bitcoin. Du ejer ikke fysisk nogen Bitcoin, hvad du har er beviset for, at du har Bitcoins.

Der er to ting, du skal vide:

  • Minearbejdere validerer dine transaktioner ved at placere dataene i de miner, de har blokeret. Til gengæld for at give denne service opkræver de et transaktionsgebyr.

  • Når det kommer til FIAT-valuta, holder du ikke rigtig styr på, hvordan og hvor du har den specifikke note fra. For eksempel. Åbn din tegnebog lige nu, og tag alle sedler og mønter ud i den. Kan du fortælle, hvor præcist fik du hver eneste note og mønt fra? Chancerne er, at du ikke gør det. Imidlertid noteres historien for hver eneste bitcoin-transaktion i bitcoin.

Ok, så lad os nu gå dybt ind i, hvordan en bitcoin-transaktion mellem Alice og Bob finder sted. Der er to sider ved en transaktion, input og output. Hele denne transaktion vil have et navn, som vi til sidst finder ud af. Lad os nu se på dynamikken.

Transaktionsinput

For at få denne transaktion til at ske, skal Alice få bitcoins, som hun har modtaget fra forskellige tidligere transaktioner. Husk, som vi sagde før, i bitcoins regnes hver mønt via en transaktionshistorik.

Så antag, at Alice skal trække bitcoins fra følgende transaktioner, som vi skal navngive TX (0), TX (1) og TX (2). Disse tre transaktioner tilføjes, og det giver dig den inputtransaktion, som vi kalder TX (Input).

Diagrammatisk vil det se sådan ud:

Bliv Bitcoin-udvikler: Basic 101

Så det er det fra input-siden, lad os se, hvordan output-siden vil se ud.

Transaktionsoutput

Outputtet vil stort set have den mængde bitcoins, som Bob vil have efter transaktion, og enhver resterende ændring, der er tilbage, som derefter sendes tilbage til Alice. Denne ændring bliver derefter hendes inputværdi for alle fremtidige transaktioner.

En billedlig gengivelse af udgangssiden ser sådan ud:

Bliv Bitcoin-udvikler: Basic 101

Dette er en meget enkel transaktion, der kun har en output (bortset fra ÆNDRINGEN), der er transaktioner, der er mulige med flere output. Sådan ser det grundlæggende layout af transaktionen ud. For at dette hele kan gå igennem, skal visse betingelser dog være opfyldt.

Betingelser for en transaktion

  • TX (indgang) > TX (output). Inputtransaktionen skal altid være større end outputtransaktionen. I enhver transaktion er underskuddet mellem input og output (output + ændring) de transaktionsgebyrer, som minearbejdere opkræver. Så: Transaktionsgebyrer = TX (input) – (TX (output) + ændring).

  • På indgangssiden: TX (0) + TX (1) + TX (2) = TX (input). Hvis Alice ikke har de nødvendige midler til at udføre transaktionerne, afviser minearbejderne simpelthen transaktionerne.

  • Bob kan bliver nødt til at vise, at han kan levere det nødvendige bevis for at få bitcoins. Alice vil låse transaktionerne med Bobs offentlige adresse. Han bliver nødt til at fremstille sin private nøgle for at låse op for transaktionerne og få adgang til sine gebyrer.

  • Alice skal også kontrollere, at hun i første omgang har de nødvendige rettigheder til at sende over bitcoins. Den måde, hun gør det på, er ved at underskrive transaktionen med sin digitale signatur (også kendt som hendes private nøgle). Enhver kan afkode dette ved at bruge hendes offentlige nøgle og kontrollere, at det faktisk var Alice, der sendte dataene. Dette bevis kaldes “Signaturdata”. Husk dette, fordi dette vil være meget vigtigt senere.

Så hvad bliver navnet på hele denne transaktion?

Input (inklusive signaturdata) og outputdata tilføjes sammen og hashes ved hjælp af SHA 256-hashingalgoritmen. Output-hash er navnet på denne transaktion.

Koden for transaktionsoplysninger

Sådan ser transaktionen ud i kodeformularen aka scriptform. Antag, at Alice vil sende 0,0015 BTC til Bob, og for at gøre det sender hun input, der er 0,0015770 BTC. Sådan ser transaktionsdetaljerne ud:

Bliv Bitcoin-udvikler: Basic 101

Billede med tilladelse: djp3 youtube kanal.

Den første ting, du ser:

Er navnet på transaktionen aka hash af input- og outputværdien.

Vin_sz er antallet af inputdata, da Alice kun sender dataene ved hjælp af en af ​​sine tidligere transaktioner, er det 1.

Vout_sz er 2, fordi de eneste output er Bob og ændringen.

Se inputdataene? Alice bruger kun en inputtransaktion (i eksemplet, vi har givet ovenfor, vil dette være TX (0)), dette er grunden til, at vin_sz var 1.

  • Under inputdataene er hendes signaturdata.
  • Under alt dette er outputdataene:

Den første del af dataene betyder, at Bob får 0,0015 BTC.

Den anden del betyder, at 0.00005120 BTC er, hvad Alice får tilbage som forandring.

Husk nu, at inputdata var 0,0015770 BTC? Dette er større end (0,0015 + 0,00005120). Underskuddet på disse to værdier er det transaktionsgebyr, som minearbejderne opkræver.

Før vi fortsætter, skal vi dog diskutere en særlig form for transaktion kaldet Coinbase-transaktion. Det er dybest set de første transaktionsdata, der er på blokken, og det betyder den minedriftbelønning, som minearbejdere får ved minedrift af blokken. Pr. Lige nu er belønningen 12,5 BTC. Disse transaktioner har ingen inputdata, og de har kun outputdata.

En ting, du skal huske på, en transaktion i Bitcoin gennemgår, hvis og kun hvis minearbejderen, der har udvundet blokken, fysisk indsætter din transaktion inde i blokken. En minearbejder kan blive en midlertidig diktator for den blok, som de har udvundet. De kan opkræve transaktionsgebyrer for hver eneste transaktion, de lægger inde i blokken.

Da antallet af transaktioner steg med stormskridt, steg også den hastighed, hvormed blokke blev fyldt op. Oftere end ikke, måtte folk faktisk vente, indtil der blev oprettet nye blokke, så deres transaktioner skulle gennemføres. Dette skabte et efterslæb af transaktioner, faktisk den eneste måde at få dine transaktioner prioriteret var at betale et højt transaktionsgebyr til at tiltrække og tilskynde minearbejdere til at prioritere dine transaktioner.

Dette introducerede “udskiftningsgebyr” -systemet. Dybest set er det sådan, det fungerer. Antag, at Alice sender 5 bitcoins til Bob, men transaktionen går ikke igennem på grund af et efterslæb. Hun kan ikke “slette” transaktionen, fordi bitcoins, når de først er brugt, aldrig kan komme tilbage. Imidlertid kan hun foretage en ny transaktion på 5 bitcoins med Bob, men denne gang med transaktionsgebyrer, der er høje nok til at tilskynde minearbejdere. Da minearbejdere sætter hendes transaktion i blokken, overskriver den også den tidligere transaktion og gør den ugyldig.

Bitcoin Developer: Programmering i Bitcoin

Den oprindelige Bitcoin Core blev kodet af Satoshi Nakamoto ved hjælp af C++.

Lad os tjekke nogle af de udfordringer, som en blockchain-udvikler står over for, inden vi begynder. Oprettelse og vedligeholdelse af en offentlig blockchain er ikke let på grund af en række årsager.

(Før vi fortsætter, en kæmpe shoutout til David Schwartz for hans hovedtale vedrørende C ++ brug i blockchain softwareudvikling i CPPCON 2016.)

  • Årsag nr. 1: Sikkerhed

Blockchains, som David Schwartz udtrykker det, burde være fæstninger. For det første er koden offentlig og åben for alle at se. Alle kan se over koden og kontrollere for fejl og sårbarheder. I modsætning til andre open code-ressourcer er ulempen ved at finde sårbarheder på blockchain-koden imidlertid enorm. Enhver programmør kan hacke sig ind og komme væk med potentielt millioner og millioner af dollars. På grund af disse legitime sikkerhedsproblemer er udviklingen på blockchain normalt meget langsom.

  • Årsag nr. 2: Ressourcestyring

Det er vigtigt at holde trit med netværket. Du kan ikke komme for langt bagud og ikke følge med i alle netværkskrav. Du skal være godt rustet til at håndtere eksterne og lokale forespørgsler.

  • Årsag nr. 3: Ydeevne

Blockchain skal altid udføre de højest mulige muligheder, men for at dette kan ske, skal det valgte sprog være ekstremt alsidigt. Sagen er, at der er visse opgaver i blockchain, som kan paralleliseres, mens der er nogle opgaver, som ikke kan udføres parallelt.

Et godt eksempel på “paralleliserbar” opgave er verifikation af digital signatur. Alt hvad du har brug for til bekræftelse af signaturen er nøglen, transaktionen og signaturen. Med kun tre data kan du udføre verifikationer på en paralleliseret måde.

Dog skal ikke alle funktionerne på en blockchain gøres på den måde. Tænk på selve transaktionens udførelse. Flere transaktioner kan ikke udføres parallelt; det skal gøres en ad gangen for at undgå fejl som dobbeltforbrug. Nogle sprog er gode til parallelle operationer, mens andre er gode til ikke-parallelle operationer.

  • Årsag nr. 4: Isolering

Hvad er deterministisk adfærd?

Hvis A + B = C, uanset omstændighederne, vil A + B altid være lig med C. Det kaldes deterministisk adfærd.

Hash-funktioner er deterministiske, hvilket betyder at As hash altid vil være H (A).

Så i blockchain-udvikling skal alle transaktionsoperationer være deterministiske. Du kan ikke have en transaktion, der opfører sig på en måde og derefter opfører sig en anden måde den næste dag. På samme måde kan du ikke have smarte kontrakter, der fungerer på to forskellige måder på to forskellige maskiner.

Den eneste løsning på dette er isolation. Dybest set isolerer du dine smarte kontrakter og transaktioner fra ikke-deterministiske elementer.

Så vi har diskuteret de største problemer, som blockchain-udviklere står over for. Lad os endelig tjekke nogle af de sprog, som udviklerne kan bruge til at kode på blockchain.

Sprog nr. 1: C++

Lad os først og fremmest starte med bedstefaderen til dem alle, den stedsegrønne C ++. C ++ blev oprettet af Bjarne Stroustrup som en udvidelse af C-sproget. Sproget blev designet til at have C’s fleksibilitet og effektivitet, men med nogle store forskelle. Den største forskel mellem C og C ++ er, at mens C er procesorienteret, er C ++ objektorienteret.

Hvad dette betyder er, at data og funktioner i C ++ pakkes ind i en pæn lille pakke kaldet “objekter”, hvilket betyder, at når et objekt først er oprettet, kan det let kaldes og genbruges i andre programmer, hvilket i høj grad reducerer kodningstiden.

Lad os se på det enkleste C ++ – program i verden. Programmet “Hello World”:

#omfatte

ved hjælp af namespace std;

int main ()

{

cout << "Hej Verden!";

returnere 0;

}

ved hjælp af namespace std;

int main ()

{

cout << "Hej Verden!";

returnere 0;

}

Denne kode udskrives: Hej verden!

Så hvorfor bruger folk stadig C ++ til kodning? Der er helt sikkert langt mere glamourøse sprog nu, hvorfor insisterer folk stadig på at gå tilbage til C ++? Hvorfor er bitcoin blockchain kodet på C++?

Som det sker, har C ++ visse funktioner, der gør det meget tiltalende. (Råb Peter Wiulle og David Schwartz for den følgende forklaring).

Funktion nr. 1: Hukommelseskontrol

Husk hvad vi sagde tidligere om udfordringerne ved blockchain-udvikling? Ikke kun skal blockchains sikres fæstninger, men de skal også have effektiv ressourceforvaltning. En blockchain formodes at interagere med mange ikke-tillid til slutpunkter, mens de stadig giver hurtig service til alle knudepunkter.

Denne hurtige og hurtige service er afgørende for succesen med en kryptokurrency som bitcoin. Husk, de er alle baseret på princippet om “konsensus”, alle noder på netværket skal acceptere og afvise nøjagtigt de samme blokke, ellers kan der være en gaffel i kæden.

For at opfylde alle disse krav og udføre på det højeste niveau har du brug for tæt og fuldstændig kontrol over CPU- og hukommelsesforbrug. C ++ giver det til sine brugere.

Funktion nr. 2: Trådning

Som vi har diskuteret før, er en af ​​de største udfordringer ved blockchain-programmeringen integrationen af ​​opgaver, der parallellerer godt, og de opgaver, der ikke paralleliserer. De fleste sprog er specialiserede i et, men C ++ ‘s trådningsevne er god nok til at håndtere både parallelle og ikke-parallelle opgaver. En tråd er et sæt instruktioner, der kan udføres samtidigt. C ++ tillader ikke kun fir fremragende multithreading-faciliteter med effektiv inter-thread-kommunikation, det optimerer også single-thread-ydelse.

Funktion nr. 3: Flyt semantik

Et af de mest interessante aspekter af C ++ er move semantik. Flyt semantik giver en måde, hvorpå indholdet kan flyttes mellem objekter i stedet for at kopieres direkte. Lad os tjekke forskellene mellem kopisemantik og flyt semantik. (Efter data taget fra Peter Alexanders svar i “Stackoverflow”).

Kopier semantik:

  • hævde (b == c);
  • a = b;
  • hævde (a == b && b == c);

Så hvad sker der her? Værdien af ​​b går ind i a og b forbliver uændret i slutningen af ​​det hele.

Overvej dette nu.

Flyt semantik:

  • hævder (b = = c);
  • flytte (a, b);
  • hævder (a = = c);

Hvad sker der her?

Kan du se forskellen mellem de to blokke af koder?

Når vi bruger move semantikken, behøver værdien af ​​“b” ikke være den uændrede. Det er forskellen mellem kopisemantik og flyt semantik. Den største fordel ved at flytte semantik er, at du kun kan få kopier af bestemte data, når du har brug for dem, hvilket i høj grad mindsker redundansen i koden og giver et enormt ydeevne boost. Så som du kan se, er denne effektive hukommelsesstyring og høje ydeevne begge ønskelige for blockchain.

Funktion nr. 4: Kompilér tidspolymorfisme

Hvad er polymorfisme?

Kan du huske, da vi kaldte C ++ for et ”objektorienteret programmeringssprog” (OOP)? Polymorfisme er tilfældigvis en OOP-ejendom. Ved hjælp af polymorfisme bruger du en bestemt funktion på mere end én måde. I C ++ kan polymorfisme bruges på to måder:

  • Kompilér tidspolymorfisme.
  • Kør tid polymorfisme.

Herovre fokuserer vi kun på kompileringstidspolymorfisme. Der er to måder, hvorpå C ++ implementerer kompileringstidspolymorfisme:

  • Funktion Overbelastning.
  • Operatør Overbelastning.

Funktion Overbelastning:

Funktionsoverbelastning er, når du har mange funktioner med samme navn, men med forskellige parameterindtag.

Overvej dette program:

#omfatte

ved hjælp af namespace std;

klasse A

{

void func (int x) // første forekomst af funktionen tager kun en heltalværdi

{

cout<<x<<endl;

}

void func (dobbelt x) // anden forekomst af funktionen tager kun en dobbelt værdi

{

cout<<x<<endl;

}

void func (int x, int y) // tredje forekomst af funktionen tager to heltal værdier

{

cout<<x = y<<endl;

}

}

int main ()

{

En obj1 // gør et objekt i klasse A.

// nu skal vi kalde funktionerne

obj1.func (2);

obj1.func (2.65);

obj1.func (2,5);

returnere 0;

}

Nu når du kører denne funktion, vil output være:

  • 2
  • 2.65
  • 7

Så som du kan se, blev den samme funktion func () brugt på 3 forskellige måder.

Operatør Overbelastning:

I C ++ kan den samme operator have mere end en betydning.

For eksempel. “+” Kan bruges både til matematisk tilføjelse og til sammenkædning.

Sammenkædning betyder grundlæggende at tage to strenge og kombinere dem som en.

Så 3 + 4 = 7.

OG

Block + geeks = Blockgeeks.

Den samme operatør, gjorde to forskellige funktioner, dette er operatørens overbelastning.

Compile time polymorphism hjælper meget med blockchain-udvikling. Det hjælper med at placere ansvar separat i forskellige funktioner og til gengæld øge ydeevnen for hele systemet.

Funktion nr. 5: Kodeisolering

C ++ har navneområde-funktioner, som kan importeres fra et program til et andet. Navneområde hjælper med at undgå navnekollisioner. Da C ++ har klasser, kan den også fungere som grænser mellem forskellige API’er og hjælpe med at gøre klar adskillelse.

En klasse i C ++ er en brugerdefineret type eller datastruktur, der er erklæret med nøgleordsklasse, der har data og fungerer som sine medlemmer. Du kan få adgang til de funktioner, der er erklæret i klassen, ved at erklære objekter fra den pågældende klasse.

Funktion nr. 6: Modenhed

Sproget er både modent og opdateres regelmæssigt. Der er mindst 3 solide kompilatorer, som David Schwartz siger, og de nye funktioner er rettet mod at løse reelle problemer. Debuggere og analytiske værktøjer af enhver art er tilgængelige for alt fra ydeevneprofilering til automatisk detektion af problemer af enhver art. Dette betyder, at sproget konstant vokser for at indarbejde nyere og bedre funktioner.

På grund af ovenstående funktioner valgte Satoshi Nakamoto C ++ til at være basissproget for bitcoin-kildekoden.

Brug af Bitcoin Wallets

Hvis du vil blive Bitcoin-udvikler, skal du helt sikkert vide, hvordan bitcoin-tegnebøger fungerer.

Bliv Bitcoin-udvikler: Basic 101

Uden tvivl er den sikreste måde at gemme enhver kryptovaluta på ved hjælp af en papirpung. Ved at følge nogle få tip nedenfor kan du oprette en helt gratis. Dette gør dig virkelig til mester for din investering, og hvis forholdsregler følges, er der ingen mulighed for, at dine private nøgler bliver kendt af nogen anden.

Selvfølgelig betyder det, at det er endnu vigtigere at føre en oversigt over dem. At miste private nøgler betyder, at du mister hele indholdet af din papir tegnebog (men igen, det gælder for hver tegnebog derude.)

Hvad er en papir tegnebog?

For at holde det meget simpelt er papir tegnebøger en offline-opbevaringsmetode til at gemme kryptokurrency. Det inkluderer udskrivning af dine offentlige og private nøgler på et stykke papir, som du derefter gemmer og gemmer et sikkert sted. Nøglerne udskrives i form af QR-koder, som du i fremtiden kan scanne for alle dine transaktioner. Årsagen til, at det er så sikkert, er, at det giver dig, brugeren fuld kontrol. Du behøver ikke bekymre dig om et hardware hardware og heller ikke bekymre dig om hackere eller noget malware. Du skal bare passe på et stykke papir.

Opsætning af en papir tegnebog

Papirbøger dannes ved hjælp af et program til tilfældigt at generere en offentlig og privat nøgle. Tasterne vil være unikke, og det program, der genererer dem, er open source. Dem med avanceret viden om kodning kan selv kontrollere backend af programmet for tilfældighed i resultater. Hvad mere er, vi genererer vores nøgler offline. Dette udrydder eksponeringen for online trusler, og sletning af det enkle program efter brug vil ødelægge spor af dem.

Bare rolig, hvis det lyder forvirrende, det er det ikke. Du har ikke brug for nogen specifik viden om kodning eller kryptering. Alt hvad du behøver er en computer, en internetforbindelse, noget at registrere dine nøgler på.

Lad os alligevel oprette vores papir tegnebog. Følg disse trin:

  • Sørg for, at din computer er helt fri for enhver form for ondsindet software. En helt ny computer ville være ideel, men er ofte ikke mulig.
  • Besøg siden WalletGenerator.net.

Bliv Bitcoin-udvikler: Basic 101

  • Download zip-filen ved at klikke her:

    Bliv Bitcoin-udvikler: Basic 101

  • Når du har downloadet, skal du åbne filen “index.html”, men inden det skal du sørge for, at dit internet er slukket. Hele denne proces gøres for at sikre, at din tegnebog er fri for hacker.

Bliv Bitcoin-udvikler: Basic 101

  • Nu er det tid til at generere din tegnebog. Bliv ved med at svæve over den fremhævede tekst, og den genererer flere tegn. Eller hvis du vil, kan du manuelt indtaste tilfældige tegn. Bliv ved med at gøre det, indtil tælleren går til “0”.

    Bliv Bitcoin-udvikler: Basic 101

  • I det øjeblik optællingen går til nul, genereres din tegnebog.

Bliv Bitcoin-udvikler: Basic 101

  • Udskriv siden, eller lav flere kopier af numrene ud fra den. (Vigtigt: Sørg for, at printeren ikke er tilsluttet Wi-Fi på dette tidspunkt).

  • Slet gemt webside. Du kan nu sikkert oprette forbindelse til internettet igen.
  • Gem dine private nøgler i deres langsigtede, private, sikre hjem.

Nu hvor du har din tegnebog, kan du gå til en af ​​børserne for at veksle din fiat-valuta til bitcoin. Nogle af de børser, du kan bruge, er:

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

Du skal undersøge og finde ud af, hvilke børser der fungerer bedst i dit område.

At være i know

En af de mest kritiske ting, du skal gøre for at være bitcoin-udvikler, er at være vidende.

Der er mange udviklingssamfund hvor du kan deltage og interagere med andre udviklere.

Konklusion om Bitcoin Developer

Så der går du.

Denne guide giver dig en grundlæggende idé om, hvad du skal gøre og lære for at blive en Bitcoin-udvikler.

Du kan tjekke vores kurser, hvis du vil starte din udviklerkarriere i dag.

Bitcoin og kryptokurrency generelt har uendelige muligheder i fremtiden. Vi kan meget vel være i spidsen for den næste store æra-definerende protokol. Kan blockchain-teknologi være det næste internet? Kun tiden kan vise det.

Hvad der dog kan siges uden tvivl er, at det store omfang af bitcoin og andre blockchain-applikationer ikke kender nogen grænser.

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