1. Ana Sayfa
  2. Kripto Para
  3. Oracle olmadan Bitcoin akıllı sözleşmelerinden blok zinciri verilerine erişin

Oracle olmadan Bitcoin akıllı sözleşmelerinden blok zinciri verilerine erişin

oracleler olmadan-bitcoin-akıllı-sözleşmelerden-blockchain-verilerine erişim

Bu makale ilk olarak Medium’da yayınlandı.

Akıllı sözleşmeler dış dünya hakkında hiçbir şey bilmez ve genellikle dış verileri içe aktarmak için oracle’lara güvenmelidir. Daha önce Rabin imzası ve ECDSA’ya dayalı olarak Oracle’dan veri almak için iki yöntem göstermiştik. Bu makalede, veri bütünlüğünü korurken, belirli harici veri türlerine, yani blok zincirindeki verilere (blok başlıkları ve işlemler gibi) bir oracle olmadan erişmenin mümkün olduğunu gösterdik. Akıllı sözleşmelerin zincirdeki verilere minimum güvenle erişmesine izin vererek, Bitcoin üzerindeki tüm yeni akıllı sözleşme türleri için sınırsız fırsatlar sunar.

Blok başlığını ziyaret edin

Adından da anlaşılacağı gibi, Bitcoin blok zinciri bir blok zincirinden oluşur. Bir bloğun iki bölümü vardır: blok başlığı ve işlem.

Bir blok ve kafası

Blok başlığı, bloğun meta verilerini içerir ve aşağıda gösterildiği gibi altı alana sahiptir.

Bitcoin blok başlığı

Bitcoin başlığının Bitcoin Proof of Work konsensüs algoritmasının bir parçası olduğunu belirtmekte fayda var. Daha spesifik olarak, serileştirilmiş blok başlığının karma değeri, zorluk hedefini (yani baştaki sıfırların sayısını) geçmemelidir. İş kanıtının güvenilmez doğası nedeniyle, özellikle yüksek zorluk durumunda, etkili bir blok başlığı oluşturmanın maliyeti çok yüksektir. Ancak belirli bir blok başlığının geçerli olup olmadığını kontrol etmek kolaydır. Bu, blok başlığını aşağıda gösterildiği gibi herhangi bir kehanete güvenmeden akıllı sözleşmeye tam olarak bu şekilde aktarırız.

Blockchain sözleşmesi

22. satırdaki IsBlockHeaderValid(), blok başlığının geçerli olup olmadığını kontrol eder. 31. satırdaki bits2Target(), kompakt bir formdan (genellikle nBits olarak adlandırılan 4 baytlık bir alan) zorluk hedefini hesaplar. Sadece 23. satırdaki blok başlığını hash ediyoruz ve 27. satırdaki zorluk hedefini karşıladığından emin oluyoruz.

Sahte blok başlığı

Ayrıca 27. satırda, sahte blok başlıkları oluşturmanın zorluğunu kontrol etmek için zorluk hedefinin blockchainTarget parametresinden daha büyük olmadığını kontrol ettik. Aksi takdirde, saldırgan, hash’i zorluk hedefini karşılayan bir blok başlığını kolaylıkla oluşturabilir (örneğin, yalnızca 2 baştaki sıfır vardır). Bitcoin’in diğer birçok yönü gibi (0-conf gibi), blok başlıklarını bu şekilde içe aktarmanın güvenliği sadece teknik değil ekonomiktir. Bu, pratikte, gerçek blok başlıklarına dayanan akıllı sözleşmeler tarafından kilitlenmesi gereken paraların sayısının, sahte blok başlıkları oluşturma maliyetini aşmaması gerektiği anlamına gelir.

Erişim işlemi

Blok başlığı hazır olduğunda, bloktaki herhangi bir işleme kolayca erişebiliriz. Bunun nedeni, blok başlığının tüm işlemlerin Merkle ağacının kökünü içermesidir. SPV’ye benzer şekilde, işlemi ve Merkle yolunu akıllı sözleşmeye iletir ve blok başlığındaki kök hash ile eşleştiğini doğrularız. 17. satırdaki TxInBlock() bunu gösterir.

Bir kahine ihtiyaç duymadan Bitcoin akıllı sözleşmelerinden blok zinciri verilerine erişimMerkel ağacı ve Merkel kanıtı

Vaka Çalışması: Rastgele Sayılar Üretmek için Blockchain Kullanımı

Genel olarak konuşursak, bir blok zincirinde güvenli ve adil bir şekilde sahte rastgele sayılar üretmek zor bir problem olarak kabul edilir çünkü blok zinciri hem deterministik hem de şeffaftır. Entropi kaynağı olarak blok zinciri verilerini, özellikle blok başlığının nonce alanını kullanırız.

Hem Alice hem de Bob, aynı miktarda Bitcoin’i aşağıdaki sözleşmeye kilitler. Sözleşmeyi içeren işlem yayınlandıktan sonra, gelecekteki bloklara çıkarılacaktır. Bloğun rastgele sayısına göre (tahmin edilmesi zor ve rastgele olarak kabul edilebilir), kazanan belirlenir ve tüm kilitli bitcoinler alınır.

Blockchain PRNG sözleşmesi

17. ve 20. satırlar, sözleşmeyi içeren işlemin txid’ini elde etmek için OP_PUSH_TX teknolojisini kullanır. Satır 23, blok başlığının yasal olduğunu doğrular ve satır 26, önceki işlemin içinde olduğunu doğrular. Nonce alanı tek ise Alice kazanır, aksi halde Bob kazanır.

genelleştirmek

Asgari güvenle bir Bitcoin akıllı sözleşmesinde blok zinciri verilerine nasıl erişileceğini gösterdik. Serileştirilmiş Bitcoin başlığı sadece 80 bayt uzunluğunda olduğundan ve Merkle logaritmik olarak ölçeklendiğini kanıtladığından, bu teknik çok etkilidir (SPV ile aynı).

Ayrıca, sözde rasgele sayılar oluşturmak için blok zinciri verilerinin kullanılmasına ilişkin bir örnek gösterdik. Bu, mümkün olanın sadece başlangıcıdır ve bunu gelecekteki bir makalede inceleyeceğiz. bizi izlemeye devam edin.

teşekkürler

Bu çalışma, şu anda Cambridge Cryptography’de bulunan Ying Chen’in çalışmasından ilham aldı.

İzleyin: CoinGeek New York konuşması, Bitcoin’in akıllı sözleşmeleri ve hesaplamaları

Bitcoin’de yeni misiniz? Bitcoin (başlangıçta Satoshi Nakamoto tarafından tasarlandı) ve blok zinciri hakkında daha fazla bilgi edinmek için nihai kaynak kılavuzu olan CoinGeek’in Bitcoin yeni başlayanlar bölümüne göz atın.

Bilgi kaynağı: COINGEEK’ten 0x bilgisi ile derlenmiştir.Telif hakkı yazarına aittir ve izinsiz çoğaltılamaz

Yorum Yap

Bültenimize Katılın

Hemen ücretsiz üye olun ve yeni güncellemelerden haberdar olan ilk kişi olun.

Yorum Yap