Blockchain'de Taahhüt-Açıklama Şeması nedir?

Yeni BaşlayanNov 22, 2023
Merkezi olmayan dijital işlemlerde gizliliği ve güvenliği artıran bir blockchain yeniliği olan Commit-Reveal yöntemi hakkında bilgi edinin.
Blockchain'de Taahhüt-Açıklama Şeması nedir?

Blockchain teknolojisi fikir birliğine, güvenliğe ve mahremiyete ulaşmaya yönelik yenilikçi yaklaşımlar getiriyor. Bu tür yeniliklerden biri, blockchain kullanıcılarının gizliliğini ve güvenliğini artıran bir şifreleme protokolü olan taahhüt-açıklama şemasıdır. Bu kursta ilerledikçe, Commit-Reveal planının merkezi olmayan dijital alana getirdiği güven, şeffaflık ve yenilik katmanlarını ortaya çıkaracaksınız. Bu makaledeki her modül, Commit-Reveal planının, uygulanmasının ve blockchain ortamı üzerindeki etkisinin kapsamlı bir şekilde anlaşılmasını sağlamak için titizlikle hazırlanmıştır.

Blockchain nedir?

Özünde bir blockchain, farklı yönleri olan dijital bir defter gibidir. Geleneksel defterlerin aksine, merkezi olmayan bir yapıya sahiptir, yani hiçbir kuruluşun tüm blok zinciri üzerinde kontrolü yoktur ve ağının bir parçası olan herkes tarafından erişilebilirdir. Bir blockchaindeki her 'blok' bir işlem listesi taşır. Bir blok işlemlerle dolduğunda, yeni bir blok oluşturulur ve bağlantılı bir blok 'zincir'i oluşturulur; dolayısıyla 'blockchain' adı da buradan gelir.

Blockchain'in öne çıkan özelliklerinden biri güven ve şeffaflığa verdiği önemdir. Ağdaki herkes blockchain üzerindeki her işleme erişebilir ve bunları görüntüleyebilir. Bu açıklık sahtekârlığı caydırır ve toplum arasında güveni artırır. Bu kadar şeffaflığa nasıl ulaştığını merak ediyor olabilirsiniz. Cevap, bu kursta ilerledikçe derinlemesine inceleyeceğimiz benzersiz fikir birliği mekanizmalarında ve şifreleme ilkelerinde yatmaktadır.

Taahhüt-Reveal Şemasına Giriş

Artık blockchain'in ne olduğunu anladığınıza göre, ona özel bir tat katalım: Commit-Reveal şeması. Bu, bir sihirbazın (kullanıcının) ilk önce belirli bir eylemi izleyiciye (ağ) açıklamadan taahhüt ettiği ve daha sonraki bir aşamada eylemi açıkladığı bir sihir gösterisi gibidir. Blockchain açısından bu iki aşamalı bir süreçtir: 'Taahhüt Aşaması' ve 'Açığa Çıkarma Aşaması'.

Taahhüt Aşamasında, kullanıcı bilgilerinin hash edilmiş bir versiyonunu blok zincirine gönderir. Bu hash edilmiş versiyon, orijinal bilginin gerçek içeriği gizleyen şifreli versiyonu gibidir. Karma fonksiyonunun büyüsü, bunun tek yönlü bir yolculuk olmasıdır; hash'i orijinal formuna geri döndüremezsiniz, böylece bilgiyi şimdilik gizli tutabilirsiniz. Daha sonra, kullanıcının orijinal bilgiyi açığa çıkardığı Ortaya Çıkarma Aşaması gelir; bu, daha sonra ağ tarafından tekrar karma işlemi yapılarak ve eşleşiyorsa ilk taahhüt edilen karma değeriyle karşılaştırılarak doğrulanır, işte! Ağ, açıklamayı doğrular ve sihir numarası tamamlanır.

Commit-Reveal şeması aracılığıyla blockchain ağları, gelecek modüllerde ayrıntılı olarak inceleyeceğimiz açık artırmalar, oylama sistemleri ve daha fazlası gibi uygulamalarda yeni bir katılım düzeyine ulaşabilir.

Taahhüt Aşaması

Commit-Reveal planının derinliklerine doğru yol alırken ilk durağımız 'Commit Aşaması' oluyor. Bu aşamada kullanıcılar belirli bir değere "taahhüt ederler" ancak bunu gerçek değeri gizli tutacak şekilde yaparlar. Aklınızda gizli bir numara olduğunu, ancak bunun ne olduğunu herkese söylemek yerine onu kilitli bir kutuya koyup herkese gösterdiğinizi hayal edin. Bir numaran olduğunu biliyorlar ama ne olduğunu bilmiyorlar. Blockchain'de taahhütte bulunmak budur!

