Python ile Blockchain Uygulaması Oluşturmak İçin Adım Adım başlıklı gönderi ilk olarak Coinpedia Fintech Haberleri'nde yayınlandı

giriiş

Blok zinciri

Blockchain, Finans ve Programlama alanının öncüsüdür. İşlemleri ve veritabanını yöneten merkezi bir otoritenin olmadığı merkezi olmayan mekanizma gibi temel özellikleri nedeniyle dünyanın dört bir yanından ilgi gören yeni ortaya çıkan bir teknolojidir. Şeffaflık ve güvenlik açısından sunabileceği çok şey vardır.

Blockchain’in tam olarak ne olduğu merak konusu olabilir.

Basitçe söylemek gerekirse, Blockchain şifreleme ile birbirine bağlanmış blokları veya dosyaları ifade eder. Bu, kriptografi kurallarıyla arkadan ve arkadan bağlanan dijital bir zincir gibidir. Bu, katılımcı düğümlerin bütünlüğü kabul etmek ve korumak için kriptografik mekanizmalar kullandığı toplulukta işlemleri dolaştırır ve dağıtır.

Blockchain Teknolojisi, her türlü dijital tehdit ve arızaya dayanacak kadar sağlam olduğundan siber güvenlik risklerini yönetmek için daha uygundur.

Blockchain'de Python

Python en dinamik ve uyarlanabilir dildir. Yazılım mühendisliğinin herhangi bir alanını adlandırın ve Python, işlevsellikleri nedeniyle her zaman ilk tercihtir. Herhangi bir işlevi yürütmek için diğer dillere kıyasla daha az satıra ihtiyaç duyduğunuz temiz bir söz dizimine sahiptir. Python'un basit söz dizimi hatalar ve hatalarla başa çıkmak için faydalıdır.

Python, geliştirme yolculuğunuzu hızlandıran zengin bir ekosisteme ve çok işlevli kütüphanelere sahiptir. Örneğin, PyCryptodome ve Hashlib gibi kütüphaneler kriptografik ve hesaplamalı işlevler sağlar ve Flask ve Django gibi çerçeveler API'ler ve web uygulama arayüzleri için yararlıdır. Brownie ve Vyper gibi kütüphaneler ise akıllı sözleşme dağıtımı için kullanılır.

Python, C++, Java ve Javascript gibi çeşitli dilleri entegre edebilir. Ayrıca birden fazla API entegrasyonunu destekler. API entegrasyonu, diğer yazılımlar, platformlar ve çerçevelerle işbirlikleri için yararlıdır. Python'un arkasında büyük bir topluluk ve topluluktan övgüye değer bir duyarlı destek sistemi vardır. Çok yararlı açık kaynaklı katkılar ve Python'u türünün tek örneği yapan bir veri bilimi ve analitik platformu vardır.

Kitle

Şimdi asıl soru, Python'un blockchain uygulamaları geliştirmede nasıl kullanılacağıdır.

Daha az endişelenin! Bu makale sizin yardımcınızdır. Burada Python'un Blockchain'de kullanımına ve entegrasyonuna odaklanıyoruz. Tüm yeni başlayan geliştiriciler yolculuklarına bu makaleyle başlayabilir.

Mükemmel bir kurulum ve yapılandırma yönetimine sahip olmaktan mı endişe ediyorsunuz? Sizi düşündük! Python ile Blockchain Uygulaması Oluşturmanın büyüleyici dünyasına derinlemesine dalalım.

Geliştirme Ortamının Kurulması

Geliştirmeye başlamadan önce tüm ön koşullara sahip olmak önemlidir. Bu bölümde, sizi tüm süreçte yönlendireceğiz.

Yapılandırmaya gelince, Python en kolay kurulum sürecine sahiptir.

Gelin buna detaylı bir şekilde bakalım:

Python'u Yükleme

  • Resmi web sitesini ziyaret edin ve en son Python sürümünü indirin: https://www.python.org/downloads/

  • İşletim sisteminize göre indirin (Windows, MacOS, Linux)

  • Python başlatıcısı ile birlikte gelir, bu nedenle kurulum kılavuzunu kontrol edin - Bu, Python'u sisteminize kuracaktır.

Komut satırında (komut istemi veya Terminal) python –version veya python3 –version komutunu kullanarak kurulumu doğrulayın.

Not: Python'un en son sürümü olan 3.12'yi kurduğunuzdan emin olun. Sadece özel yardımcı programlara ihtiyaç duymanız durumunda daha düşük sürümleri kullanın.

Bir IDE Seçimi

Sisteminize Python'u kurmayı bitirdiğinizde dikkat etmeniz gereken bir sonraki şey doğru geliştirme ortamıdır. Bu çok önemli bir adımdır, çünkü herhangi bir yapılandırma tutarsızlığı olmayan uygun bir IDE seçmek gelecekteki tüm projelerinizin temelidir.

