Blockchain och kryptovalutor är ett stort och komplext landskap. Många kuggar går in i den här maskinen, inklusive något som kallas ett Merkle-träd. Merkle-träd spelar en nyckelroll i blockchain-funktionalitet, men vad gör det exakt? Hur fungerar ett Merkle-träd, och varför är det så viktigt i blockchain-teknik?
Hur fungerar en blockchain?
Innan du går in på dynamiken i Merkle-trädet är det viktigt att förstå hur blockkedjor fungerar.
I de enklaste termerna är en blockchain en virtuell kedja av block, som vart och ett innehåller sin egen uppsättning data. Varje block använder kryptografi, specifikt hashing, för att säkra data och hålla dem utom händerna på illvilliga aktörer.
Blockkedjor är vanligast i kryptovalutabranschen, där varje transaktion som görs med en given tillgång registreras på dess ursprungliga blockkedja. Dessutom registreras varje transaktion kronologiskt och är synlig för hela blockkedjan (kan visas med verktyg som en blockchain explorer).
Transaktioner på en blockchain kan inte ändras eller raderas. Använd istället en
process som kallas hashing, kodas data genom matematiska algoritmer. Dessa algoritmer kan omvandla alla teckenlängder till en fast, kodad längd.När du registrerar transaktioner på en blockchain spelar Merkle-träden en avgörande roll. Men hur fungerar ett Merkle-träd?
Vad är ett Merkle-träd?
Namnet "Merkle tree" har två ursprung. "Merkle" syftar på Ralph Merkle, en amerikansk datavetare och matematiker som bidragit enormt till kryptografi med offentliga nyckel. Merkle föreslog ursprungligen binära hashträd 1987 i en tidning med titeln "A Digital Signature Based on a Konventionell krypteringsfunktion." Merkle uppfann också kryptografisk hashing, som används i Merkle träd.
Den andra delen av "Merkle tree" härrör från dess struktur. Ett Merkle-träd (eller ett binärt hash-träd) är en datastruktur som ser ut ungefär som ett träd. Merkle-träd innehåller "grenar" och "löv", där varje "löv" eller "gren" innehåller hashen för ett datablock.
Kort sagt, ett Merkle-träd effektiviserar processen att lagra transaktions-hashar på en blockchain. Den grupperar alla transaktioner inom ett enda block och kodar dem effektivt för säkrare och snabbare lagring i form av en hash. Med hjälp av ett Merkle-träd kan datas giltighet snabbt bedömas genom en sista hash. Detta förenklar datalagringsprocessen men bibehåller också säkerhetsintegriteten.
Merkle-träd kräver inte heller många beräkningsresurser. Faktum är att de minskar det lagringsutrymme som krävs för data genom att sammanställa flera transaktionshashar till bara en. Resursanvändningen har sedan länge varit en stridspunkt i kryptoindustrin, eftersom blockkedjenätverk kan vara en enorm belastning på lagringsutrymme och kraft. Så att använda Merkle-träd hjälper till att lindra detta problem. On-chain datalagring kan också vara dyr, så att använda Merkle-träd för att minska mängden data kan hjälpa blockchain-plattformar att spara pengar.
Dessutom tar Merkle-trädprocessen inte särskilt lång tid, vilket är goda nyheter när det gäller effektivitet. Trots allt har många blockkedjor varit planerade för sina långa transaktionstider (inklusive Bitcoin), så alla processer som kan hjälpa till med det här problemet är ett plus.
Merkle-träd används inom många områden av datoranvändning (särskilt kryptografi och kryptering) men är ofta kända för sin närvaro i kryptovalutablockkedjor. Bitcoin, Ethereum, Dogecoin och alla andra kryptovalutor använder Merkle-trädet, så det är utan tvekan ett viktigt element.
Så, hur fungerar det?
Hur fungerar ett Merkle-träd?
Nedan är ett diagram över hur ett Merkleträd fungerar. Observera att det i verkligheten skulle finnas många fler transaktioner och hash per träd, men den här bilden förenklar processen så att du kan få en uppfattning om de inblandade stegen.
När man tittar på det här Merkle-träddiagrammet ser saker och ting lite komplicerade ut. Men processen med Merkle-trädhasning är ganska enkel när den bryts ner.
Det finns ett par steg som går in i Merkle-trädprocessen. Hashen i botten av Merkle-trädet kallas löv, medan hasharna i mitten av trädet är kända som grenar. Grenarna kallas också ibland för icke-bladsnoder. Längst ner i diagrammet har du datablocken (eller transaktionerna) från vilka hashen kommer att uppstå.
De initiala transaktionerna från varje nod hashas i par, med en hash kvar som resultat. Sedan hashas par på par upprepade gånger till ett tills en enda hash dyker upp, där processen slutar. Om det råkar finnas ett udda antal transaktioner inom ett block, kommer en transaktion att dupliceras så att den kan paras ihop med originalet för hash.
Även om den slutliga hashen visas överst i diagrammet ovan, är den känd som trädets "rot" (rothash). Roten är i huvudsak kulminationen hash av alla individuella hash av transaktioner lagrade i blocket. Ett Merkle-träd krävs per block, vilket innebär att varje block har ett Merkle Root-datafält.
Om du någonsin har tittat på blockkedjor på djupet, kanske du har hört talas om Merkle Root eller Merkle Hash. Inom ett block finns något som kallas en hashMerkleRoot. Dessa data (den sista hashen i slutet av trädet) hålls i blockhuvudet för ett givet block. A blockchain block innehåller även annan data, till exempel en tidsstämpel, tillgångsversionsnummer och "nonce" (numret används endast en gång).
Kan blockkedjor fungera utan Merkle-träd?
Även om Merkle-träd inte är absolut nödvändiga för att en blockkedja ska existera, spelar de en otroligt viktig roll för att säkra data.
Utan Merkle-träd kräver kryptovalutablockkedjor mer resurser och tid för att utföra nyckelprocesser. För det första skulle varje nod inom nätverket behöva behålla sin egen kopia av varje transaktion som genomförs på blockkedjan. På större blockkedjor kan hundratusentals transaktioner ske inom loppet av bara en dag, så att lägga till en sådan mängd data till varje nods kopia skulle utan tvekan förbruka mycket Resurser.
Dessutom spelar Merkle-träd en stor roll vid dataverifiering. Via den enda rothashen i slutet av trädet kan validatorer och gruvarbetare verifiera om blocket som helhet är giltigt för att läggas till blockkedjan. Att kunna autentisera data utan att sålla igenom varje enskild transaktion är ett plus, vilket sparar tid och lagringsutrymme.
Merkle-träd är nyckeln till blockchain-funktionalitet
Det går inte att förneka att Merkle-träden erbjuder blockkedjor säkerhet och effektivitet utan att ta upp mycket utrymme. Denna fiffiga kryptografiska process gör att blockkedjor kan fungera sömlöst utan att behöva använda överdrivet resurser. Merkle-träd är inte viktiga utan enormt fördelaktiga när det kommer till tid, lagringsutrymme och dataautentisering.