Blok zinciri nasıl çalışır?

Tamamlandı

Blok zinciriyle ilgili temel bilgilere sahip olduğumuza göre arka planda süreçlerin nasıl çalıştığına bakabiliriz. Bu bilgiler, blok zincirinin senaryonuz için çalışıp çalışmadığına karar vermenize yardımcı olmalıdır.

Veriler nasıl dağıtılır?

Örnek senaryoda birden çok şirket bulunuyor. Süt işleme şirketinde merkezi bir veritabanı bulunabilir. Ancak katılımcıların hiçbiri merkezi otorite olmayı istemiyor. Blok zinciri dağıtılmış kayıt defteri kullanabiliriz. Blok zinciri kullanıldığında merkezi otorite gereksinimi ortadan kalkmış olur. Ayrıca blok zinciri düğümündeki her bir katılımcı, kayıt defterinin bir kopyasına sahip olur ve bu sayede kendi sisteminde denetim ve tümleştirme çalışmaları yapabilir. Ancak her şirketin kendi düğümüne sahip olması şart değildir. Düğümler, iş ortakları arasında paylaşılabilir.

Her bir düğüm, blok zinciri ağı üzerinden diğer düğümlere bağlanır. Örneğin Dalia Pelayo Farms, dondurma fabrikası ve dondurma dükkanları, kendi yönettikleri düğümlere sahiptir. Contoso West ve Contoso East, aynı şirketin alt şirketleridir ve ayrı iş ortaklarıdır. Contoso'nun bir düğümü vardır. Düğümlerle şirketler arasında bire bir ilişki olması şart değildir.

Several participant blockchain nodes connected by a network.

Durumu değiştirme

Blok zincirindeki veriler bir durumu temsil eder. Bu nedenle blok zinciri, sanal para birimleri gibi dijital belirteçler için idealdir. Fiziksel para birimlerinin sahipliğini düşünecek olursak bir madeni para aynı anda yalnızca bir kişinin cebinde olabilir. Para sizin cebinizdeyse sahiplik durumu size ait olur. Parayı bir arkadaşınıza verirseniz durum, paranın sahibinin arkadaşınız olduğunu belirtecek şekilde değişir. Buradaki senaryoda teslimatlar bir tedarik zinciri üzerinde ilerlemektedir. Ürünün sorumluluğu da aktarılmalıdır. Burada ilgilendiğimiz veriler sorumlu taraf, sıcaklık ve ürünün uyumlu olup olmadığıdır.

Blok zinciri, verilerin durumunu bir değerden diğerine değiştirmek için işlemleri kullanır. Örneğin dondurmanın donma derecesinin altında saklanıp saklanmadığını bilmemiz gerekiyor. Dondurma teslimatında sıcaklık sensörü, sıcaklığı düzenli aralıklarla bildirir. Bildirilen sıcaklık, blok zinciri işlem düğümüne gönderilen bir işlemdir.

Example transaction from an IoT temperature sensor. The transaction sets the temperature to -2° celsius in the ledger.

Dondurma senaryosunda tedarik zinciri üzerinden bir teslimat gönderildiğinde her durum değişikliğinde bir işlem gönderilir. Örneğin çizimde dondurma fabrikasına yapılan tipik bir teslimat gösterilmektedir. Her işlemde sorumlu taraf veya sıcaklık değişir. Kayıt defterinin geçerli durumu, tüm işlemlerin sırasıyla uygulanmasından oluşur.

List of transactions in order that change the responsible party and temperature. The combination of transactions result in a ledger state based on the order of transaction changes.

Bir işlem gönderdiğinizde bunu blok zinciri işlem düğümüne göndermiş olursunuz. Dalia Pelayo Farms'ın Contoso West Shipping'i kullanarak süt teslimatı yaptığını düşünelim. Dalia Pelayo Farms'ın teslimat sistemi, blok zinciri düğümüne bir işlem gönderir. İşlem, teslimatın sorumluluğunu çiftçi yerine Contoso West Shipping olacak şekilde güncelleştirir.

A transaction from the farmer being sent to the farmer's blockchain node.

Blok zinciri, işlemi blok zinciri ağı üzerinden gönderir. Her düğüm, işlemin bir kopyasını alır.

A transaction being copied to all participant blockchain node peers.

