Ryhdy Bitcoin-kehittäjäksi: Basic 101

Tässä oppaassa aiomme tutkia, mitä se tarvitsee olla bitcoin-kehittäjä.

Tosiasia on, että “bitcoin” ja “blockchain-tekniikka” ovat yleensä kuumin aihe maan päällä juuri nyt. 1 BTC: n arvo on noussut viime kuukausien aikana (kirjoituksen jälkeen):

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Kuvahyvitys: CoinMarketCap

Mitä se tarvitsee tulla bitcoin-kehittäjäksi?

Tässä oppaassa pyrimme vastaamaan tähän kysymykseen

Joten mikä on bitcoin?

Bitcoin on salausvaluutta, jonka salaperäinen Satoshi Nakamoto käsitteli vuonna 2009. Se on hajautettu digitaalinen valuutta, joka toimii vertaisverkossa, käyttäen lohkoketjutekniikkaa. Jos haluat tulla bitcoin-kehittäjäksi, sinun on ensin lukettava Satoshi Nakamoton Bitcoin Whitepaper.

Tämä julkaisu on välttämätön luku kaikille, jotka haluavat päästä blockchain-peliin. Paitsi että valkoinen kirja käsitteellisti bitcoinia, se sai meidät myös näkemään, kuinka bysanttilainen vikasietoinen järjestelmä voi toimia hajautetussa ympäristössä.

Jos haluat tulla Bitcoin-kehittäjäksi, on tärkeää, että tiedät miten blockchain toimii.

Mikä on Blockchain?

Lohkoketju on lohkoketju, jossa kukin lohko sisältää arvotietoja ilman keskitettyä valvontaa. Se on kryptografisesti turvallinen ja muuttumaton. Lohkoketju käyttää kahta tärkeää tietorakennetta: osoittimet ja linkitetyt luettelot.

Osoittimet

Osoittimet ovat muuttujia ohjelmoinnissa, joka tallentaa toisen muuttujan osoitteen. Yleensä minkä tahansa ohjelmointikielen normaalimuuttujat tallentavat tietoja.

Esimerkiksi. int a = 10, tarkoittaa, että on olemassa muuttuja “a”, joka tallentaa kokonaislukuarvot. Tässä tapauksessa se tallentaa kokonaislukuarvon, joka on 10. Tämä on normaali muuttuja.

Osoittimet tallentavat kuitenkin arvojen tallentamisen sijaan muiden muuttujien osoitteet. Siksi niitä kutsutaan osoittimiksi, koska ne osoittavat kirjaimellisesti kohti muuttujien sijaintia.

Linkitetyt luettelot

Linkitetty luettelo on yksi tietorakenteiden tärkeimmistä kohteista. Tältä linkitetty luettelo näyttää:

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Se on lohkojen sarja, joista kukin sisältää tietoja, jotka on linkitetty seuraavaan lohkoon osoittimen avulla. Osoittimuuttuja sisältää tässä tapauksessa seuraavan solmun osoitteen ja siten yhteys muodostetaan. Kuten näette, viimeisellä solmulla on nollaosoitin, mikä tarkoittaa, että osoittimella ei ole arvoa.

Yksi tärkeä asia, joka on huomioitava tässä, kunkin lohkon sisällä oleva osoitin sisältää seuraavan lohkon osoitteen. Siten osoittaminen saavutetaan. Nyt saatat kysyä, mitä se tarkoittaa luettelon ensimmäiselle lohkolle? Missä ensimmäisen lohkon osoitin pysyy?

Ensimmäistä lohkoa kutsutaan “geneettiseksi lohkoksi” ja sen osoitin on itse järjestelmässä. Se näyttää tavallaan tältä:

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Kuva: Coursera

Jos mietit mitä “hash pointer” tarkoittaa, se on osoitin, joka sisältää edellisen lohkon hash.

Kuten olet ehkä arvannut jo nyt, blockchainin rakenne perustuu tähän. Lohkoketju on periaatteessa linkitetty luettelo ja näyttää tältä:

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Lohkoketju on linkitetty luettelo, joka sisältää tietoja ja hash-osoittimen, joka osoittaa edelliseen lohkoonsa, mikä luo ketjun. Mikä on hajautusosoitin? Hajautusosoitin on samanlainen kuin osoitin, mutta sen lisäksi, että se sisältää vain edellisen lohkon osoitteen, se sisältää myös edellisen lohkon sisällä olevan datan hajautusarvo. Tämä yksi pieni säätö tekee blokkiketjuista niin hämmästyttävän luotettavia ja uraauurtavia.

Kuvittele tätä hetkeksi, hakkeri hyökkää lohkoon 3 ja yrittää muuttaa tietoja. Hajautusfunktioiden ominaisuuksien vuoksi pieni muutos tiedoissa muuttaa hajautusta dramaattisesti. Tämä tarkoittaa, että kaikki lohkossa 3 tehdyt pienet muutokset muuttavat lohkoon 2 tallennettua hajautusta, nyt mikä puolestaan ​​muuttaa lohkon 2 dataa ja tiivistettä, mikä johtaa muutoksiin lohkossa 1 ja niin edelleen ja niin edelleen . Tämä muuttaa ketjun kokonaan, mikä on mahdotonta. Näin estoketjut saavuttavat muuttumattomuuden.