Şimdi gizli değerimizi nasıl kilitleyeceğiz? Blockchain dünyasında bunu yapmak için karma işlevi adı verilen bir şey kullanırız. Hash fonksiyonu sihirli bir karıştırıcıya benzer. Gizli değerinizi girersiniz ve o da bunun karma olarak bilinen şifreli bir versiyonunu ortaya çıkarır. Bu karma benzersizdir; Orijinal değerdeki küçük bir değişiklik bile son derece farklı bir karma yaratır. Bunun güzelliği, bunun tek yönlü bir süreç olmasıdır; değer bir kez karmalandıktan sonra, karmadan orijinal değeri bulmanın kolay bir yolu yoktur. Yani kullanıcılar değerlerini taahhüt ettiklerinde aslında yaptıkları şey, değerlerinin karma değerini blockchaindeki herkesle paylaşmaktır.

Ortaya Çıkarma Aşaması

Taahhüt Aşamasındaki gerilimin ardından sıra büyük açıklamanın zamanı geldi! Ortaya Çıkarma Aşaması, taahhüt edilen değerlerin nihayet blockchain üzerindeki tüm katılımcılara açıklandığı yerdir. Kilitli kutu benzetmemize geri dönecek olursak, bu, kutunun açıldığı ve herkesin hangi numarayı sakladığınızı göreceği andır. Blockchain dünyasında açıklama, çeşitli uygulamalarda şeffaflık ve adalet sağlayan basit ama çok önemli bir süreçtir.

Bir kullanıcı taahhüt ettiği değeri açıkladığında ağ, ortaya çıkan değere hashing uygulayarak ve bunu Taahhüt Aşaması sırasında paylaşılan orijinal hash ile karşılaştırarak orijinalliğini kolayca doğrulayabilir. Karma değerleri eşleşirse, kullanıcının yarı yolda fikrini değiştirmediği doğrulanır. Bu basit ama güçlü doğrulama süreci, herkesin kurallara göre oynadığı güvenilir bir ortamın korunmasına yardımcı olur. Bu, bir oyunda tüm oyuncuların üzerinde anlaşılan şartlara uymasını sağlayan bir hakemin olması gibidir.

Akıllı Sözleşmelerde Commit-Reveal'ın Uygulanması

Artık Commit-Reveal şemasının büyüsünü çözdüğümüze göre, bunun blockchain dünyasında akıllı sözleşmeler aracılığıyla nasıl hayata geçtiğini görelim. Akıllı bir sözleşme geleneksel bir sözleşme gibidir ancak dijitaldir ve kendi kendini yürütür. Otomatik olarak tüm tarafların anlaşmalarına bağlı kalmasını sağlayan tarafsız bir robot hayal edin ve akıllı bir sözleşme fikrine sahip olun. Commit-Reveal'ın teorik fikrini alıp dijital alanda pratik hale getiren araçtır. Akıllı bir sözleşme yoluyla bir Commit-Reveal şemasını uygulamak, her adımın belirlenmiş bir ritmi takip ettiği bir dansın koreografisini yapmaya benzer. Bu koreografiyi adım adım inceleyelim.

Sözleşmenin Oluşturulması

Ethereum gibi bir blockchain platformunda akıllı bir sözleşme oluşturarak başlayın. Bu sözleşme, içinde kodlanmış Commit-Reveal şemasının angajman kurallarına sahip olacaktır.

Taahhüt İşlevi

Akıllı sözleşme kapsamında bir taahhüt işlevi tasarlayın. Bu işlev, kullanıcıların karma değerlerini (taahhüt aşaması) sözleşmeye göndermelerine olanak tanır.

Taahhüt Edilen Değerlerin Saklanması

Kullanıcılar değerlerini taahhüt ettikçe, akıllı sözleşme bu hashleri blok zincirinde güvenli bir şekilde saklayacak ve ortaya çıkma aşamasını bekleyecektir.

Ortaya Çıkarma İşlevi

Daha sonra akıllı sözleşme kapsamında bir ortaya çıkarma işlevi oluşturun. Zamanı geldiğinde bu işlev, kullanıcıların orijinal değerlerini ortaya çıkarmasına olanak tanıyacak.

Doğrulama ve onaylama

Açıklamanın ardından akıllı sözleşme, ortaya çıkan değerleri karma hale getirerek ve bunları başlangıçta taahhüt edilen karmalarla karşılaştırarak doğrulayacaktır. Her şey eşleşirse açıklama doğrulanır.

Sonlandırma

Tüm açıklamalar toplanıp doğrulandıktan sonra akıllı sözleşme, oyların sayılması, açık artırma kazananlarının belirlenmesi veya uygulamaya özel herhangi bir eylem gibi sonraki adımları otomatik olarak yürütebilir.

Denetim ve Test

Dağıtımdan önce, amaçlandığı gibi çalıştığından ve potansiyel istismarlara karşı korunduğundan emin olmak için akıllı sözleşmeyi kapsamlı bir şekilde test edin. Akıllı sözleşme, bu adımlar aracılığıyla Commit-Reveal dansını düzenleyerek adil ve şeffaf bir süreç sağlar.

Kod Örneği

// SPDX-Lisans-Tanımlayıcı: MIT 

 pragma sağlamlığı ^0.8.0; 

 sözleşme CommitReveal { 

 struct Commit {

    bytes32 hash;

    bool revealed;

}



eşleme(adres => Commit) genel taahhütler; 

 eşleme(adres => uint256) public açığaValues; 



 // Taahhüt işlevi, kullanıcıların hash edilmiş değerlerini göndermelerine olanak tanır 

 function commit(bytes32 _hash) public {

    require(commits[msg.sender].hash == 0, "Already committed");

    commits[msg.sender].hash = _hash;

}



// ortaya çıkarma işlevi, kullanıcıların orijinal değerlerini ortaya çıkarmalarına olanak tanır 

 function ortaya çıkarma(uint256 _value, string hafıza _salt) public {

    require(commits[msg.sender].revealed == false, "Already revealed");

    require(keccak256(abi.encodePacked(_value, _salt)) == commits[msg.sender].hash, "Hashes don't match");

    commits[msg.sender].revealed = true;

    revealedValues[msg.sender] = _value;

}



// Oyları sayabilecek örnek bir sonlandırma fonksiyonu 

 function tallyVotes() genel görünüm şunu döndürür (uint256) { 

 uint256 totalVotes = 0; 

 for (adres addr = adres(0); addr < adres(-1); addr++) { 

 if (commits[addr].revealed) {

            totalVotes += revealedValues[addr];

        }

    }

    toplamOyu döndür; 

 } 



 // Sözleşme durumunu denetlemek için bir işlev (yalnızca bir örnek, büyük veri kümeleri için pratik değil) 

 işlev denetim() genel görünüm döndürür (mapping(adres => uint256) bellek) {

    return revealedValues;

}

 }

Açıklama:

  • Sözleşmenin Oluşturulması: CommitReveal sözleşmesi oluşturulur.
  • Taahhüt İşlevi: Taahhüt işlevi karma değeri (_hash) kabul eder ve onu gönderenin adresine göre saklar.
  • Taahhüt Edilen Değerlerin Saklanması: Karma değerler, taahhüt adı verilen bir eşlemede saklanır.
  • Gösterme İşlevi: Gösterme işlevi, kullanıcıların orijinal değerlerini (_value) ve bir tuzu (_salt) göndermelerine olanak tanır. Bu karmaların başlangıçta taahhüt edilen karmalarla eşleşip eşleşmediğini kontrol eder.
  • Doğrulama ve Doğrulama: Bu, ortaya çıkarma işlevi içinde karmaları karşılaştırarak yapılır.
  • Sonlandırma: TallyVotes işlevi, oyları nasıl sayabileceğinize dair basitleştirilmiş bir örnektir. Olası tüm adresleri yineler (büyük veri kümeleri için pratik değildir) ve ortaya çıkan değerleri toplar.
  • Denetim ve Test Etme: Denetim işlevi, sözleşme durumunu nasıl kontrol edebileceğinize dair çok basit bir örnektir.

Bu çok basitleştirilmiş bir örnektir ve bir üretim sistemi için ihtiyaç duyacağınız pek çok pratik husustan yoksundur (taşmaları önlemek, gaz kullanımını optimize etmek, büyük veri kümelerini yönetmek ve uygun erişim kontrolünü eklemek gibi). Özellikle sonlandırma işlevi, tüm olası adreslerin yinelenmesi nedeniyle pratik değildir ve gerçek dünya senaryosunda farklı bir tasarıma ihtiyaç duyacaktır. Bu kod, üretime hazır bir çözüm olarak değil, bir başlangıç noktası ve eğitim aracı olarak tasarlanmıştır.

Blockchain'de Taahhüt-Reveal Şemasının Kullanım Örnekleri

Açık Artırma Platformlarının Geliştirilmesi

Çevrimiçi açık artırmalar, Commit-Reveal planının en önemli uygulamalarından biridir. Başkalarının teklif tutarlarını kaldıraç olarak kullanmasını önlemek için katılımcılar, taahhüt aşamasında tekliflerini gizlice gönderebilirler. Teklif dönemi sona erdiğinde, açıklama aşaması devreye girerek katılımcıların tekliflerini açıklamasına olanak tanır. Geçerli en yüksek teklif belirlenerek adil ve rekabetçi bir açık artırma süreci sağlanır.