Her düğüm işlemi alır ancak konsensüs mekanizması kullanarak doğrulama ihtiyacı duyar. Konsensüs, dağıtılmış kayıt defteri için tutarlılık ve güven sağlar.

Kayıt defterindeki verilerin tutarlı olduğundan nasıl emin olabilirsiniz?

Dağıtılmış bir ağda tüm düğümlerdeki verilerde değiştiğinden hangisinin gerçek olduğunu anlamak zordur. Dondurma fabrikası düğümünün bir teslimat işlemini almaması durumunda ne olur? Çiftlikten süt gönderilip gönderilmediğini nasıl bilebilir? Teslimat şirketinin soğutmalı kamyonu arızalanırsa ve süt bozulursa ne olur? Teslimat şirketi sorumluluktan kaçmak için kayıt defterini değiştirebilir mi?

Blok zinciri, tüm blok zinciri düğümlerindeki verileri doğrulamak ve aralarında anlaşma sağlamak için konsensüs mekanizması kullanır. Konsensüs, merkezi olmayan tüm düğümlerin aynı duruma gelmesini sağlayan bir yöntem sunar. Değer veya sorumluluk aktarılırken sıralama önemlidir. Örneğin bir arabanın sahipliğini arkadaşınıza devrederseniz sahipliği aynı anda iş arkadaşınıza devredemezsiniz. Çifte harcama olarak bilinen bu sorun, konsensüs ile çözülebilir. Konsensüs, doğru işlem sırasının ve blok zincirinin bütünlüğünün korunmasını sağlar. Konsensüs kapsamında bir işlem grubu blok olarak doğrulanır ve ağın, bu bloğun blok zincirine dahil edilip edilmemesi konusunda anlaşmaya varması gerekir.

Consensus mechanism agrees on validated transactions across nodes. Each blockchain node writes the latest validated block to the blockchain.

Çalışma kanıtı, eskime kanıtı ve otorite kanıtı gibi birçok farklı blok zinciri konsensüs algoritması vardır. Her algoritma, tutarlılığı farklı bir şekilde çözer. Basitçe ifade etmek gerekirse konsensüs, dağıtılmış kayıt defterini ortak bir duruma getirmek için bir yöntem sunar.

Blok nedir?

Blok, blok zinciri içinde yer alan ve işlem bilgilerinin depolandığı bir veri kümesidir. Bloktaki işlem sayısı genellikle zamana bağlıdır. Örneğin şekilde, son 10 dakika içinde gerçekleştirilen işlemleri içeren bir blok gösterilmiştir.

Example of several transactions representing a block. The order of transactions result in a given state.

Konsensüs aracılığıyla doğrulanan bloklar, her bir düğümdeki blok zincirine eklenir. Tüm düğümler zincirde aynı bloklara sahip olduğundan kayıt defteri ağ genelinde tutarlıdır. Sonuç olarak tüm düğümler, aynı doğrulanmış verileri kabul edilmiş bir sırada içerir.

Kayıt defterinin sabit olduğuna nasıl güvenebilirsiniz?

Düğümdeki kayıt defteri üzerinde denetime sahip olduğunuz için elinizdeki verileri değiştirebileceğinizi düşünebilirsiniz. Bu veriler nasıl sabit kalabilir?

Blok zinciri, bloklar arasında bağlantı oluşturmak için şifreleme karması kullanır. Bloklar arasında bağlantı kurularak işlem sırası konsensüs algoritması aracılığıyla ortak bir şekilde belirlenebilir. Şifreleme karması, rastgele boyuttaki verileri sabit boyuttaki bir bit gösterimiyle eşleyen bir algoritmadır. Bunu dijital parmak izi olarak düşünebilirsiniz. Bitcoin, SHA-256 karma algoritmasını kullanmaktadır. 100 sayfalık bir belgede SHA-256 karma işlevi kullanıyorsanız, işlev çıkışı 256 bit karma değerdir. Belgede yalnızca bir karakteri değiştirir ve karmayı yeniden oluşturursanız, çıkış farklı bir 256 bit karma değerdir. Şimdi karma işlevinde giriş olarak bir blok kullandığımızı düşünün. Çıkış olarak bloktaki veriler için benzersiz bir karma değeri elde edilir.

A block is sent through a hash function and a cryptographic hash is generated.

Blok zinciri, bloklarda değişiklik yapılıp yapılmadığını belirlemek için karmaları kullanır. Bir bloğun karma değeri oluşturulurken bir önceki bloğun karma değeri dahil edilerek blokların karmalar aracılığıyla zincir şeklinde birbirine bağlanması sağlanır.