Joten miten lohkon otsikko näyttää?

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Lohkon otsikko sisältää:

  • Versio: Lohkon versionumero.
  • Aika: nykyinen aikaleima.
  • Nykyinen vaikea kohde.
  • Edellisen lohkon hajautus.
  • Nonce (lisää tästä myöhemmin).
  • Merklen juuren hajautus.

Mikä on kaivostoiminta?

“Mining” on tapa, jolla tuotat uusia bitcoineja. Kaivostoiminta toimii “työn todistamisen” periaatteella. Työn todistaminen tarkoittaa periaatteessa tätä: Ongelman ratkaisemisen on oltava äärimmäisen vaikeaa, mutta kun olet ratkaissut sen, oikean ratkaisun on oltava yksinkertaista..

Näemme, kuinka bitcoin ja useimmat kryptovaluutat käyttävät sitä myöhemmin. Mutta toistaiseksi meidän on ymmärrettävä, MIKSI työn todistamista vaadittiin aluksi.

Yksi monista Nakamoton kohtaamista ongelmista oli Bysantin kenraalien ongelman ratkaiseminen. Jokainen hajautettu vertaisverkkojärjestelmä epäonnistui, koska he eivät pystyneet vastaamaan Bysantin kenraalien ongelmaan. Nakamoto pystyi vihdoin vastaamaan tähän käyttämällä työn todistusta.

Joten mikä on Bysantin kenraalien ongelma?

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Kuva Kohteliaisuus: Keskitaso

Okei, kuvittele, että on joukko bysanttilaisia ​​kenraaleja ja he haluavat hyökätä kaupunkiin. Heillä on edessään kaksi hyvin erilaista ongelmaa:

  • Kenraalit ja heidän armeijansa ovat hyvin kaukana toisistaan, joten keskitetty hallinto on mahdotonta, mikä tekee koordinoidusta hyökkäyksestä erittäin vaikean.
  • Kaupungilla on valtava armeija, ja ainoa tapa, jolla he voivat voittaa, on, jos he kaikki hyökkäävät kerralla.

Onnistuneen koordinoinnin aikaansaamiseksi linnan vasemmalla puolella olevat armeijat lähettävät lähettilään linnan oikealla puolella oleville armeijoille viestin, jossa lukee ”hyökkäyskeskiviikko”. Oletetaan kuitenkin, että oikeanpuoleiset armeijat eivät ole valmistautuneet hyökkäykseen ja sanovat: “EI. Hyökkäysperjantai ”ja lähetä lähettiläs kaupungin läpi takaisin vasemmalla oleville armeijoille.

Täällä kohtaamme ongelman.

Köyhälle messengerille voi tapahtua useita asioita. Kaupunki voisi saada hänet kiinni, vaarantua, tappaa ja korvata toisen lähettilään. Tämä johtaisi siihen, että armeijat saisivat väärennettyä tietoa, mikä voi johtaa koordinoimattomaan hyökkäykseen ja tappioon.

Tällä on selkeät viitteet myös blockchainiin. Ketju on valtava verkosto; kuinka voit luottaa heihin? Jos lähetät jollekulle 4 eetteriä lompakostasi, mistä tiedät varmasti, että joku verkossa ei aio muuttaa sitä ja vaihtaa 4: stä 40: een?

Satoshi Nakamoto pystyi ohittamaan Bysantin kenraalin ongelman keksimällä todistuksen työprotokollasta. Näin se toimii. Oletetaan, että vasemmanpuoleinen armeija haluaa lähettää viestin nimeltä “hyökkäys MAANTAI” oikealla olevalle armeijalle, he seuraavat tiettyjä vaiheita.

  • Ensinnäkin he lisäävät “nonce” alkuperäiseen tekstiin. Nonce voi olla mikä tahansa satunnainen heksadesimaaliarvo.
  • Sen jälkeen he hajauttavat tekstin, joka on liitetty nonceen, ja näkevät tuloksen. Oletetaan, että hypoteettisesti ottaen armeijat ovat päättäneet jakaa vain viestejä, jotka hajautettaessa antavat tuloksen, joka alkaa 5 nollasta.
  • Jos hajautusedellytykset täyttyvät, he lähettävät sanomalehdelle viestin tiivisteen. Jos ei, niin he jatkavat noncen arvon muuttamista satunnaisesti, kunnes saavat halutun tuloksen. Tämä toiminta on erittäin työläs ja aikaa vievä ja vie paljon laskentatehoa.
  • Jos messenger joutuu kaupungin kiinni ja viestiä muutetaan hash-toiminto-ominaisuuksien mukaan, hash itse muuttuu dramaattisesti. Jos oikealla puolella olevat kenraalit näkevät, että tiivistetty viesti ei ala vaaditulla 0: n määrällä, he voivat yksinkertaisesti keskeyttää hyökkäyksen.

On kuitenkin olemassa mahdollinen porsaanreikä.