İki ana IDE vardır:

PyCharm: Pycharm, JetBrains tarafından geliştirilmiştir ve Python için en popüler IDE'dir. Pycharm, bir geliştirici olarak üretkenliğinizi artıracak çok çeşitli araçlara sahiptir.

Gerçek zamanlı olarak işlevlere göre kod şablonunu tamamlayan akıllı kod tamamlama gibi çeşitli özellikler sunar. Pycharm, hata ayıklama araçları açısından gerçekten çekicidir. Kodun üzerinden geçme, tüm kodu aşağı doğru adımlama, kodun hangi kısmının hata verdiğini görmek için birden fazla kesme noktası ekleme ve değişken denetimiyle birlikte kodun daha küçük kısımlarını çalıştırmak için bir konsol gibi seçenekler sunar.

Pycharm'ı kurma adımları:

  • Resmi web sitesini ziyaret edin ve PyCharm'ı indirin:

  • https://www.jetbrains.com/pycharm/download/?section=mac

  • Şimdi açılan talimatları takip edin.

  • Kurulum tamamlandıktan sonra Pycharm'ı başlatın ve projenizi ve Python yorumlayıcınızı aşağıdaki gibi yapılandırın:

Dosyalar→Ayarlar→Proje→Projeniz→ Proje Yorumlayıcısı'na gidin ve daha önce yüklediğiniz uygun Python sürümünü seçin.

Jupyter Notebook: Jupyter Notebook çevrimiçi bir IDE'dir (web uygulaması). Python ile birlikte bu, metin düzenleme için de kullanılır. Jupyter Notebook, uzantılarıyla birlikte VSCode'da uzaktan çalıştırılabilir.

Jupyter Notebook'u kurma adımları:

  • Komut satırı arayüzünüzü açın: pip install notebook komutunu çalıştırın

  • Jupyter Notebook'u şu komutla başlatın: jupyter notebook

Gerekli Kitaplıkları Yükleme

İşte blockchain geliştirme deneyiminizi geliştirecek bazı kütüphaneler:

  • Flask: Flask, web uygulamaları ve RESTful API'leri oluşturmak için kullanılan bir Python çerçevesidir. Blockchain'de, panolar ve DApp arayüzleri gibi web arayüzleri oluşturmak için kullanılabilir.

    • Flask'ı yükleyin: pip install Flask

  • İstekler: İstekler, HTTP isteklerini ve yanıtlarını işlemek ve göndermek için bir HTTP kütüphanesidir. Blockchain'de, istekler blockchain ağlarına bağlanmak ve sorgulamak için yararlı olabilir.

    • Kurulum istekleri: pip kurulum istekleri

  • Pysha3: Pysha3, SHA3-256 ve SHA3-512 gibi SHA-3 karma algoritmaları için kullanılan en önemli kütüphanedir. Karma, blok zinciri teknolojisinin bütünlüğüne ve güvenliğine katkıda bulunan paha biçilmez bir yönüdür.

    • Pysha3'ü yükleyin: pip install pysha3

  • Web3.py: Web3.py- akıllı sözleşmelerle etkileşim kurma, blok zinciri verilerini sorgulama ve işlem gönderme gibi çok kullanılan ve birden fazla işlevselliğe sahip kütüphanelerin asi olanı. Web3, işlemleri yönetmek için kullanışlı bir Ethereum tabanlı kütüphanedir.

    • web3.py'yi yükleyin: pip install web3

  • Pycryptodome: Pycryptodome, düşük seviyeli kriptografik işlevlere sahip tam teşekküllü bir Python paketidir. Bu kütüphane, karma, şifreleme, şifre çözme ve diğer kriptografik işlemler gibi güvenlik ve veri bütünlüğü için işlevler sağlar.

    • Pycryptodome'u yükleyin:  pip install pycryptodome

  • Pandas: Pandas, blockchain ve işlem kayıtlarını analiz etmek ve görselleştirmek için kullanışlı veri yapıları ve işlevleri paketine sahip, sağlam bir veri analizi ve işleme kütüphanesidir.

    • Pandas'ı yükleyin: pip install pandas

  • SQLAlchemy: SQL bir veritabanıdır ve SQLAlchemy, Python için nesne-ilişkisel eşlemesi olan bir SQL araç takımıdır. Veritabanı işlemlerini ve yüksek seviyeli soyutlamalarla etkileşimleri destekler. Blockchain'in kendisi dağıtılmış bir veritabanı olduğundan bu kitaplık, ilişkisel veritabanını yönetmek ve sorgulamak ve işlem kayıtlarını kullanıcı kimlik bilgileriyle birlikte depolamak için kullanılır.

    • SQLAlacemy'i yükleyin:  pip install SQLAlchemy

  • Numpy: Numoy, Python'un yaygın olarak kullanılan kütüphanesidir ve çeşitli uygulamalara iyi adapte edilmiştir. Herhangi bir sayısal işlem için kullanılır ve diziler, matrisler ve bunlar üzerinde bir dizi fonksiyon ve işlem gibi matematiksel varlıkları destekler. Blockchain'de Numpy, işlem kayıtlarını işlemek ve simüle etmek ve mantıksal algoritmaları hesaplamak için kullanılabilir.

    • Numpy'ı yükleyin: pip install numpy