Adil Oylama Sistemleri Oluşturmak

Oylama sistemleri, özellikle seçmenlerden anonimlik ve dürüstlük gerektiren senaryolarda, Commit-Reveal şemasından önemli ölçüde yararlanabilir. Bu düzende, seçimler veya herhangi bir oylama etkinliği sırasında seçmenler, taahhüt aşamasındaki seçimlerini başkalarına açıklamadan taahhüt ederek oyların bütünlüğünü ve gizliliğini sağlar. Oy verme dönemi sona erdiğinde seçmenlerin oylarını açıklamalarına olanak tanıyan açıklama aşaması devreye giriyor. Bunlar daha sonra sonucu belirlemek için sayılır ve adil ve şeffaf bir oylama süreci teşvik edilir.

Kapalı Teklif Sözleşmeleri

Kapalı teklif sözleşmelerinde, teklif sahipleri tekliflerini Commit-Reveal şemasını kullanarak gizli olarak sunarlar. Bu süreç, teklif verenlerden hiçbirinin diğerlerinin teklif tutarlarını bilmemesini sağlayarak adil bir rekabeti teşvik eder. Teklif verme sürecinin ardından açıklama aşamasına geçilir ve ihale, en iyi teklifi veren istekliye verilir.

Oyun Senaryoları

Commit-Reveal şeması, Taş, Kağıt ve Makas'ın dijital versiyonu gibi oyun içi senaryolara eğlenceli bir uygulama bulur. Oyuncular seçimlerini açıklamadan yaparlar, bu da adil bir oyun sağlar. Her iki oyuncu da taahhütte bulunduktan sonra, yapılan seçimlere göre kazananın belirlendiği açıklama aşaması gelir.

Önden Çalışan Sorunları Azaltma

Blockchain ortamlarında önden çalıştırma, kötü niyetli aktörlerin bekleyen işlemlere ilişkin bilgiden potansiyel olarak faydalanabileceği bir endişe kaynağıdır. Commit-Reveal şeması, başlangıçta işlem ayrıntılarını gizleyerek bu tür sorunların azaltılmasına yardımcı olur. Açıklama aşaması geldiğinde, kötü niyetli aktörlerin bilgiye göre hareket etmesi ve böylece işlem bütünlüğünün korunması için artık çok geçtir.

Düşük Gecikmeli Kaydetme ve Gösterme Mimarileri

F3B gibi daha yeni mimariler, geleneksel Commit-Reveal şemalarıyla ilişkili ek yükü azaltmak için geliştirildi . F3B, düşük gecikme süreli bir Commit-and-Reveal mimarisi sunarak blockchain üzerine veri yazmayı en aza indirir. Bu gelişme, Commit-Reveal şemalarındaki sürekli optimizasyonu ve yeniliği ifade etmesi ve onları gerçek dünya uygulamaları için daha verimli hale getirmesi nedeniyle dikkate değerdir.

Rastgele Sayı Üretimi

Blockchain ortamlarında rastgele sayılar üretmek, blockchain protokollerinin deterministik doğasından dolayı zor olabilir. Commit-Reveal şeması, Ethereum blok zincirinde rastgele sayılar üretmek için merkezi olmayan bir alternatif görevi görüyor. Örneğin, bir Commit-Reveal RNG uygulaması olan Randao, genel veri akışlarını kullanır ve rastgele sayı üretimine katılımı teşvik eder.

Çözüm

Commit-Reveal şemasına bu ilginç bakış sona ererken, bu basit ama güçlü mekanizmanın blockchain uygulamalarında güven ve açıklık oluşturmaya nasıl yardımcı olduğunu düşünmek önemlidir. Commit-Reveal şemasıyla blockchain teknolojisinin müzayedeleri adil, oylama sistemlerini dürüst ve oyun senaryolarını daha yaratıcı hale getirerek birçok alanı nasıl değiştirebileceğine kısa bir göz attık. Yolculuk burada bitmiyor; Blockchain teknolojisinin sürekli gelişen doğası, keşfedilecek yeni ufuklar sunuyor. Bu kurs aracılığıyla edinilen bilgilerle donanmış olarak, blockchain'i daha derinlemesine incelemek, sonsuz olanaklarını keşfetmek ve şeffaf, adil ve merkezi olmayan bir dijital geleceğin şekillendirilmesine katkıda bulunmak için iyi bir konumdasınız.

作者: Piero
譯者: Cedar
文章審校: Matheus、Edward、Ashley He
* 投資有風險,入市須謹慎。本文不作為Gate.io提供的投資理財建議或其他任何類型的建議。
* 在未提及Gate.io的情況下,複製、傳播或抄襲本文將違反《版權法》,Gate.io有權追究其法律責任。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!
立即註冊