Ei hash-toimintoa on 100% törmäysvapaa. Törmäysresistanssi tarkoittaa tätä: Kun otetaan huomioon kaksi erilaista tuloa A ja B, joissa H (A) ja H (B) ovat vastaavia tiivisteitä, on mahdotonta, että H (A) on yhtä suuri kuin H (B). Tämä tarkoittaa sitä, että suurimmaksi osaksi jokaisella syötteellä on oma ainutlaatuinen hajautus. Käytännössä mikään hash-toiminto ei kuitenkaan ole 100% törmäys.

Joten mitä jos kaupunki saa viestin, tampereilee sen kanssa ja muuttaa sitten vastaavasti noncea, kunnes he saavat halutun tuloksen, jolla on tarvittava määrä 0: ta? Tämä on erittäin aikaa vievää, mutta se on silti mahdollista. Tämän torjumiseksi kenraalit aikovat käyttää voimaa numeroina.

Oletetaan, että sen sijaan, että vain yksi vasemmalla oleva kenraali lähettää viestejä oikealle olevalle kenraalille, vasemmalla on 3 kenraalia, joiden on lähetettävä viesti oikealla oleville. Tätä varten he voivat tehdä oman viestinsä ja hajauttaa sitten kumulatiivisen viestin ja liittää sitten ei-muodostuneen hashiin ja hajauttaa sen uudelleen. Tällä kertaa he haluavat viestin, joka alkaa kuudella 0: lla.

Ilmeisesti tämä tulee olemaan erittäin aikaa vievää, mutta tällä kertaa, jos messenger kuitenkin tarttuu kaupunkiin, aika, jonka he kuluttavat kumulatiivisen viestin peukaloimiseksi ja sitten vastaavan hash-kohteen löytämiseksi, on äärettömän pitkä lisää. Se voi viedä jopa vuosia. Joten esim. Jos kenraalit lähettävät yhden lähettimen sijasta useita lähettiläitä, kaupungin hyökätään ja tuhotaan siihen mennessä, kun kaupunki on jo puolivälissä laskentaprosessia..

Oikealla kenraaleilla on se melko helppoa. Heidän on vain liitettävä viesti oikeaan nonce-arvoon, joka heille annetaan, hajauttaa ne ja nähdä, sopivatko hajautusrivit. Merkkijonon hajauttaminen on erittäin helppoa. Pohjimmiltaan tämä on työn todistamisen taustalla oleva prosessi.

  • Asianmukaisen hash-tavoitteen löytämisen prosessin pitäisi olla äärimmäisen vaikeaa ja aikaa vievää.
  • Tuloksen tarkistamisprosessin sen selvittämiseksi, onko väärinkäytöksiä tehty, pitäisi kuitenkin olla hyvin yksinkertaista.

Joten bitcoinin kaivostyöläiset toteuttavat työtodistuksen kaivoksensa suorittamiseksi.

He käyttävät laskennallista voimaansa kaivamaan lohkoja ratkaisemalla salauspalapelit. Yksi lohko bitcoinissa louhitaan 10 minuutin välein.

Kuinka liiketoimet toimivat Bitcoinissa?

Ennen kuin jatkamme, valtava huuto professori Donald J Pattersonille ja hänen Youtube-kanavalleen “djp3” selitykseksi.

Oletetaan, että Alice haluaa lähettää tietyn määrän bitcoineja Bobille. Kuinka Bitcoinin transaktiojärjestelmä toimii? Bitcoin-tapahtumat ovat hyvin erilaisia ​​kuin Fiat-lompakon liiketoimet. Jos Alice antaisi 2 dollaria Bobille, hän ottaisi fyysisesti 2 dollaria lompakostaan ​​ja antaisi sen Bobille. Asiat eivät kuitenkaan toimi niin Bitcoinissa. Et fyysisesti omista mitään Bitcoinia, mutta sinulla on todiste siitä, että sinulla on Bitcoineja.

Sinun on tiedettävä vielä kaksi asiaa:

  • Kaivostyöntekijät vahvistavat tapahtumasi asettamalla tiedot estettyihin kaivoksiin. Vastineeksi tämän palvelun antamisesta he veloittavat transaktiomaksun.
  • FIAT-valuutan suhteen et todellakaan seuraa, miten ja mistä sait kyseisen nimen. Esimerkiksi. Avaa lompakkosi juuri nyt ja ota kaikki setelit ja kolikot mukaan. Voitteko kertoa mistä tarkalleen sait jokaisen setelin ja kolikon? Mahdollisuudet ovat, että et. Bitcoinissa kuitenkin jokaisen yksittäisen bitcoin-tapahtuman historia otetaan huomioon.

Okei, joten nyt tehdään syvällinen sukellus siihen, miten Alice ja Bob välinen bitcoin-kauppa tapahtuu. Tapahtumassa on kaksi puolta, Input ja Output. Tällä koko tapahtumalla on nimi, jonka selvitämme lopulta. Katsotaan nyt toistaiseksi dynamiikkaa.

Transaktiotulo

Jotta tämä tapahtuma tapahtuisi, Alicen on hankittava bitcoineja, jotka hän on saanut useista aikaisemmista tapahtumista. Muista, kuten sanoimme aiemmin, bitcoinissa jokainen kolikko otetaan huomioon tapahtumahistorian kautta.

Joten oletetaan, että Alice tarvitsee vetää bitcoineja seuraavista tapahtumista, jotka nimetään TX (0), TX (1) ja TX (2). Nämä kolme tapahtumaa lasketaan yhteen ja se antaa sinulle syötetapahtuman, jota kutsumme TX: ksi (Input).

Kaaviollisesti se näyttää tältä:

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Joten, se on tulopuolelta, katsotaanpa, miltä lähtöpuoli näyttää.

Tapahtuman tuotos

Lähdössä on pohjimmiltaan bitcoinien määrä, jonka Bob omistaa tapahtuman jälkeen, ja mahdolliset jäljellä olevat muutokset, jotka sitten lähetetään takaisin Alicelle. Tästä muutoksesta tulee sitten hänen kaikkien tulevien tapahtumien syöttöarvo.

Kuvaesitys ulostulopuolelta näyttää tältä:

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Nyt tämä on hyvin yksinkertainen tapahtuma, jolla on vain yksi lähtö (muutosta lukuun ottamatta), on tapahtumia, jotka ovat mahdollisia useilla lähtöillä. Tältä näyttää tapahtuman perusasettelu. Jotta tämä koko asia voidaan käydä läpi, tiettyjen ehtojen on kuitenkin täytyttävä.

Kaupan ehdot

  • TX (tulo) > TX (lähtö). Syötetapahtuman on aina oltava suurempi kuin lähtötransaktio. Kaikissa transaktioissa tuotantopanoksen ja tuotoksen alijäämä (tuotos + muutos) on kaivostyöläisten keräämät transaktiomaksut. Joten: Tapahtumamaksut = TX (Input) – (TX (output) + Change).
  • Syöttöpuolella: TX (0) + TX (1) + TX (2) = TX (tulo) .Jos Alicella ei ole tarvittavia varoja tapahtumien suorittamiseen, kaivostyöläiset yksinkertaisesti hylkäävät tapahtumat.
  • Bobin on osoitettava, että hän voi toimittaa tarvittavat todisteet bitcoinien saamiseksi. Alice lukitsee tapahtumat Bobin julkisella osoitteella. Hänen on esitettävä yksityinen avain, jotta maksutapahtumat voidaan avata ja saada pääsy maksuihinsa.
  • Alicen on myös tarkistettava, että hänellä on vaaditut oikeudet lähettää bitcoineja ensisijaisesti. Tapa, jolla hän tekee, on allekirjoittamalla tapahtuma digitaalisella allekirjoituksellaan (eli yksityisellä avaimellaan). Kuka tahansa voi purkaa tämän käyttämällä julkista avainta ja varmistaakseen, että Alice tosiaan lähetti tiedot. Tätä todistusta kutsutaan “allekirjoitustiedoksi”. Muista tämä, koska se on erittäin tärkeää myöhemmin.

Joten mikä tulee olemaan koko tämän tapahtuman nimi?

Syöttö (mukaan lukien allekirjoitustiedot) ja lähtödata lisätään yhteen ja hajautetaan SHA 256 -sekoitusalgoritmilla. Lähtö hash on nimi, joka annetaan tälle tapahtumalle.

Tapahtuman yksityiskohdat

Näin tapahtuma näyttää koodilomakkeessa eli komentosarjan muodossa. Oletetaan, että Alice haluaa lähettää 0,0015 BTC: tä Bobille ja tätä varten hän lähettää syötteitä, joiden arvo on 0,0015770 BTC. Näin kaupan yksityiskohdat näyttävät:

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Kuva: djp3 youtube -kanava.

Ensimmäinen asia, jonka näet:

Onko tapahtuman nimi eli tulo- ja lähtöarvon tiiviste.

Vin_sz on syötetietojen määrä, koska Alice lähettää tietoja vain yhdellä aiemmista tapahtumista, se on 1.

Vout_sz on 2, koska ainoat lähdöt ovat Bob ja muutos.

Näetkö syötetiedot? Alice käyttää vain yhtä syötetapahtumaa (yllä annetussa esimerkissä tämä on TX (0)), tästä syystä vin_sz oli 1.

  • Syötetietojen alapuolella on hänen allekirjoitustietonsa.
  • Kaiken tämän alapuolella on lähtötiedot:

Tietojen ensimmäinen osa tarkoittaa, että Bob saa 0,0015 BTC: tä.

Toinen osa tarkoittaa, että 0.00005120 BTC on se, mitä Alice saa takaisin muutoksena.

Muista nyt, että lähtötiedot olivat 0,0015770 BTC? Tämä on suurempi kuin (0,0015 + 0,00005120). Näiden kahden arvon alijäämä on kauppamaksu, jonka kaivostyöläiset perivät.

Ennen kuin jatkamme, keskustellaanpa erityisestä tapahtumasta nimeltä Coinbase-tapahtuma. Se on pohjimmiltaan ensimmäinen lohkossa oleva tapahtumadata, ja se merkitsee kaivosmaksua, jonka kaivostyöläiset saavat lohkon louhinnassa. Tällä hetkellä palkkio on 12,5 BTC. Näillä tapahtumilla ei ole syöttötietoja ja niillä on vain lähtötietoja.

Yksi asia, joka sinun on pidettävä mielessä, Bitcoin-kauppa tapahtuu vain ja vain, jos lohkon louhinut kaivosmies laittaa fyysisesti tapahtumasi lohkon sisälle. Kaivosmiehestä voi tulla louhimansa lohkon väliaikainen diktaattori. He voivat periä transaktiomaksuja jokaisesta lohkon sisälle asettamastaan ​​tapahtumasta.