Blockchain Kavramlarını Anlamak

Blockchain'i anlamak için bir benzetme yapacak olursak, bu, birden fazla yerde saklanan tarihsel veri tabanına benzetilir; her yer eşit derecede önemlidir ve hiçbir varlık ağa tek başına hakim değildir.

Blockchain yapısını derinlemesine incelerseniz ve anlarsanız, şöyle görünür:

Bloklar(İşlemler)——–***Zincirler***——-Bloklar.

Üç bileşeni vardır:

  • Bloklar: Bloklar, bilgi veya işlem tutan hücrelerdir. Blok, belirli işlemlerin listesini depolar. Bloklar oluşturulabilir veya çeşitli fikir birliği mekanizmaları kullanılarak çıkarılabileceğini söyleyebiliriz. Her bloğun, karma olarak da bilinen kendine özgü tanımlayıcılar kümesi vardır. Karma tekniği, bloklardaki verileri şifrelemek için yararlıdır.

  • İşlem: İşlemler, blockchain ağı içerisinde çeşitli notlar arasında gerçekleşen veri para birimlerinin değişimidir. İşlem ayrıntıları, konsensüs olarak bilinen bir protokol kümesiyle uyumlu bir blokta saklanır.

  • Zincirler: Bildiğimiz gibi blok zincirleri, blokları arasında bağlantıları olan bağlı listelerle bir benzetmeye sahiptir. Bu bağlantılar zincirler olarak da bilinir. Bağlı listedeki her işaretçi tüm bağlantılar aracılığıyla bağlı olduğundan, aynı şey bloklar için de geçerlidir. Bunlar, bir önceki bloğun karmasıyla birbirine bağlanan bir dizi bloktur ve bu da veri bütünlüğünün ve blok zincirinin güvenliğinin korunmasını sağlar. Değişikliklerin amacı yalnızca önceki ve sonraki blok arasında bağlantı görevi görmek değil, aynı zamanda karma ve kriptografik ilkelerle birlikte bağlantıları vermektir.

Merkeziyetsizliğin, değişmezliğin ve mutabakat mekanizmalarının önemi:

  • Merkeziyetsizlik: Merkeziyetsizlik, blockchain'in en önemli özelliğidir. Bu mekanizmada, tek bir varlık tüm veritabanı üzerinde kontrole sahip değildir ve bu da blockchain sisteminin herhangi bir tutarsızlık nedeniyle başarısız olmasını önler. Merkeziyetsizlik nedeniyle taraflı bir sisteme sahip olmak neredeyse imkansızdır. Cihazdaki her katılımcı blockchain'in bir kopyasını tutar. Bu, şeffaflığı sağlar ve merkezi başarısızlığı veya manipülasyonu engeller.

  • Değiştirilemezlik: Veriler blok zincirine yazıldıktan sonra, sonraki tüm bloklar değiştirilmeden değiştirilemez. Blok zincirindeki sonraki tüm blokları değiştirmek hesaplama açısından pahalı ve çok verimsizdir ve başarısızlığa yol açar. Herhangi bir blokta değişiklik kriptografik karma yoluyla yapılmalıdır. Dolayısıyla bir kez yapılan tüm değişiklikler geri alınamaz ve blok zinciri değiştirilemez hale gelir.

  • Mutabakat Mekanizmaları: Blockchain'in tüm gerekliliklerini yöneten bir protokol kümesi. Ağdaki tüm düğümlerin yöntemler konusunda anlaşması gerekir. Mutabakat mekanizmaları, düğümleri düzene sokmak ve ağdaki tüm düğümlerin aynı sayfada olduğundan emin olmak için kullanılır.

Basit Bir Blockchain Oluşturma

Blok Sınıfını Oluşturma

Yukarıdaki kodda, tüm nitelikler için bir Block sınıfı tanımladık.

