Merke A─ča├žlar─▒ ve Merkle K├Âkleri
Ana sayfa
Makaleler
Merke A─ča├žlar─▒ ve Merkle K├Âkleri

Merke A─ča├žlar─▒ ve Merkle K├Âkleri

─░leri Seviye
Yay─▒nlanma: Jul 6, 2020G├╝ncellenme: Dec 27, 2022
7m

Merkle a─čac─▒ nedir?

Merkle a─čac─▒ kavram─▒, a├ž─▒k anahtar kriptografisi ├╝zerine ├žal─▒┼čmalar─▒yla tan─▒nan bilgisayar m├╝hendisi Ralph Merkle taraf─▒ndan 80'lerin ba┼č─▒nda ortaya at─▒lm─▒┼čt─▒r.
Merkle a─čac─▒ yap─▒s─▒, bir set i├žindeki verinin b├╝t├╝nl├╝─č├╝n├╝ do─črulamak i├žin kullan─▒l─▒r. Merkle a─ča├žlar─▒ ├Âzellikle, kat─▒l─▒mc─▒lar─▒n bilgileri payla┼čmas─▒n─▒ ve ba─č─▒ms─▒z olarak do─črulamas─▒n─▒ gerektiren e┼čler aras─▒ a─člar ba─člam─▒nda olduk├ža ilgi ├žekici bir kullan─▒ma alan─▒na sahiptir.
Hash fonksiyonlar─▒, Merkle a─čac─▒ yap─▒lar─▒n─▒n merkezinde yer al─▒r. Bu nedenle devam etmeden ├Ânce Hashing Nedir? makalemizi okuman─▒z─▒ ├Âneririz.


Merkle a─ča├žlar─▒ nas─▒l ├žal─▒┼č─▒r?

B├╝y├╝k bir dosya indirmek istedi─činizi d├╝┼č├╝n├╝n. Genellikle bir a├ž─▒k kaynak yaz─▒l─▒mda, indirdi─činiz dosyan─▒n hash'inin geli┼čtiricilerin herkese a├ž─▒k payla┼čt─▒─č─▒ hash'le ├Ârt├╝┼č├╝p ├Ârt├╝┼čmedi─čini kontrol etmeniz gerekir. E─čer ├Ârt├╝┼č├╝yorsa bilgisayar─▒n─▒zdaki dosyan─▒n geli┼čtiricilerin dosyas─▒yla birebir ayn─▒ oldu─čunu bilebilirsiniz.

Hash'ler ├Ârt├╝┼čm├╝yorsa ortada bir sorun vard─▒r. Ya yaz─▒l─▒m alt─▒nda gizlenen zararl─▒ bir dosya indirmi┼čsinizdir ya da dosya do─čru ┼čekilde inmemi┼čtir ve ├žal─▒┼čmayacakt─▒r. E─čer ikinci durum s├Âz konusuysa dosyay─▒ indirmek i├žin harcanan zaman bo┼ča gidece─činden keyfiniz ka├žabilir. ┼×imdi s├╝rece ba┼čtan ba┼člaman─▒z ve bu sefer dosyada bir bozulma meydana gelmeyece─čini umman─▒z gerekir.

Akl─▒n─▒zdan ke┼čke bunu yapman─▒n daha kolay bir yolu olsayd─▒ diye ge├žebilir. ─░┼čte bu noktada Merkle a─ča├žlar─▒ devreye girer. Bunlardan biriyle dosyan─▒z─▒ par├žalara ay─▒rabilirsiniz. E─čer dosya 50GB ise, bunu her biri 0,5GB olacak ┼čekilde y├╝z par├žaya b├Âlebilir ve daha sonra dosyay─▒ par├ža par├ža indirebilirsiniz. Torrent dosyalar─▒ ile yapt─▒─č─▒n─▒z da tam olarak budur.┬á
Bu durumda kaynak size Merkle k├Âk├╝ olarak bilinen bir hash sunar. Bu tek hash, dosyan─▒z─▒ olu┼čturan t├╝m par├žalar─▒n bir temsilidir. Fakat Merkle k├Âk├╝ veriyi do─črulamay─▒ ├žok daha kolay hale getirir.┬á
Basit├že a├ž─▒klamak i├žin sekiz par├žaya b├Âl├╝nm├╝┼č 8GB'l─▒k bir dosya ├Ârne─čini ele alal─▒m. Par├žalara A'dan H'ye kadar isim verelim. Daha sonra her par├žay─▒ bir hash fonksiyonundan ge├žirelim ve sekiz farkl─▒ hash elde edelim.


Sekiz par├žan─▒n her birini bir hash fonksiyonundan ge├žirerek hash'lerini al─▒yoruz.


Art─▒k elimizde biraz daha anlaml─▒ bir veri var. T├╝m par├žalar─▒n hash'leri elimizde, yani bunlardan biri hatal─▒ysa bunu kaynakla kar┼č─▒la┼čt─▒rarak anlayabiliriz de─čil mi? Muhtemelen evet, ama bu ayn─▒ zamanda son derece verimsiz olur. E─čer dosyan─▒z binlerce par├žadan olu┼čuyorsa, bunlar─▒n her birini hash etmeniz ve sonu├žlar─▒ teker teker kontrol etmeniz olduk├ža zor olacakt─▒r.

Bunun yerine hash'leri ikili olarak al─▒r ve bu ikilileri birlikte hash ederiz. Yani hA + hB, hC + hD, hE + hF ve hG + hH'yi hash ederiz. Elimize d├Ârt hash ge├žer. Daha sonra bunlar─▒ bir tur daha hash ederek iki hash elde ederiz. En nihayetinde, son ikisini de hash ederek ana hash'imiz olan Merkle k├Âk├╝ne (ya da k├Âk hash'e) ula┼č─▒r─▒z.


Yap─▒, ters bir a─čaca benziyor. En alt s─▒rada yapraklar bulunuyor, bunlar birle┼čerek d├╝─č├╝mleri ve son olarak da k├Âk├╝ olu┼čturuyor.


Art─▒k elimizde, indirdi─čimiz dosyay─▒ temsil eden Merkle k├Âk├╝ var. Bu k├Âk hash'i kaynak taraf─▒ndan sunulan hash ile kar┼č─▒la┼čt─▒rabiliriz. E─čer e┼čle┼čirlerse harika olur. Ama hash'ler farkl─▒ysa verinin ├╝zerinde de─či┼čiklik yap─▒ld─▒─č─▒ndan emin olabiliriz. Di─čer bir deyi┼čle, par├žalardan bir ya da birka├ž─▒ farkl─▒ bir hash yaratm─▒┼čt─▒r. Veride yap─▒lacak en k├╝├ž├╝k bir de─či┼čiklik bile tamamen farkl─▒ bir Merkle k├Âk├╝n├╝n yarat─▒lmas─▒na neden olur.┬á

Neyse ki, kolay bir yoldan hangi par├žan─▒n hatal─▒ oldu─čunu kontrol edebiliriz. Bizim ├Ârne─čimizde, hatal─▒ par├žan─▒n hE oldu─čunu varsayal─▒m. ─░lk olarak a─čdaki bir e┼čten Merkle k├Âk├╝n├╝ olu┼čturan iki hash'i (hABCD ve hEFGH) istemeniz gerekir. Sizin hABCD de─čerinizle e┼čten gelen de─čerin ├Ârt├╝┼čmesi gerekir ├ž├╝nk├╝ bu alt a─ča├žta hata yoktur. Fakat hEFGH ├Ârt├╝┼čmeyecektir, dolay─▒s─▒yla bu alt grubu kontrol etmeniz gerekti─čini anlars─▒n─▒z. Daha sonra kendinizinkiyle k─▒yaslamak i├žin hEF ve hGH hash'lerini istersiniz. hGH ayn─▒ olacakt─▒r, b├Âylece hatal─▒ par├žan─▒n hEF oldu─ču ├ž─▒kar─▒m─▒n─▒ yapabilirsiniz. Son olarak hE ve hF hash'lerini kar┼č─▒la┼čt─▒r─▒rs─▒n─▒z. B├Âylece hE'nin hatal─▒ oldu─čunu belirleyebilir ve bu par├žay─▒ tekrar indirebilirsiniz.