Kun tapahtumien määrä kasvoi harppauksin, myös lohkojen täyttymisnopeus kasvoi. Useimmiten ihmisten oli tosiasiallisesti odotettava uusien lohkojen luomista, jotta heidän tapahtumansa käydään läpi. Tämä loi transaktiotapahtuman, itse asiassa ainoa tapa saada liiketoimet etusijalle oli maksaa riittävän korkea transaktiomaksu houkuttelemaan ja kannustamaan kaivostyöläisiä priorisoimaan tapahtumasi.

Tämä otti käyttöön korvaamisjärjestelmän palkkiojärjestelmällä. Pohjimmiltaan se toimii näin. Oletetaan, että Alice lähettää 5 bitcoinia Bobille, mutta tapahtuma ei ole meneillään ruuhkan takia. Hän ei voi “poistaa” tapahtumaa, koska kerran käytetty bitcoins ei voi koskaan tulla takaisin. Hän voi kuitenkin tehdä toisen 5 bitcoinin tapahtuman Bobin kanssa, mutta tällä kertaa transaktiomaksuilla, jotka ovat riittävän korkeita kannustamaan kaivostyöläisiä. Kun kaivostyöläiset asettavat hänen tapahtumansa lohkoon, se korvaa myös edellisen tapahtuman ja tekee siitä mitättömän.

Bitcoin-kehittäjä: Ohjelmointi Bitcoinissa

Alkuperäisen Bitcoin-ytimen koodasi Satoshi Nakamoto käyttäen C: tä++.

Ennen kuin aloitamme, tutustutaan joihinkin haasteisiin, joita blockchain-kehittäjät kohtaavat. Julkisen estoketjun luominen ja ylläpitäminen ei ole helppoa useista syistä.

(Ennen kuin jatkamme, valtava huuto David Schwartzille hänen pääpuheenvuorostaan ​​C ++: n käytöstä blockchain-ohjelmistokehityksessä CPPCON 2016: ssa.)

  • Syy # 1: Turvallisuus

Blockchainien, kuten David Schwartz sanoo, pitäisi olla linnoituksia. Ensinnäkin koodi on julkinen ja avoin kaikille nähtäväksi. Kuka tahansa voi tarkistaa koodin ja tarkistaa virheet ja haavoittuvuudet. Toisin kuin muut avoimen koodin resurssit, haittojen löytäminen blockchain-koodista on kuitenkin massiivinen. Jokainen ohjelmoija voi hakata ja päästä eroon mahdollisesti miljoonien ja miljoonien dollareiden avulla. Näiden oikeutettujen turvallisuusongelmien takia blockchainin kehitys on yleensä hyvin hidasta.

  • Syy # 2: Resurssien hallinta

On tärkeää pysyä verkon tahdissa. Et voi jäädä liian kauas taaksepäin etkä pysy kaikkien verkon vaatimusten mukaisina. Sinun tulisi olla hyvin varustettu käsittelemään etä- ja paikallisia kyselyitä.

  • Syy # 3: Suorituskyky

Lohkoketjun on aina suoritettava parhaan mahdollisen kykynsä mukaan, mutta jotta tämä tapahtuisi, valitun kielen on oltava erittäin monipuolinen. Asia on, että lohkoketjussa on tiettyjä tehtäviä, jotka ovat rinnakkaisia, kun taas joitain tehtäviä ei voida suorittaa rinnakkain.

Hyvä esimerkki rinnakkaistettavasta tehtävästä on digitaalisen allekirjoituksen todentaminen. Allekirjoituksen vahvistamiseen tarvitset vain avaimen, tapahtuman ja allekirjoituksen. Vain kolmella datalla voit suorittaa tarkastuksia rinnakkain.

Kaikkia lohkoketjun toimintoja ei kuitenkaan pitäisi tehdä tällä tavalla. Ajattele itse tapahtuman toteuttamista. Useita tapahtumia ei voida suorittaa samanaikaisesti; se on tehtävä yksi kerrallaan, jotta vältetään virheet, kuten kaksinkertaiset kulut. Jotkut kielet ovat hyviä rinnakkaistoiminnoissa, kun taas jotkut ovat hyviä muissa kuin rinnakkaistoiminnoissa.

  • Syy # 4: Eristäminen

Mikä on deterministinen käyttäytyminen?

Jos A + B = C, niin olosuhteista riippumatta, A + B on aina yhtä suuri kuin C.Sitä kutsutaan deterministiseksi käyttäytymiseksi.

Hash-funktiot ovat deterministisiä, eli A: n hash on aina H (A).

Joten blockchain-kehityksessä kaikkien tapahtumatoimintojen on oltava deterministisiä. Sinulla ei voi olla tapahtumaa, joka käyttäytyy samalla tavalla ja sitten seuraavana päivänä. Vastaavasti sinulla ei voi olla älykkäitä sopimuksia, jotka toimivat kahdella eri tavalla kahdessa eri koneessa.

Ainoa ratkaisu tähän on eristäminen. Pohjimmiltaan eristät älykkäät sopimuksesi ja tapahtumasi ei-deterministisistä elementeistä.