Blok yapısı:

  • Dizin: Dizin, bloğun blok zincirindeki konumunu temsil eden bir tam sayıdır. Dizinleme, blok zincirinin sırasını belirlemeye yardımcı olur.

  • Genesis bloğu, index=0 olan başlangıç ​​bloğudur.

  • Zaman damgası: Zaman damgası, bloğun oluşturulduğu örneği bir dize biçiminde depolar. Bu, bloğun ne zaman çıkarıldığı veya blok zincirine ne zaman eklendiği gibi bloğun kaydının tutulmasına yardımcı olur.

  • İşlemler: Bunlar, her İşlemin katılımcılar arasında bir veri veya değer transferini temsil ettiği İşlem nesnelerinin vektörleri olarak gösterilir. Blokta yer alan tüm işlemleri depolar.

  • Önceki karma ve Karma: Önceki karma, bir önceki bloğun kriptografik karmasını depolar, karma ise karıştırılmış veya karma haline getirilmiş bir kriptografik bilgi dizisidir.

Bloğun hash değerini hesaplamak için SHA3-256 yöntemini kullandık.

Blockchain Sınıfının Oluşturulması

Zinciri yönetmek için bir Blockchain sınıfı ve yeni bloklar eklemek için yöntemler tanımlayın.

Yukarıdaki kod örneğinde genesis block – blockchain'deki ilk bloktur, get_latest_block- son bloğu döndürür ve add_block- yeni bir blok ekler.

İş Kanıtını Uygulama

Konsensüs algoritmaları, katılımcıların blokları ekleme ve ağa yenilerini oluşturma konusunda anlaşması gereken kurallardır. Aşağıdaki gibi çeşitli mekanizmalar vardır:

Hisse Kanıtı: Bu, doğrulayıcıların sahip olmaya hazır olduğu eskiye dayanır. Bloğu oluşturmak veya doğrulamak karşılığında hisse ne kadar yüksekse doğrulayıcının seçilme olasılığı da o kadar yüksektir.

İş Kanıtı: İş Kanıtı ilk olarak Bitcoin'de tanıtıldı ve o zamandan beri güvenlik mekanizmalarından biri olarak yaygın bir şekilde benimsendi. PoW'da katılımcılar zor bir kriptografik bulmacayı çözmek için birbirleriyle yarışırlar. İş Kanıtı'nın çalıştığı birkaç adım vardır:

  • Bir Blok Oluşturma: Madenciler gerçekleştirilecek işlemleri toplar ve bunları bir blokta toplar

  • Bloğun karma hale getirilmesi: İlk olarak Madenci bir nonce belirler, bu nonce daha sonra bir kriptografik fonksiyondan geçirilir ve blok benzersiz bir tanımlayıcı ile karma hale getirilir.

  • Madencilik: Madencilik, ağın zorluk gereksinimini karşılayan mükemmel karmayı bulmak için nonce'u tekrar tekrar değiştirmektir.

  • Bloğun Yayınlanması: Geçerli bir karma değer elde ettiğinizde, madenci bloğu ağa yayınlar ve diğer katılımcılar bunu doğrular.

  • Bloğun Blockchain'e Eklenmesi: Eğer bloğun geçerli olduğu tespit edilirse Blockchain'e eklenir ve madenci ödüllendirilir.

  • Zorluğun ayarlanması: Ağ, toplam hesaplama gücündeki değişikliklere rağmen blokların tutarlı bir oranda çıkarılmasını sağlamak için PoW bulmacasının zorluğunu periyodik olarak ayarlar.

Diğerleri: Delegelerin seçildiği Delegated Proof of Stake olarak bilinen DPos ve Bizans Hata Toleransı (PBFT) gibi diğer algoritmalar da vardır.

Blockchain'e İş Kanıtı Ekleme

Block sınıfını bir proof niteliği ve proof_of_work metodunu içerecek şekilde değiştirin:

Kanıtı add_block fonksiyonu aracılığıyla doğrulamak için Blockchain sınıfını güncelledim.

Flask ile Basit Bir Blockchain API'si Oluşturma

1. Flask'ı Kurma

Flask'ı yükleyin:pip install Flask

2. API'yi Oluşturma

Bir Flask uygulaması oluşturun ve blok eklemek ve blok zincirini görüntülemek için uç noktaları tanımlayın.

Uygulamayı Çalıştırma ve Test Etme

1. Flask Uygulamasını Çalıştırma

Flask uygulamasını çalıştırın:(komut satırınızda)python app.py

2. Postman ile test etme

Bir blok ekleyin: curl -X POST -H “Content-Type: application/json” -d ‘{“data”: “Some data”}’ http://localhost:5000/mine

Blockchain'i görüntüleyin: curl http://localhost:5000/chain

Yukarıdaki yorumlardan anlaşılacağı üzere uygulama localhost:5000/chain üzerinde barındırılacaktır.

Blockchain Uygulaması Oluşturmanın Canlı Örneği

1. Adım Adım Uygulama

Aşağıda blockchain uygulamasını geliştirmek için gereken tüm işlemlerin canlı ve tam bir yığını verilmiştir: