Hvad er Hashing? [Trin-for-trin guide-under hætte af Blockchain]

Så hvad der virkelig hashing?

TLDR:

  1. Hashing genererer en værdi eller værdier fra en tekststreng ved hjælp af en matematisk funktion.
  2. Hashing er en måde at muliggøre sikkerhed under processen med meddelelsestransmission, når meddelelsen kun er beregnet til en bestemt modtager. En formel genererer hash, som hjælper med at beskytte transmissionssikkerheden mod manipulation.

Det er vigtigt at vide, hvordan blockchain Hashing fungerer. For at gøre det skal vi dog først forstå et af de grundlæggende principper, der går ind i blockchain-oprettelse. Blockchain-teknologi er en af ​​de mest innovative og æra-definerende opdagelser i det forrige århundrede. Når man ser den indflydelse, det har haft i de sidste par år, og den indflydelse, det vil have i fremtiden, er det bestemt ikke en overdrivelse at sige det. For at forstå, hvordan forskellige kryptokurver som Ethereum og Bitcoin fungerer.

 Så hvad er hashing?

Enkelt sagt betyder hashing at tage en inputstreng af enhver længde og give en output med en fast længde. I forbindelse med kryptokurver som bitcoin tages transaktionerne som input og køres gennem en hashingalgoritme (bitcoin bruger SHA-256), som giver et output med en fast længde.

Lad os se, hvordan hashing-processen fungerer. Vi kommer med visse input. Til denne øvelse skal vi bruge SHA-256 (Secure Hashing Algorithm 256).

Hvad er Hashing? Under hætte af Blockchain

Som du kan se, i tilfælde af SHA-256, uanset hvor stort eller lille din input er, vil output altid have en fast 256-bit længde. Dette bliver kritisk, når du har at gøre med en enorm mængde data og transaktioner. Så dybest set, i stedet for at huske de inputdata, der kunne være enorme, kan du bare huske hash og holde styr. Før vi går videre, skal vi først se de forskellige egenskaber ved hashing-funktioner og hvordan de implementeres i blockchain. 

Kryptografiske hashfunktioner

En kryptografisk hash-funktion er en særlig klasse af hash-funktioner, der har forskellige egenskaber, hvilket gør den ideel til kryptografi. Der er visse egenskaber, som en kryptografisk hash-funktion skal have for at blive betragtet som sikker. Lad os løbe igennem dem en efter en.

Ejendom 1: Deterministisk

Det betyder, at uanset hvor mange gange du parser gennem et bestemt input gennem en hash-funktion, får du altid det samme resultat. Dette er kritisk, for hvis du får forskellige hashes hver eneste gang, vil det være umuligt at holde styr på input.

Ejendom 2: Hurtig beregning

Hash-funktionen skal være i stand til hurtigt at returnere hash af input. Hvis processen ikke er hurtig nok, er systemet simpelthen ikke effektivt.

Ejendom 3: Modstand før billede

Hvilke præ-billedmodstandstilstande er, at givet H (A) er det umuligt at bestemme A, hvor A er input og H (A) er output-hash. Læg mærke til brugen af ​​ordet “umuligt” i stedet for “umuligt”. Vi ved allerede, at det ikke er umuligt at bestemme det originale input fra dets hash-værdi. Lad os tage et eksempel.

Antag at du kaster en terning, og output er hash for det nummer, der kommer op fra terningerne. Hvordan vil du være i stand til at bestemme, hvad det oprindelige nummer var? Det er simpelt, alt hvad du skal gøre er at finde ud af hashen på alle numre fra 1-6 og sammenligne. Da hashfunktioner er deterministiske, vil hash for en bestemt input altid være den samme, så du kan simpelthen sammenligne hashes og finde ud af den originale input.

Men dette fungerer kun, når den givne mængde data er meget mindre. Hvad sker der, når du har en enorm mængde data? Antag, at du har at gøre med en 128-bit hash. Den eneste metode, du skal finde den originale input, er ved at bruge “brute-force metode”. Brute-force-metoden betyder dybest set, at du skal hente en tilfældig input, hash den og derefter sammenligne output med target-hash og gentage, indtil du finder et match.

Så hvad sker der, hvis du bruger denne metode?

  • Bedste tilfælde: Du får dit svar ved første forsøg selv. Du bliver seriøst nødt til at være den heldigste person i verden for at dette kan ske. Oddsen for dette sker er astronomisk.
  • Værste tilfælde: Du får dit svar efter 2 ^ 128 – 1 gange. Dybest set betyder det, at du finder dit svar i slutningen af ​​alle data.
  • Gennemsnitlig scenario: Du finder det et eller andet sted i midten, så dybest set efter 2 ^ 128/2 = 2 ^ 127 gange. For at sætte det i perspektiv, 2 ^ 127 = 1,7 X 10 ^ 38. Med andre ord er det et stort antal.