├ľzetle, bir Merkle a─čac─▒ verinin bir├žok par├žaya b├Âl├╝nmesi ve daha sonra bir Merkle k├Âk├╝ olu┼čturmak i├žin bu par├žalar─▒n tekrar tekrar hash edilmesiyle yarat─▒l─▒r. B├Âylece veri par├žalar─▒nda bir hata olup olmad─▒─č─▒ kontrol edilebilir. Bir sonraki b├Âl├╝mde inceleyece─čimiz gibi Merkle a─ča├žlar─▒n─▒n ilgin├ž ba┼čka uygulamalar─▒ da vard─▒r.



Kripto para d├╝nyas─▒na girmek mi istiyorsunuz? Binance ├╝zerinden Bitcoin alabilirsiniz!



Merkle k├Âkleri neden Bitcoin'de kullan─▒l─▒r?

Merkle a─ča├žlar─▒ i├žin farkl─▒ kullan─▒m alanlar─▒ bulunur ama biz burada blockchainlere y├Ânelik ├Ânemlerine odaklanaca─č─▒z. Merkle a─ča├žlar─▒ Bitcoin ve di─čer bir├žok kripto para i├žin hayati ├Âneme sahiptir. T├╝m bloklar─▒n ayr─▒lmaz par├žalar─▒d─▒r ve blok ba┼čl─▒─č─▒nda yer al─▒rlar. A─čac─▒m─▒z─▒n yapraklar─▒n─▒ elde etmek i├žin blo─ča eklenen her i┼člemin i┼člem hash'ini (TXID) kullan─▒r─▒z.┬á

Merkle k├Âk├╝ birden fazla amaca hizmet eder. Burada kripto para madencili─čine ve i┼člem do─črulamaya y├Ânelik uygulamalar─▒ndan bahsedece─čiz.


Madencilik

Bir Bitcoin blo─ču iki par├žadan olu┼čur. ─░lki blok ba┼čl─▒─č─▒d─▒r ve blo─čun meta verisini i├žeren sabit b├╝y├╝kl├╝kte bir par├žad─▒r. ─░kincisi ise b├╝y├╝kl├╝─č├╝ de─či┼čebilen ama genellikle ba┼čl─▒ktan ├žok daha b├╝y├╝k olan i┼člemler listesidir.
Madencilerin ge├žerli bir blok olu┼čturabilmek i├žin belirli ko┼čullar─▒ kar┼č─▒layan bir ├ž─▒kt─▒ yaratmak amac─▒yla veriyi tekrar tekrar hash etmesi gerekir. Her giri┼čimde, farkl─▒ bir ├ž─▒kt─▒ yaratabilmek i├žin blok ba┼čl─▒─č─▒nda yer alan rastgele bir say─▒ (nonce) de─či┼čtirilir. Fakat blo─čun b├╝y├╝k k─▒sm─▒ ayn─▒ kal─▒r. Binlerce i┼člem olabilir ama yine de her sefer bunlar─▒ hash etmeniz gerekir.

Bir Merkle k├Âk├╝, s├╝reci b├╝y├╝k ├Âl├ž├╝de kolayla┼čt─▒r─▒r. Madencili─če ba┼člad─▒─č─▒n─▒zda, dahil etmek istedi─činiz t├╝m i┼člemleri s─▒ralar ve bir Merkle a─čac─▒ olu┼čturursunuz. Ortaya ├ž─▒kan k├Âk hash'i (32 bit) blok ba┼čl─▒─č─▒na koyars─▒n─▒z. Daha sonra madencilik yaparken, t├╝m blok yerine yaln─▒zca blok ba┼čl─▒─č─▒n─▒ hash etmeniz yeterli olur.

Bu y├Ântem i┼če yarar ├ž├╝nk├╝ ├╝zerinde de─či┼čiklik yap─▒lmas─▒na diren├žlidir. Blo─čun t├╝m i┼člemlerini kompakt bir formatta ├Âzetlemi┼č olursunuz. Ge├žerli bir blok ba┼čl─▒─č─▒ bulup daha sonra i┼člem listesini de─či┼čtiremezsiniz ├ž├╝nk├╝ bu Merkle k├Âk├╝n├╝ de de─či┼čtirecektir. Blok di─čer node'lara g├Ânderildi─činde, onlar da i┼člem listesinden k├Âk├╝ hesaplar. E─čer elde ettikleri de─čer ba┼čl─▒kla ayn─▒ de─čilse blok reddedilir.