A block includes the previous block's hash when generating it's hash. Including the previous hash links the blocks together.

Blok zinciri, veri geçmişinin değiştirilmediğini kanıtlamak için karma kodlar kullanarak güven sağlar. Yeni blok oluştururken bir önceki bloğun karması dahil edilerek sıralı ve sabit bir işlem zinciri oluşturulur.

Three blocks linked together by the previous block's hash

Zincirdeki bloklardan birinin değiştirilmesi durumunda sonraki blokların karması farklı olur. Sonuç olarak doğrulama sırasında bu tutarsızlık tespit edilir.

Güvenilen mantık

Blok zinciri, verileri tutarlı ve güvenilir bir şekilde depolamamızı sağlar. Her düğümde aynı şekilde yürütülen bir mantığı nasıl ekleyebiliriz?

Senaryomuzda ürünümüzün sorumluluğunu bir katılımcıdan diğerine aktarmak için bir mantığa ihtiyacımız var. Ayrıca IoT sıcaklık sensöründeki verileri kullanarak sıcaklığın çok yüksek olup olmadığını bilmemiz gerekiyor.

Merkezi olmayan uygulama (DApp), dağıtılmış bilgisayar sisteminde çalışan bir uygulamadır. Bu modülde Ethereum blok zinciri protokolünü kullanmaya odaklanacağız. Ethereum DApp örnekleri, akıllı anlaşmalar olarak adlandırılır. Akıllı anlaşma, bir işlemin bir parçası olarak yürütülen mantığı içerir. Ethereum'da mantığı programlamak için Solidity adı verilen programlama dili kullanılır.

Akıllı anlaşmalar, blok zincirine dağıtılır ve bunlara başvurmak için bir adres kullanılır. Akıllı anlaşmaları kullanmak için bir örnek oluşturmanız gerekir. Bir akıllı anlaşma örneğinde durum verileri ve program mantığı bulunur. Bu senaryoda akıllı anlaşma örneği sorumlu katılımcı, konum ve ürün sıcaklığının uyumsuz olup olmadığı gibi verileri içerir. Sorumluluğu aktarmak veya örneğe ait sıcaklık telemetri verilerini almak için işlev yürütebiliriz.

Components of a smart contract include address, logic, and data.

Bir ürünün sorumluluğu başka bir tarafa aktarıldığında bir işlem yürütülür. Akıllı anlaşma mantığı, durum verilerini güncelleştirir. Dondurma senaryomuzda dondurma fabrikası teslimat sistemi, yeni dondurma teslimatı için bir akıllı anlaşma örneği oluşturur. Fabrikanın teslimat sistemi, teslimatın sorumluluğunu Contoso East Shipping şirketine aktarmak için TransferResponsibility işlevini çağıran bir işlem gönderir. Blok zinciri ağı, işlemi tüm düğümlere gönderir. Akıllı anlaşma, mantığı her bir düğümde yürütür.

A smart contract transaction is sent to one node and copied to the other peer nodes.

Peki teslimat sırasında soğutma ünitesi arızalanır ve dondurmanın sıcaklığı donma sıcaklığının üzerine çıkarsa ne olur? Bir IoT sıcaklık sensörü, dondurmanın sıcaklığını izler ve düzenli aralıklarla işlem gönderir. Sıcaklık donma seviyesinin üzerindeyse akıllı anlaşma mantığı sevkiyatı uyumsuz olarak işaretler.

A smart contract transaction executes logic to set the shipment to out of compliance due to the temperature. The transaction is copied and executed on other peer nodes.

İşlem bir blok zincirine dahil edildiğinden, sevkiyatın uyumsuz olduğu zamanların sabit bir kaydı vardır. Dondurma dükkanı, gıda güvenliği sorunlarıyla karşılaşmamak için teslimatı reddedebilir.

Blok zincirindeki verilerde olduğu gibi akıllı anlaşma da sabittir. Dağıtıldıktan sonra mantık değiştirilemez. Bu nedenle akıllı anlaşma mantığının tüm düğümlerde her zaman aynı şekilde yürütüleceğinden emin olabilirsiniz. Kod değişikliği yapıldığında yeni adreste yeni bir akıllı anlaşma dağıtılması gerekir.