Vad är Merkle Tree?
Merkle Tree är en datastruktur som komprimerar en stor mängd poster till ett kort fingeravtryck. Den låter dig bevisa att ett objekt finns i en enorm lista genom att kontrollera bara ett fåtal små delar, inte hela. Föreställ dig ett släktträd där varje förälder är en sammanfattning av sina barn, som alla rullar upp till en slutgiltig förfader.
Merkle Tree "lagrar" alla transaktioner själv. Inte riktigt. Den lagrar endast kompakta fingeravtryck av dem, och trädet kan återskapas från de råa posterna när det behövs.
Hur Merkle Tree fungerar
Tänk dig ett block med betalningar som behöver en snabb verifierbar sammanfattning. Här är hur Merkle Tree fungerar i enkla ord:
- Steg 1: Börja med en lista över objekt som transaktioner, varje en är ett blad i trädet.
- Steg 2: Gör varje objekt till ett kort fingeravtryck med en hashfunktion.
- Steg 3: Para ihop intilliggande fingeravtryck, kombinera varje par och hasha igen för att skapa deras förälder.
- Steg 4: Upprepa ihopparning och hashing tills ett enda toppfingeravtryck återstår. Det är Merkle root för denna mängd.
- Steg 5: För att bevisa att ett objekt finns i mängden behöver du bara det objektet plus en kort väg av syskonfingeravtryck. Snabbt och litet.
Det är idén: små bevis, stort förtroende.
Varför Merkle Tree är viktigt
Genom att sammanfatta stora mängder transaktionsdata till ett kompakt fingeravtryck gör Merkle Tree verifiering snabb och billig.
- Fördel: Du kan kontrollera inklusion utan att ladda ner hela blocket, vilket sparar tid och bandbredd.
- Perspektiv: Det passar internetets stämning just nu: lita men verifiera, Rolex möter Reddittrådar.
- Relevans: Du stöter på det i Bitcoinblock, Ethereums kvitton, NFT tillåtelselistor, airdrops och rollups.
Om antalet blad är udda duplicerar många konstruktioner det sista bladet innan de hashar uppåt i trädet. Kontrollera också noga den exakta hashningsprocessen som din kedja eller ditt bibliotek använder, eftersom små regelvariationer kan ändra bevis.
Merkle Tree: viktiga egenskaper
Här är vad som gör det särskilt användbart:
- Effektivitet: Bevis förblir små även när datamängden blir mycket stor, så lätta klienter förblir lätta.
- Integritet: Ändra en byte i ett blad och ändringen sprider sig till toppen, vilket gör manipulation uppenbar.
- Rot: Allt sammanfaller till en enda Merkle root som kan lagras eller signeras för senare kontroller.
Variationer
Merkle Tree finns i några vanliga varianter som du kommer att stöta på:
- Binary: Det klassiska träd som bygger på par, använt i Bitcoinblock.
- Merkle Patricia: En triebaserad variant för nyckel värde data, använd i Ethereums state och kvitton.
- Sparse: Ett stort indexerat träd där de flesta blad är tomma, bra för korta bevis för medlemskap och icke medlemskap.
- Verkle: En nyare släkting med kortare bevis för mycket stor förgrening, undersökt för framtida uppgraderingar.
Bevis från Merkle Tree är bara lika pålitliga som den header eller checkpoint du accepterar. Om du litar på fel root säger det renaste beviset fortfarande ingenting.
Exempel
En lätt plånbok i Bitcoinstil kan verifiera din betalning genom att kontrollera en kort väg av hashar från din transaktion upp till blockens header, utan att ladda ner hela transaktionshistoriken.
Kul fakta
Ralph Merkle skissade fram idén sent på 1970 talet som ett studentprojekt, och den låg kvar i akademiska kretsar i åratal innan Satoshi använde den i Bitcoin. Ett bevis på att bra idéer åldras väl.
Sammanfattning
Slutsats? Merkle Tree ger snabba, små bevis på att något hör till i en stor mängd, inget drama, inga tunga nedladdningar.