Joten olemme keskustelleet tärkeimmistä ongelmista, joita blockchain-kehittäjät kohtaavat. Katsotaan nyt lopuksi joitain kieliä, joita kehittäjät voivat käyttää koodaamaan estoketjua.

Kieli 1: C++

Ensinnäkin, aloitetaan kaikkien isoisä, ikivihreä C ++. C ++ on luonut Bjarne Stroustrup C-kielen laajennuksena. Kieli on suunniteltu C: n joustavuudeksi ja tehokkuudeksi, mutta siinä on joitain suuria eroja. Suurin ero C: n ja C ++: n välillä on, että vaikka C on prosessikeskeinen, C ++ on olio.

Tämä tarkoittaa sitä, että C ++: ssa tiedot ja toiminnot kääritään yhdeksi siistiksi pieneksi paketiksi, jota kutsutaan “esineiksi”, mikä tarkoittaa, että kun objekti on luotu, sitä voidaan helposti kutsua ja käyttää uudelleen muissa ohjelmissa, mikä lyhentää huomattavasti koodausaikaa.

Katsotaanpa yksinkertaisin C ++ -ohjelma maailmassa. “Hello World” -ohjelma:

#sisältää

käyttämällä nimiavaruuden vakiota;

int main ()

{

cout << "Hei maailma!";

paluu 0;

}

käyttämällä nimiavaruuden vakiota;

int main ()

{

cout << "Hei maailma!";

paluu 0;

}

Tämä koodi tulostaa: Hello World!

Joten miksi ihmiset käyttävät edelleen C ++: ta koodaamiseen? Varmasti on olemassa paljon lumoavampia kieliä, miksi ihmiset edelleen vaativat paluuta C ++: een? Miksi bitcoin-lohkoketju on koodattu C: hen++?

No, kuten tapahtuu, C ++: lla on tiettyjä ominaisuuksia, jotka tekevät siitä erittäin houkuttelevan. (Huuda Peter Wiulle ja David Schwartz seuraavasta selityksestä).

Ominaisuus # 1: Muistin hallinta

Muistatko, mitä sanoimme aiemmin blockchain-kehityksen haasteista? Lohkoketjujen ei pitäisi olla vain turvattuja linnoituksia, vaan myös resurssien tehokas hallinta. Lohkoketjun oletetaan olevan vuorovaikutuksessa monien epäluotettavien päätepisteiden kanssa samalla, kun se tarjoaa edelleen nopeaa palvelua kaikille solmuille.

Tämä nopea ja nopea palvelu on kriittinen kriittisen valuutan, kuten bitcoin, onnistumiselle. Muista, että ne kaikki perustuvat “konsensuksen” periaatteeseen, kaikkien verkon solmujen on hyväksyttävä ja hylättävä täsmälleen samat lohkot, muuten ketjussa voi olla haarukka.

Kaikkien näiden vaatimusten tyydyttämiseksi ja suorituskyvyn saavuttamiseksi sinun on valvottava tiukasti ja täydellisesti suorittimen ja muistin käyttöä. C ++ antaa sen käyttäjilleen.

Ominaisuus # 2: Langoitus

Kuten olemme aiemmin keskustelleet, yksi blockchain-ohjelmoinnin tärkeimmistä haasteista on hyvin rinnakkaisten ja ei rinnakkaisten tehtävien integrointi. Useimmat kielet ovat erikoistuneet yhteen, mutta C ++: n ketjutuskyky on riittävän hyvä käsittelemään sekä rinnakkaisia ​​että ei-rinnakkaisia ​​tehtäviä. Lanka on joukko käskyjä, jotka voidaan suorittaa samanaikaisesti. Paitsi että C ++ mahdollistaa kuusen erinomaiset monisäikeisyydet tehokkaalla langanvälisellä viestinnällä, se myös optimoi yhden langan suorituskyvyn.

Ominaisuus # 3: Siirrä semantiikkaa

Yksi C ++: n mielenkiintoisimmista näkökohdista on siirtosemantiikka. Siirrä semantiikka tarjoaa tavan siirtää sisältöä objektien välillä sen sijaan, että se kopioitaisiin suoraan. Tarkistetaan kopiosemantiikan ja siirrettävän semantiikan erot. (Peter Alexanderin vastauksesta “Stackoverflow” saatujen tietojen perusteella).

Kopioi semantiikka:

  • väittää (b == c);
  • a = b;
  • väittää (a == b && b == c);

Joten mitä täällä tapahtuu? B: n arvo menee a: ksi ja b pysyy muuttumattomana koko asian lopussa.

Harkitse nyt.

Siirrä semantiikkaa:

  • väittää (b = = c);
  • liikkua (a, b);
  • väittää (a = = c);

Mitä täällä tapahtuu?

Näetkö kahden koodilohkon välisen eron?

Kun käytämme siirtosemantiikkaa, b: n arvon ei tarvitse olla muuttumaton. Se on ero kopiosemantiikan ja liikkuvan semantiikan välillä. Liikkumisemantiikan suurin etu on, että voit saada kopioita tietyistä tiedoista vain silloin, kun tarvitset niitä, mikä vähentää huomattavasti koodin redundanssia ja antaa valtavan suorituskyvyn. Joten kuten näette, tämä tehokas muistinhallinta ja korkea suorituskyky ovat molemmat toivottavia lohkoketjulle.

Ominaisuus # 4: Koosta aikapolymorfismi

Mikä on polymorfismi?

Muistatko, kun kutsuimme C ++: ta “olio-ohjelmoinnin (OOP) kieleksi”? Polymorfismi sattuu olemaan OOP-ominaisuus. Polymorfismia käyttämällä voit käyttää tiettyä ominaisuutta useammalla kuin yhdellä tavalla. C ++: ssa polymorfismia voidaan käyttää kahdella tavalla:

  • Kokoa ajan polymorfismi.
  • Ajoajan polymorfismi.

Täällä keskitymme vain aikapolymorfismiin. C ++ -toteutuksessa on kaksi tapaa koota aikapolymorfismi:

  • Toiminto Ylikuormitus.
  • Kuljettajan ylikuormitus.

Toiminto ylikuormitus:

Toimintojen ylikuormitus on silloin, kun sinulla on monia samannimisiä toimintoja, joilla on eri parametrien saanti.

Harkitse tätä ohjelmaa:

#sisältää

käyttämällä nimiavaruuden vakiota;

luokka A

{

void func (int x) // funktion ensimmäinen esiintymä vie vain yhden kokonaisluvun

{

cout<<x<<endl;

}

void func (double x) // funktion toinen esiintymä vie vain yhden kaksinkertaisen arvon

{

cout<<x<<endl;

}

void func (int x, int y) // funktion kolmas esiintymä ottaa kaksi kokonaislukua

{

cout<<x = y<<endl;

}

}

int main ()

{

Obj1 // yhden luokan A objektin tekeminen

// nyt kutsumme funktiot

obj1.func (2);

obj1.func (2,65);

obj1.func (2,5);

paluu 0;

}

Nyt kun suoritat tämän toiminnon, lähtö on:

  • 2
  • 2.65
  • 7

Joten, kuten näette, samaa funktiota func () käytettiin kolmella eri tavalla.

Kuljettajan ylikuormitus:

C ++: ssa samalla operaattorilla voi olla useampi kuin yksi merkitys.

Esimerkiksi. ”+” -Merkkiä voidaan käyttää sekä matemaattiseen lisäykseen että ketjutukseen.

Yhdistäminen tarkoittaa periaatteessa kahden kielen ottamista ja niiden yhdistämistä yhtenä.

Joten 3 + 4 = 7.

JA

Block + geeks = Blockgeeks.

Sama operaattori, teki kaksi erilaista toimintoa, tämä on käyttäjän ylikuormitus.

Compile-aikapolymorfismi auttaa paljon blockchain-kehityksessä. Se auttaa asettamaan vastuut erikseen eri toimintoihin ja puolestaan ​​parantamaan koko järjestelmän suorituskykyä.

Ominaisuus # 5: Koodin eristäminen

C ++: lla on nimitilan ominaisuuksia, jotka voidaan tuoda ohjelmasta toiseen. Nimitila auttaa välttämään nimien törmäyksiä. Koska C ++: lla on luokkia, se voi toimia rajoina eri sovellusliittymien välillä ja auttaa selkeässä erottelussa.

Luokka C ++: ssa on käyttäjän määrittelemä tyyppi tai tietorakenne, joka on ilmoitettu avainsanaluokalla, jonka jäseninä on tietoja ja jotka toimivat. Voit käyttää luokassa ilmoitettuja toimintoja ilmoittamalla kyseisen luokan objektit.

Ominaisuus # 6: kypsyys

Kieli on sekä kypsä että päivitetty säännöllisesti. On olemassa vähintään 3 kiinteää kääntäjää, kuten David Schwartz sanoo, ja uudet ominaisuudet on tarkoitettu todellisten ongelmien ratkaisemiseen. Debuggereita ja kaikenlaisia ​​analyyttisiä työkaluja on saatavana kaikkeen suorituskyvyn profiloinnista kaikenlaisten ongelmien automaattiseen havaitsemiseen. Tämä tarkoittaa, että kieli kasvaa jatkuvasti sisällyttääkseen uudempia ja parempia ominaisuuksia.

Edellä mainittujen ominaisuuksien takia Satoshi Nakamoto valitsi C ++: n bitcoin-lähdekoodin peruskieleksi.

Bitcoin-lompakoiden käyttäminen

Jos haluat tulla Bitcoin-kehittäjäksi, sinun on ehdottomasti tiedettävä, kuinka Bitcoin-lompakot toimivat.

Ryhdy Bitcoin-kehittäjäksi: Basic 101

Epäilemättä turvallisin tapa tallentaa kryptovaluutta on käyttää paperilompakkoa. Noudattamalla muutamia alla olevia ohjeita voit asettaa sen kokonaan ilmaiseksi.Tämä tekee sinusta todella sijoituksesi päällikön, ja jos varotoimia noudatetaan, ei ole mahdollista, että kukaan muu tietää yksityiset avaimesi.

Tämä tarkoittaa tietysti sitä, että niiden kirjaaminen on vielä tärkeämpää. Yksityisten avainten menettäminen tarkoittaa, että menetät paperilompakon koko sisällön (mutta jälleen kerran, se pätee kaikkiin siellä oleviin lompakkoihin.)

