Oversigt over Hashing
Hashing og blok-hashes er blevet nævnt flere gange, men selve konceptet er endnu ikke blevet gennemgået i detaljer. Det er nu tid til at forstå, hvad hashing egentlig er.
Hashing er en proces, der tager en input og producerer en streng af fast størrelse af bytes, typisk udtrykt som et hexadecimalt tal. Outputtet, kendt som et hash, fremstår tilfældigt og ændrer sig fuldstændigt ved enhver ændring af inputtet, en egenskab kendt som "avalanche-effekten".
Egenskaber ved hashfunktioner
I blockchain bruges hashfunktioner til:
- At sikre transaktioner ved at skabe et unikt fingeraftryk for hver enkelt;
- At generere adresser fra offentlige nøgler;
- At skabe forbindelserne i blockchainen gennem blok-hashes.
Med dette in mente har en god hashfunktion til blockchain flere vigtige egenskaber:
Hashing, især ved brug af en god hashfunktion, kan sammenlignes med at lave en smoothie. Lad os se på følgende illustration:
Det er faktisk muligt at finde den oprindelige input ud fra en hash, men det ville tage så lang tid, at det ikke er praktisk anvendeligt.
Blok-hashing
For at få hashen af en bestemt blok bruger Bitcoin SHA-256 hashfunktionen, som genererer en 256-bit (32-byte) hash. Det er en del af SHA-2 familien, designet af National Security Agency (NSA) og kendt for sine stærke sikkerhedsegenskaber, hvilket gør den modstandsdygtig over for kollisioner, preimage-angreb og andre kryptografiske sårbarheder.
Hashen af en Bitcoin-blok beregnes ved at tage blokhovedets data. Disse data indtastes i SHA-256 hashfunktionen to gange i en proces kendt som dobbelt SHA-256.
Her er et billede, der tydeliggør processen:
Den resulterende 256-bit hash skal opfylde visse kriterier defineret af netværkets sværhedsgradsmål. Hvis hashen ikke er under målet, justeres noncen, og hashen beregnes igen, indtil en kvalificerende hash findes. Denne endelige hash er blokkens unikke identifikator.
Merkle-rod
Merkle-roden er en enkelt hash, der repræsenterer alle transaktioner inkluderet i en blok. Beregningen starter med hasherne af hver enkelt transaktion ved brug af dobbelt SHA-256.
Hver transaktionshash parres derefter med en anden, og parret hashes sammen for at producere en ny hash. Denne proces med parring og hashing fortsætter lag for lag, indtil kun én hash er tilbage. Den endelige hash er Merkle-roden, som indkapsler hele sættet af transaktioner og sikrer deres integritet ved at kode dem til en enkelt værdi. Denne hierarkiske struktur kaldes et Merkle-træ.
Følgende eksempel illustrerer, hvordan et Merkle-træ dannes:
Som det ses, indeholder vores blok 6 transaktioner (hver mærket som Tx), og via hashing og parring af nye hasher beregnes en Merkle-rod.
Når den højre hash ikke har et par, som med Hash56 i vores eksempel, bliver denne sidste hash duplikeret for at danne et par. Denne teknik opretholder integriteten og effektiviteten af Merkle-træstrukturen, selv med et ulige antal transaktioner eller hashes på et tidspunkt.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain more about how the Merkle tree structure works?
What is the purpose of the nonce in block hashing?
How does double SHA-256 improve security in Bitcoin?
Awesome!
Completion rate improved to 6.25
Oversigt over Hashing
Stryg for at vise menuen
Hashing og blok-hashes er blevet nævnt flere gange, men selve konceptet er endnu ikke blevet gennemgået i detaljer. Det er nu tid til at forstå, hvad hashing egentlig er.
Hashing er en proces, der tager en input og producerer en streng af fast størrelse af bytes, typisk udtrykt som et hexadecimalt tal. Outputtet, kendt som et hash, fremstår tilfældigt og ændrer sig fuldstændigt ved enhver ændring af inputtet, en egenskab kendt som "avalanche-effekten".
Egenskaber ved hashfunktioner
I blockchain bruges hashfunktioner til:
- At sikre transaktioner ved at skabe et unikt fingeraftryk for hver enkelt;
- At generere adresser fra offentlige nøgler;
- At skabe forbindelserne i blockchainen gennem blok-hashes.
Med dette in mente har en god hashfunktion til blockchain flere vigtige egenskaber:
Hashing, især ved brug af en god hashfunktion, kan sammenlignes med at lave en smoothie. Lad os se på følgende illustration:
Det er faktisk muligt at finde den oprindelige input ud fra en hash, men det ville tage så lang tid, at det ikke er praktisk anvendeligt.
Blok-hashing
For at få hashen af en bestemt blok bruger Bitcoin SHA-256 hashfunktionen, som genererer en 256-bit (32-byte) hash. Det er en del af SHA-2 familien, designet af National Security Agency (NSA) og kendt for sine stærke sikkerhedsegenskaber, hvilket gør den modstandsdygtig over for kollisioner, preimage-angreb og andre kryptografiske sårbarheder.
Hashen af en Bitcoin-blok beregnes ved at tage blokhovedets data. Disse data indtastes i SHA-256 hashfunktionen to gange i en proces kendt som dobbelt SHA-256.
Her er et billede, der tydeliggør processen:
Den resulterende 256-bit hash skal opfylde visse kriterier defineret af netværkets sværhedsgradsmål. Hvis hashen ikke er under målet, justeres noncen, og hashen beregnes igen, indtil en kvalificerende hash findes. Denne endelige hash er blokkens unikke identifikator.
Merkle-rod
Merkle-roden er en enkelt hash, der repræsenterer alle transaktioner inkluderet i en blok. Beregningen starter med hasherne af hver enkelt transaktion ved brug af dobbelt SHA-256.
Hver transaktionshash parres derefter med en anden, og parret hashes sammen for at producere en ny hash. Denne proces med parring og hashing fortsætter lag for lag, indtil kun én hash er tilbage. Den endelige hash er Merkle-roden, som indkapsler hele sættet af transaktioner og sikrer deres integritet ved at kode dem til en enkelt værdi. Denne hierarkiske struktur kaldes et Merkle-træ.
Følgende eksempel illustrerer, hvordan et Merkle-træ dannes:
Som det ses, indeholder vores blok 6 transaktioner (hver mærket som Tx), og via hashing og parring af nye hasher beregnes en Merkle-rod.
Når den højre hash ikke har et par, som med Hash56 i vores eksempel, bliver denne sidste hash duplikeret for at danne et par. Denne teknik opretholder integriteten og effektiviteten af Merkle-træstrukturen, selv med et ulige antal transaktioner eller hashes på et tidspunkt.
Tak for dine kommentarer!