Så selvom det er muligt at bryde præbillede-modstand via brute force-metoden, tager det så lang tid, at det ikke betyder noget.

Ejendom 4: Små ændringer i input ændrer Hash.

Selvom du foretager en lille ændring i dit input, vil de ændringer, der vil blive afspejlet i hashen, være enorme. Lad os teste det ved hjælp af SHA-256:

Hvad er Hashing? Under hætte af Blockchain

Ser du det? Selvom du lige har ændret tilfældet med det første alfabet i input, skal du se på, hvor meget der har påvirket output-hash. Dette er en kritisk funktion, fordi denne egenskab ved hashing fører til en af ​​blockchains største egenskaber, dens uforanderlighed (mere om det senere.)

Ejendom 5: Kollisionsbestandig

Givet to forskellige indgange A og B, hvor H (A) og H (B) er deres respektive hashes, 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. Hvorfor sagde vi “for det meste”? Lad os tale om et interessant koncept kaldet “The Birthday Paradox”.

Hvad er fødselsdagsparadoxet?

Hvis du møder en tilfældig fremmed på gaden, er chancerne meget små for jer begge at have samme fødselsdag. Hvis vi antager, at alle dage på året har samme sandsynlighed for at have fødselsdag, er chancerne for, at en anden person deler din fødselsdag 1/365, hvilket er 0,27%. Med andre ord er det virkelig lavt.

Når det er sagt, hvis du samler 20-30 mennesker i et rum, stiger oddsen for to personer, der deler den nøjagtige samme fødselsdag astronomisk. Faktisk er der en chance på 50-50 for 2 personer, der deler samme fødselsdag i dette scenarie!

Hvad er Hashing? Under hætte af Blockchain

Billedkredit: (YouTube)

Hvorfor sker det? Det skyldes en simpel sandsynlighedsregel, der går som følger. Antag at du har N forskellige muligheder for en begivenhed, så har du brug for kvadratroden af ​​N tilfældige genstande for at de skal have 50% chance for en kollision.

Så ved at anvende denne teori til fødselsdage har du 365 forskellige muligheder for fødselsdage, så du har bare brug for Sqrt (365), som er ~ 23 ~, tilfældigt valgte personer til 50% chance for, at to personer deler fødselsdage.

Hvad er anvendelsen af ​​dette i hashing?

Antag at du har en 128-bit hash, der har 2 ^ 128 forskellige muligheder. Ved at bruge fødselsdagsparadoxet har du 50% chance for at bryde kollisionsmodstanden ved sqrt (2 ^ 128) = 2 ^ 64. forekomst.

Som du kan se, er det meget lettere at bryde kollisionsmodstand, end det er at bryde modstandsbillede. Ingen hash-funktion er kollisionsfri, men det tager normalt så lang tid at finde en kollision. Så hvis du bruger en funktion som SHA-256, er det sikkert at antage, at hvis H (A) = H (B), så A = B.

Ejendom 6: Puzzle-venligt

Nu er dette en fascinerende egenskab, og anvendelsen og effekten, som denne ene ejendom har haft på kryptokurrency, er enorm (mere om det senere, når vi dækker minedrift og kryptopuslespil). Lad os først definere ejendommen, hvorefter vi gennemgår hver periode i detaljer.

Hvis k vælges fra en distribution med høj min-entropi, er det umuligt at finde en input x således, at H (k | x) = Y for hver output “Y”.

Det gik sandsynligvis over dit hoved! Men det er ok, lad os nu forstå, hvad denne definition betyder.

Hvad er betydningen af ​​”høj min-entropi”?

Det betyder, at fordelingen, hvorfra værdien vælges, fordeles enormt så meget, at vi vælger en tilfældig værdi har en ubetydelig sandsynlighed. Dybest set, hvis du fik at vide at vælge et tal mellem 1 og 5, er det en lav min-entropifordeling. Men hvis du vælger et tal mellem 1 og en gazillion, er det en høj min-entropifordeling.

Hvad betyder “k | x”?

“|” betegner sammenkædning. Sammenkædning betyder at tilføje to strenge sammen. For eksempel. Hvis jeg sammenkæder “BLÅ” og “SKY” sammen, bliver resultatet “BLÅ”.

Så lad os genoptage definitionen.

Antag at du har en outputværdi “Y”. Hvis du vælger en tilfældig værdi “k” fra en bred fordeling, er det umuligt at finde en værdi X, så hash af sammenkædningen af ​​k og x giver output Y.

Læg endnu en gang mærke til ordet ”umuligt”, det er ikke umuligt, fordi folk gør dette hele tiden. Faktisk arbejder hele minedrift på dette (mere om det senere).

Eksempler på kryptografiske hashfunktioner

  • MD 5: Det producerer en 128-bit hash. Kollisionsmodstand blev brudt efter ~ 2 ^ 21 hash.
  • SHA 1: Producerer en 160-bit hash. Kollisionsmodstand brød efter ~ 2 ^ 61 hash.
  • SHA 256: Producerer en 256-bit hash. Dette bruges i øjeblikket af bitcoin.
  • Keccak-256: Producerer en 256-bit hash og bruges i øjeblikket af ethereum.

Hashing og datastrukturer

En datastruktur er en specialiseret måde at lagre data på. Der er to datastrukturegenskaber, der er kritiske, hvis du vil forstå, hvordan en blockchain fungerer. De er:

  1. Markører.
  2. Tilknyttede lister.

Markører

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

For eksempel. int a = 10, betyder at der er en variabel “a”, der gemmer heltalværdier. I dette tilfælde gemmer det 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:

Hvad er Hashing? Under hætte af Blockchain

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 den 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:

Hvad er Hashing? Under hætte af Blockchain

Billede med tilladelse: Coursera

Hvis du spekulerer på, hvad “hash-pointeren” betyder, kommer vi lidt derhen.

Som du måske har gættet nu, er dette, hvad blockchain-strukturen er baseret på. En blockchain er dybest set en sammenkædet liste. Lad os se, hvordan blockchain-strukturen ser ud:

Hvad er Hashing? Under hætte af Blockchain

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 hash af blok 2, hvilket vil resultere i ændringer i blok 1 og så videre osv. . 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?

Hvad er Hashing? Under hætte af Blockchain

En blokoverskrift indeholder:

  • Version: Blokversionsnummeret.
  • Tid: det aktuelle tidsstempel.
  • Det aktuelle vanskelighedsmål. (Mere om dette senere).
  • Hash af den forrige blok.
  • Nonce (mere om dette senere).
  • Hash af Merkle-roden.

Lad os lige nu fokusere på Hash af Merkle Root. Men før det er vi nødt til at forstå, hvad et Merkle Tree er.

Hvad er et Merkle Tree?

Hvad er Hashing? Under hætte af Blockchain

Billede med tilladelse: Wikipedia

Ovenstående diagram viser, hvordan et Merkle-træ ser ud. I et Merkle-træ er hver ikke-bladknude hash af værdierne for deres underknudepunkter.

Bladknude: Bladknudepunkterne er knudepunkterne i det laveste niveau af træet. Så med diagrammet ovenfor vil bladknudepunkterne være L1, L2, L3 og L4.

Hvad er Hashing? Under hætte af Blockchain

Child Nodes: For en node er noderne under dens tier, der føder ind i det, dens noder. Skriv diagrammet, noderne mærket “Hash 0-0” og “Hash 0-1” er underknudepunkterne for den node, der er mærket “Hash 0”.

Root Node: Den enkelte node på det højeste niveau mærket “Top Hash” er rodnoden.

Hvad er Hashing? Under hætte af Blockchain

Så hvad har et Merkle Tree at gøre med blockchains?

Hver blok indeholder tusinder og tusinder af transaktioner. Det vil være meget tid ineffektivt at gemme alle data inde i hver blok som en serie. Hvis du gør det, vil det være meget besværligt og tidskrævende at finde en bestemt transaktion. Hvis du bruger et Merkle-træ, reducerer du dog den tid, der kræves for at finde ud af, om en bestemt transaktion hører til i den blok eller ej.

Lad os se dette i et eksempel. Overvej følgende Merkle-træ:

Hvad er Hashing? Under hætte af Blockchain

Billede med tilladelse: Coursera

Antag nu, at jeg vil finde ud af, om disse bestemte data hører til i blokken eller ej:

Hvad er Hashing? Under hætte af Blockchain

I stedet for at gennemgå den besværlige proces med at se på hver enkelt hash og se, om det hører til dataene eller ej, kan jeg simpelthen spore det ved at følge sporet af hashes, der fører op til dataene:

Hvad er Hashing? Under hætte af Blockchain

Hvis du gør dette, reduceres den tid, det tager.

Hashing i minedrift: Kryptopuslerne.

Når vi siger “minedrift”, betyder det grundlæggende at søge efter en ny blok, der skal tilføjes i blockchain. Minearbejdere fra hele verden arbejder konstant på at sikre, at kæden fortsætter med at vokse. Tidligere plejede det at være let for folk at udvinde ved hjælp af kun deres bærbare computere, men over tid begyndte folk at danne minepuljer for at samle deres computerkræfter og mine mere effektivt.

Dette kunne dog have været et problem. Der er et loft for hver kryptovaluta, f.eks. for bitcoin er det kun 21 millioner. Der er kun 21 millioner bitcoins derude. Hvis minearbejdere får lov til at fortsætte med denne hastighed, vil de fiske alle eksisterende bitcoins ud. Derudover skal der være en bestemt tidsgrænse mellem oprettelsen af ​​hver blok. For bitcoin er tidsfristen mellem blokoprettelse 10 minutter. Hvis blokke fik lov til at blive oprettet hurtigere, ville det resultere i:

  • Flere kollisioner: Der genereres flere hash-funktioner, som uundgåeligt vil medføre flere kollisioner.
  • Flere forældreløse blokke: Hvis mange minearbejdere er over minedrift, vil de komme med nye blokke samtidigt. Dette vil resultere i, at flere blokke ikke bliver en del af hovedkæden og bliver forældreløse blokke.

Så for at begrænse blokering oprettes et specifikt sværhedsgrad. Minedrift er som et spil, du løser gåden, og du får belønninger. Indstilling af vanskeligheder gør dette puslespil meget sværere at løse og dermed mere tidskrævende. WRT bitcoins sværhedsmålet er en streng på 64 tegn (som er den samme som en SHA-256-output), der begynder med en masse nuller. Et antal nuller øges, når sværhedsgraden stiger. Sværhedsgraden ændres efter hver 2016. blok.

Minedrift

Bemærk: Vi vil primært tale om Bitcoin-minedrift her.

Når bitcoin-minesoftwaren ønsker at tilføje en ny blok til blockchain, er det den procedure, den følger. Hver gang en ny blok ankommer, hashes alt indholdet af blokke først. Hvis hashet er mindre end vanskelighedsmålet, føjes det til blockchain, og alle i samfundet anerkender den nye blok.

Det er dog ikke så simpelt som det. Du bliver nødt til at være ekstremt heldig at få en ny blok sådan. Dette er hvor nonce kommer ind. Nonce er en vilkårlig streng, der sammenkædes med blokens hash. Derefter hashes denne sammenkædede streng igen og sammenlignes med sværhedsgraden. Hvis det ikke er mindre end sværhedsgraden, ændres nonce, og dette fortsætter med at gentage en million gange, indtil kravene endelig er opfyldt. Når det sker, føjes blokken til blockchain.

Så for at opsummere:

  • Hashet af indholdet af den nye blok tages.
  • En hash (tilfældig streng) tilføjes til hashen.
  • Den nye streng hashes igen.
  • Den sidste hash sammenlignes derefter med sværhedsgraden og ses, om det faktisk er mindre end det eller ej.
  • Hvis ikke, ændres nonce, og processen gentages igen.
  • Hvis ja, tilføjes blokken til kæden, og den offentlige hovedbog opdateres og advares om tilføjelsen.
  • De minearbejdere, der er ansvarlige for dette, belønnes med bitcoins.

Husk ejendom nummer 6 af hash-funktioner? Puslespilvenligheden?

Hvis k vælges fra en distribution med høj min-entropi, er det umuligt at finde en input x således, at H (k | x) = Y for hver output “Y”.

Så når det kommer til bitcoin-minedrift:

  • K = Nonce
  • x = blokens hash
  • Y = vanskelighedsmål

Hele processen er helt tilfældig, der er ingen tankeproces bag udvælgelsen af ​​nonces. Det er bare ren brutskraft, hvor softwaren fortsætter med at generere strenge tilfældigt, indtil de når deres mål. Hele processen følger Proof Of Work-protokollen, som grundlæggende betyder:

  • Puslespilsløsningen skal være vanskelig.
  • Kontrol af svaret skal dog være let for alle. Dette gøres for at sikre, at der ikke blev brugt underhåndede metoder til at løse problemet.

Hvad er hashrate??

Hash-hastighed betyder grundlæggende, hvor hurtigt disse hashing-operationer finder sted under minedrift. En høj hashrate betyder, at flere mennesker og softwaremaskiner deltager i mineprocessen, og som et resultat kører systemet problemfrit. Hvis hashhastigheden er for hurtig, øges sværhedsgraden. Hvis hashhastigheden bliver for langsom, sænkes sværhedsgraden.

Konklusion – Hvad er Hashing?

Hashing har virkelig været grundlæggende i skabelsen af ​​blockchain-teknologi. Hvis man vil forstå, hvad blockchain handler om, skal de helt sikkert forstå, hvad hashing betyder.

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