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.
Ö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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
// 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:
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.
Ç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.
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ş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.
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.
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.
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.
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.
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.