Mikä on paperilompakko?

Pitääkseen sen hyvin yksinkertaisena, paperilompakot ovat offline-kylmäsäilytysmenetelmä salausvaluutan säästämiseksi. Se sisältää julkisten ja yksityisten avainten tulostamisen paperille, jonka sitten tallennat ja tallennat turvalliseen paikkaan. Avaimet tulostetaan QR-koodeina, jotka voit skannata tulevaisuudessa kaikille tapahtumillesi. Syy miksi se on niin turvallista, johtuu siitä, että se antaa sinulle täydellisen hallinnan käyttäjälle. Sinun ei tarvitse huolehtia laitteiston hyvinvoinnista, eikä sinun tarvitse huolehtia hakkereista tai haittaohjelmista. Sinun tarvitsee vain huolehtia paperista.

Paperilompakon asettaminen

Paperilompakot muodostetaan käyttämällä ohjelmaa julkisen ja yksityisen avaimen luomiseen satunnaisesti. Avaimet ovat ainutlaatuisia, ja ne luova ohjelma on avoimen lähdekoodin. Ne, joilla on edistyneitä koodaustietoja, voivat itse tarkistaa ohjelman taustajärjestelmän satunnaisuuden suhteen. Lisäksi luomme avaimet offline-tilassa. Tämä poistaa altistumisen online-uhkille, ja yksinkertaisen ohjelman poistaminen käytön jälkeen tuhoaa niistä kaikki jäljet.

Älä huoli, jos se kuulostaa hämmentävältä, se ei ole. Et tarvitse erityistä tietoa koodauksesta tai salauksesta. Tarvitset vain tietokoneen, Internet-yhteyden, jotain, johon voit tallentaa avaimet.

Luodaan joka tapauksessa paperilompakkomme. Toimi seuraavasti:

  • Varmista, että tietokoneessasi ei ole mitään haittaohjelmia. Upouusi tietokone olisi ihanteellinen, mutta se ei ole usein mahdollista.
  • Käy sivulla WalletGenerator.net.

Ryhdy Bitcoin-kehittäjäksi: Basic 101

  • Lataa zip-tiedosto napsauttamalla tätä:

    Ryhdy Bitcoin-kehittäjäksi: Basic 101

  • Kun olet ladannut, avaa “index.html” -tiedosto, mutta ennen sitä varmista, että Internet on pois päältä. Koko tämä prosessi on tehty varmistaaksesi, että lompakkosi on hakkereista vapaa.

Ryhdy Bitcoin-kehittäjäksi: Basic 101

  • Nyt on aika luoda lompakko. Pidä hiiren osoitinta korostetun tekstin päällä, jolloin se lisää merkkejä. Tai jos haluat, voit kirjoittaa satunnaisia ​​merkkejä manuaalisesti. Jatka vain tekemistä, kunnes laskuri menee “0”.

    Ryhdy Bitcoin-kehittäjäksi: Basic 101

  • Heti kun määrä laskee nollaan, lompakkosi luodaan.

Ryhdy Bitcoin-kehittäjäksi: Basic 101

  • Tulosta sivu tai tee siitä useita kopioita numeroista. (Tärkeää: Varmista, että tulostinta ei ole kytketty Wi-Fi-verkkoon tässä vaiheessa.).

  • Poista tallennettu verkkosivu. Voit nyt muodostaa Internet-yhteyden uudelleen turvallisesti.
  • Säilytä yksityisiä avaimesi heidän pitkäaikaisessa, yksityisessä ja turvallisessa kodissaan.

Nyt kun sinulla on lompakko, voit mennä johonkin pörsseistä vaihtamaan fiat-valuuttasi bitcoiniksi. Joitakin vaihdoista, joita voit käyttää, ovat:

  • Bitfinex.
  • Bittileima.
  • BTC-e.
  • Kolikkopohja.

Sinun on tehtävä tutkimuksesi ja selvitettävä, mitkä vaihdot toimivat parhaiten omalla alueellasi.

Tiedossa oleminen

Yksi kriittisimmistä asioista, jotka sinun on tehtävä ollaksesi bitcoin-kehittäjä, on olla tiedossa.

On monet kehittäjäyhteisöt missä voit liittyä ja olla tekemisissä muiden kehittäjien kanssa.

Bitcoin-kehittäjien päätelmä

Joten, sinä menet.

Tämä opas antaa sinulle perusajatuksen siitä, mitä sinun on tehtävä ja opittava, jotta sinusta voi tulla Bitcoin-kehittäjä.

Voit tarkistaa kurssimme, jos haluat aloittaa kehittäjäurasi tänään.

Bitcoinilla ja yleensä kryptovaluutalla on loputtomia mahdollisuuksia tulevaisuudessa. Saatamme hyvinkin olla seuraavan suuren aikakauden määrittelevän protokollan kärjessä. Voiko blockchain-tekniikka olla seuraava internet? Vain aika voi kertoa.

Kuitenkin mitä voidaan epäilemättä sanoa on, että Bitcoinin ja muiden blockchain-sovellusten pelkkä laajuus ei tunne rajoja.

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