Do─črulama

Merkle k├Âklerinin faydal─▒ bir di─čer ilgin├ž ├Âzelli─či daha vard─▒r. Bu ├Âzellik hafif node'lar─▒ (blockchainin tam bir kopyas─▒n─▒ tutmayan node'lar) ilgilendirir. E─čer s─▒n─▒rl─▒ kayna─ča sahip bir cihaz ├╝zerinde node ├žal─▒┼čt─▒r─▒yorsan─▒z, bir blo─čun t├╝m i┼člemlerini indirmeyi ve hash etmeyi istemezsiniz. Bunun yerine bir Merkle ispat─▒ (bir full node taraf─▒ndan g├Ânderilen ve i┼čleminizin belirli bir blokta bulundu─čunu ispat eden kan─▒t) istemeniz yeterli olur. Buna genellikle Basitle┼čtirilmi┼č ├ľdeme Do─črulamas─▒ (SPV) ad─▒ verilir ve kavram Satoshi Nakamoto taraf─▒ndan Bitcoin whitepaper'─▒nda a├ž─▒klanm─▒┼čt─▒r.


hD'yi kontrol etmek i├žin yaln─▒zca k─▒rm─▒z─▒ hash'lere ihtiya├ž duyar─▒z.


TXID'si hD olan bir i┼člem hakk─▒nda bilgi sahibi olmak istedi─čimiz bir senaryoyu d├╝┼č├╝nelim. E─čer hC bizimle payla┼č─▒l─▒rsa, hCD'yi bulabiliriz. Daha sonra, hABCD'yi hesaplamak i├žin hAB'ye ihtiyac─▒m─▒z olur. Son olarak hEFGH ile, ortaya ├ž─▒kan Merkle k├Âk├╝n├╝n blok ba┼čl─▒─č─▒yla e┼čle┼čip e┼čle┼čmedi─čini kontrol edebiliriz. E┼čle┼čiyorsa, i┼člemin blo─ča dahil edildi─či kan─▒tlanm─▒┼č olur ÔÇô farkl─▒ verilerle ayn─▒ hash'i yaratmak neredeyse imkans─▒zd─▒r.

Yukar─▒daki ├Ârnekte, yaln─▒zca ├╝├ž kere hash almam─▒z gerekir. Oysa Merkle ispat─▒ olmasa, bunu yedi kere yapmam─▒z gerekirdi. G├╝n├╝m├╝zde bloklar binlerce i┼člem i├žerdi─či i├žin, Merkle ispatlar─▒n─▒ kullanmak zamandan ve hesaplama g├╝c├╝nden ├Ânemli ├Âl├ž├╝de tasarruf sa─člar.


Son d├╝┼č├╝nceler

Merkle a─ča├žlar─▒n─▒n farkl─▒ bir├žok bilgisayar bilimi uygulamas─▒ i├žin b├╝y├╝k fayda sa─člad─▒─č─▒ bilinmektedir. Yukar─▒da bahsetti─čimiz gibi blockchainler i├žin son derece ├Ânemlidirler. Merkle a─ča├žlar─▒ sayesinde, da─č─▒t─▒lm─▒┼č sistemlerde a─č gereksiz verilerle doldurulmadan bilgiler kolayca do─črulanabilir.

Merkle a─ča├žlar─▒ (ve Merkle k├Âkleri) olmadan Bitcoin'in ve di─čer kripto paralar─▒n bloklar─▒ g├╝n├╝m├╝zdeki kadar kompakt olamazd─▒. Ve hafif node'lar gizlilik ve g├╝venlik bak─▒m─▒ndan daha zay─▒f olsa da, Merkle ispatlar─▒ sayesinde kullan─▒c─▒lar i┼člemlerinin bir blo─ča dahil edilip edilmedi─čini minimum destekle kontrol edebilir.
G├Ânderiler Payla┼č─▒n
Hesap olu┼čturun
Hemen bir Binance hesab─▒ olu┼čturarak bilgilerinizi uygulamaya d├Âk├╝n.