Plutus ile Blockchain Uygulaması Oluşturmak

Plutus ile Blockchain Uygulaması Oluşturmak

Giriş

Tebrikler! Plutus ile blockchain geliştirme dünyasına heyecan verici bir yolculuğa çıktınız. Orada bulunmuş biri olarak size bunun sadece kod yazmaktan daha fazlası olduğunu söylemeliyim; bu, endüstrileri yeniden şekillendirebilecek merkezi olmayan sistemlerin temellerini inşa etmekle ilgili.

Blok zincirleri, merkezi olmayan ve şeffaf çözümler sunarak birçok sektörde önemli bir etki yaratıyor. Geliştirme teknolojisindeki evrim, hem geliştiriciler hem de topluluklar için ortamı önemli ölçüde değiştirdi. Blockchain, merkeziyetsizliğin ötesinde, daha hızlı işlem süreleri ve üçüncü taraf doğrulama ihtiyacını ortadan kaldırarak dolandırıcılık ve siber tehditleri azaltma gibi avantajlar sunar. Geliştiriciler için blockchain uygulama geliştirmede uzmanlaşmak, özellikle Plutus gibi sağlam araçlarla çalışırken değerli bir beceridir. Plutus, Cardano blok zincirinde yer alan, güvenli ve verimli merkezi olmayan uygulamalar (DApp’ler) oluşturmak için güçlü bir temel sağlayan akıllı bir sözleşme platformudur.

Cardano nedir?

biri işlemleri ve hesapları yönetmek için, diğeri ise akıllı sözleşmeleri ve hesaplamaları yönetmeye adanmıştır. Cardano’nun nihai hedefi, öncekilerle karşılaştırıldığında gelişmiş güvenlik, ölçeklenebilirlik ve uyarlanabilirlik sunan bir blockchain platformu geliştirmektir. Gelişmekte olan pazarlarda tedarik zinciri yönetimi, dijital kimlik doğrulama ve finansal hizmetler gibi çeşitli sektörlerde uygulama alanı bulmaktadır.

Plutus

Daha basit bir ifadeyle Plutus, Cardano platformunda sözleşmeler oluşturmaya yönelik bir dildir. İşlevsel bir programlama dili olan Haskell üzerine inşa edilmiştir; bu, Plutus Core’u doğrudan yazmadığınız anlamına gelir; bunun yerine komut dosyaları, Haskell derleyicisindeki bir eklenti tarafından otomatik olarak oluşturulur. Bu özellik, sözleşmenin doğruluğunu sağlamak ve güvenliği artırmak için matematiksel kanıtları kullanan resmi doğrulamaya izin vererek akıllı sözleşmedeki olası hataları azaltır.

Plutus, Cardano blok zincirinde sorunsuz bir şekilde çalışarak geliştiricilerin Cardano’nun veritabanı ve altyapısıyla doğrudan etkileşime geçmesine olanak tanır. Bu, Cardano ağıyla doğrudan etkileşime girebilecek akıllı sözleşmelerin geliştirilmesini ve dağıtılmasını kolaylaştırır. Plutus, tam bir Cardano düğümüne ihtiyaç duymadan akıllı sözleşmeleri simüle etmek için araçlar sunarak, ana ağda başlatılmadan önce deneme yapılmasına olanak tanır. Plutus, sağlam ve verimli merkezi olmayan uygulamalar oluşturmayı amaçlayan geliştiriciler için ideal bir seçimdir.

Kitle

Bu makale, minimum kodlama deneyimi ile blockchain programlamaya girişen acemi geliştiricilere hitap etmektedir. Çalışma alanınızı yapılandırma, temel blockchain ilkelerini kavrama ve Plutus’u başlangıç ​​noktası olarak kullanarak temel bir blockchain uygulaması oluşturma konusunda size adım adım rehberlik edeceğiz.

Geliştirme Ortamını Kurma

Gelişim serüveniniz için ideal bir hazırlıkla başlamak çok önemlidir. Dolayısıyla Plutus’a destekleyici bir ortam oluşturmak bu aşamanın temelini oluşturur.

1. Plutus’u Yükleme

Plutus’u resmi depodan indirin: 

git klonu https://github.com/input-output-hk/plutus-apps.git
cd plutus-apps
nix-kabuk

Kurulumu şunu kullanarak doğrulayın: plutus -v

2. IDE seçme

Plutus ile uygulama geliştirirken doğru IDE’ye sahip olmak çok önemlidir. Plutus Haskell’i temel aldığından Haskell’i destekleyen bir IDE’ye sahip olmanız önerilir. Plutus geliştirme için iki popüler seçenek Visual Studio Code (VS Code) ve Plutus Playground’dur. Burada Plutus geliştirme için bu IDE’lerin nasıl kurulacağı ve kullanılacağı hakkında genişletilmiş bir kılavuz bulunmaktadır.

Kod Düzenleyici Seçeneği: VSCode veya Visual Studio Code, hemen hemen her programlama diliyle çalışan ve kullanışlı uzantılar sunan popüler ve uyarlanabilir bir metin düzenleyicisidir. Bu, geliştiricilerin kodlama görevleri için oldukça tercih edilmesini sağlar. Açık kaynaklı VSCode, kodlama sürecinizi kolaylaştırmak için kapsamlı bir araç ve özellik paketi sunar.

VSCode’u kurma adımları:

  • VSCode’u resmi siteden indirin (işletim sisteminize göre)
  • Yazılımı yükleyin
  • Plutus Haskell üzerine inşa edilmiştir, bu nedenle Glasgow Haskell Derleyicisini (GHC) ve grubu (Haskell için bir derleme aracı) içeren Haskell Platformunu yüklemeniz gerekir.
  • Haskell’i indirin
  • VS Code’a Haskell uzantılarını yükleyin (Haskero,Haskell Syntax Higlighting, vb.)
  • Uzantıları yapılandırın ve ek uzantılar ayarlayın
  • Plutus’u zaten yüklediğinize göre, başlamaya hazırsınız!

Çevrimiçi Plutus Düzenleyici: Çevrimiçi Plutus Düzenleyici, Plutus akıllı sözleşmelerinin yazılması için özel olarak tasarlanmış kullanışlı, web tabanlı bir çalışma alanı olarak hizmet eder. Kurulum gerektirmediği için yeni başlayanların kodlama becerilerini güvenle geliştirmeleri için ideal bir başlangıç ​​noktasıdır.

Plutus Playground web sitesini ziyaret edebilir ve hemen başlayabilirsiniz!!

Her iki senaryoda da Plutus’un geliştirilmesi üzerinde verimli bir şekilde çalışabilirsiniz. Kapsamlı projeler için Visual Studio Code’u kullanarak, hızlı test ve kavramsallaştırma için Plutus Playground’dan yararlanarak ve böylece her ortamın avantajlarından yararlanarak üretken bir yaklaşım keşfedebilirsiniz.

3. Gerekli Kitaplıkları Yükleme

Plutus’un geliştirilmesi için gerekli kütüphaneleri kurmak için cabal’ı kullanın.

Plutus ile Blockchain Kavramlarını Anlamak  

Daha basit bir ifadeyle Blockchain, işlem verilerini depolamak için kullanılan karmaşık, ağ bağlantılı bir sistemdir. Bilginin tek bir konumda bulunduğu geleneksel veritabanları yerine bu sistem, verileri birden fazla bilgisayara yayar. Depolanan verilerin her bir parçası (veya “blok”), karmaşık matematiksel ilkeler kullanılarak diğer bloklara bağlanır ve bir kez kaydedildikten sonra bu blokların, sonraki bloklarda sorun yaratmadan değiştirilmesi zordur. Bu tasarım, dijital para birimlerinin kayıtlarının değiştirilmeden ve güvende kalmasını sağlar.

Blockchain’in üç temel bileşeni vardır:

  • Bloklar: Bloklar, meta verilerle birlikte işlemlerle ilgili bilgileri içerir. Tüm bloklar, bir blok zinciri oluşturan karma yoluyla birbirine bağlanır, dolayısıyla blockchain 
  • İşlemler: İşlem, verilerin blockchain içindeki bir varlıktan diğerine aktarılmasıdır. Plutus’ta işlemler Haskell’de yazılır ve giriş ve çıkış UTXO’larını (Harcanmamış İşlem Çıkışları) içerir.
  • Zincirler: Plutus’ta zincir, işlemlerin sırasını korur ve onaylandıktan sonra bunların değişmez olmasını sağlar.

Aşağıdaki kod parçasında Plutus’taki Bloğun yapısını görebiliriz:

Plutus ile Blockchain Uygulaması Oluşturmak

Bloğun her bileşeni veri türüyle birlikte belirtilir

  • İndeks, bir bloğun konumunu söyleyen bir tam sayıdır
  • Zaman damgası bloğun oluşturulduğu zamandır
  • İşlemler, belirli bir blokta yer alan tüm işlemlerin dizisi veya listesidir
  • Hash benzersiz bir kalıptır ve bir bloğu tanımlamanın birincil anahtarıdır
  • Önceki hash sürekliliği ifade eder ve son bloğun hash’idir.

Bu kod parçasında Plutus’taki İşlemlerin yapısını görebiliriz:

Plutus ile Blockchain Uygulaması Oluşturmak

Merkezi Olmama, Değişmezlik ve Konsensüs Mekanizmaları:

Blockchain’in gücü üç temel unsura dayanmaktadır: dağıtım, kalıcılık ve anlaşma sistemi.

Merkeziyetsizlik: Merkeziyetsizlik, Blockchain’deki veri tabanı üzerinde tek bir varlığın gücünün olmadığı bir özelliği ifade eder. Bu kurulum, katılan her cihazın (veya düğümün) blok zincirinin bir kopyasını saklaması nedeniyle sistemin çökmesini ve önyargılı olmasını son derece düşük bir ihtimal haline getirir. Bu, şeffaflığı sağlar ve merkezi arızaları veya izinsiz müdahaleleri önler.

Blockchain’in değişmezliği, üzerine yazılan verilerin değişmeden ve silinmez kalması anlamına gelir. Bilgiler kaydedildikten sonra, kriptografik karma işlemi sayesinde sonraki tüm blokları etkilemeden değiştirilemez veya silinemez. Bu, yapılan değişiklikler geri alınamayacağı anlamına gelir ve tüm sistemi değiştirilemez hale getirir.

Blockchain Consensus Protokolü: Bir blockchain ağının çeşitli yönlerini yöneten kurallar koleksiyonu. Bu protokoller, ağdaki tüm katılımcı düğümlerin, kullanılan yöntemler konusunda hemfikir olmasını gerektirir. Mutabakat mekanizmaları bu düğümleri senkronize etmeye ve hepsinin aynı kurallar altında çalışmasını sağlamaya hizmet eder.

Plutus ile Basit Bir Blockchain Oluşturmak

Herhangi bir blockchainin temel yapı taşına ‘blok’ denir. Bu özel kod parçasında, kendisini oluşturan parçalarla birlikte bir ‘blok’ veri yapısı oluşturduk.

Blockchain geliştirmeye odaklanan bir araştırmacı olarak blockchain sistemimizin bütünlüğünü korumanın öneminin farkındayım. Bunu başarmak için zincirdeki her bloğun farklı bir hash’e sahip olması çok önemlidir. Bu amaçla Plutus kullanarak bu hashleri ​​hesaplamak için alanda yaygın olarak tanınan ve güvenilen SHA256 hash yöntemini kullanıyoruz.

Plutus ile Blockchain Uygulaması Oluşturmak

Bir bloğun neyi gerektirdiğini tanımladıktan sonra, herhangi bir blok zincirinde ilk blok görevi gören bir oluşum bloğu kullanarak blok zincirinizi kurmaya devam edin. Tebrikler! Artık bir blockchain oluşturdunuz ancak yapılacak daha çok iş var: yeni bloklar eklemeniz ve en güncel olanı da almanız gerekecek.

Devam edin ve yardıma ihtiyacınız olması durumunda aşağıdaki koda bakın!

Plutus ile Blockchain Uygulaması Oluşturmak

Plutus’ta Uzlaşı Mekanizmalarının Uygulanması

Cardano başlangıçta Proof of Work mekanizması üzerinde çalışıyordu ancak daha sonra Proof of Stake sistemine geçti. Özellikle Plutus, Cardano’nun Ouroboros PoS protokolüyle uyumluluk göz önünde bulundurularak tasarlandı. Bu tasarım, merkezi olmayan uygulamalar (DApp’ler) için ölçeklenebilirlik, enerji verimliliği ve güvenlik sağlar.

Plutus ile çalışabilecek fikir birliği algoritmalarına genel bir bakış:

  • Ouroboros: Ouroboros, Plutus’un son derece uyumlu olduğu bir Proof of stake mekanizmasıdır ve doğrulayıcıların yeni bir bloğu doğrulamak için almaya istekli oldukları ADA hissesine bağlıdır. Plutus sözleşmeleri Ouroboros protokolüyle sorunsuz bir şekilde etkileşime girerek akıllı sözleşmelerin yürütülmesinin güvenli ve enerji açısından verimli kalmasını sağlar.
  • İş Kanıtı: PoW en eski mekanizmadır ve tüm eski kripto para birimlerinde yaygın olarak kullanılmıştır. Plutus durumunda hala kağıt üzerinde uygulanabilir. Eğitimsel amaçlar ve deneysel amaçlar gibi izole senaryoları düşünürken bu daha faydalı olacaktır.
  • Yetkili çalışma kanıtı ve Bizans hata Toleransı: Bu mekanizmalar özellikle Cardano ile uyumlu değildir ancak yine de teorik olarak Plutus’ta uygulanabilir.

Bu bölümde Proof of Work’ün Plutus’ta nasıl kullanılacağını inceleyeceğiz.

Plutus ile Blockchain Uygulaması Oluşturmak

Proof of Work sisteminde madenciler önce karmaşık bir matematik problemini çözmek için birbirleriyle yarışırlar, bu da onlara yeni bir madalyonun yaratımını doğrulama hakkını verir. Bu kod parçasında, iş kanıtı işlevi ‘nonce’ adı verilen belirli bir sayıyı arar; bu sayı önceki bloğun karma değeriyle birleştirildiğinde başlangıçta önceden belirlenmiş miktarda sıfırla başlayan yeni bir karma oluşturur. Bu, geçerli bir nonce bulmayı kolaylaştırmak veya zorlaştırmak için zorluk seviyesinin kendisini ayarladığı basit bir PoW örneğidir.

İş Kanıtı kurulumunu tamamladıktan sonra, bunun yerine çıkarılan kanıtın kimliğini doğrulamak için blok zincirini değiştirmek önemlidir.

İşte örnek kod pasajı:

Plutus ile Blockchain Uygulaması Oluşturmak

Bu işlev, yalnızca kanıtı doğrulandığında blok zincirine yeni bir bloğun eklenebileceğini garanti eder, böylece zincirin orijinalliği ve tutarlılığı korunur.

Plutus ile Basit Blockchain API’si Oluşturma  

Bu bölümde, Plutus aracılığıyla geliştirilen bir blockchain uygulamasıyla iletişim kurmak için temel bir API oluşturma konusunda size rehberlik edeceğiz. Bu API iki amaca hizmet eder: kullanıcıların yeni bloklar eklemesine olanak tanır ve HTTP sorguları göndererek blok zincirini keşfetmeye erişim sağlar.

API oluşturma adımları:

  • API için Ortamı Ayarlayın: Haskel’i yükleyin (Bu zaten yapıldı), ardından Cabal’ı kullanarak Servant’ı yükleyin
  • Gerekli tüm kütüphaneleri indirin:
    • Hizmetçi: API’yi oluşturmak için
    • JSON’u kodlamak ve kodunu çözmek için Aeson: cabal install aeson plutus-core
    • Tüm kodu ve mantığı entegre etmek için Plutus

Başlangıçta, API’yi oluştururken yeni bir blok ekleyerek ve blok zincirinin mevcut durumunu askıya alarak işleri başlatalım. Bu eylemler önceki bölümlerde ayrıntılı olarak açıklandığı gibi zaten gerçekleştirilmiştir.

Artık devam edip uç noktaları tanımlayabilirsiniz:

{-# LANGUAGE DataKinds #-}{-# LANGUAGE TypeOperators #-}module BlockchainAPI Whereimport Servantimport Control.Monad.IO.Class (liftIO)— Blok türünü tanımlayın (Bölüm 3’e bakın)data Block = Block  { dizini :: Int , timestamp    :: String  , dataField    :: String  , öncekiHash :: String  , hash         :: String } türetme (Show, Eq)— Blockchain yalnızca Blockstype Blockchain’in bir listesidir = [Block]— API türünü tanımlayın BlockchainAPI = “addBlock” :> ReqBody ‘[JSON] Block :> Post ‘[JSON] Blockchain:<|> “chain” :> Get ‘[JSON] Blockchain— Blockchain için yer tutucu, başlangıçta yalnızca oluşum blokgenesisBlock = Blok 0 ile başlayarak “2024-09-12 00:00:00” “Genesis Block” “0” “some_hash”initialBlockchain:: BlockchaininitialBlockchain = [genesisBlock]– API uç noktaları için işleyicilersaddBlockHandler :: Blockchain -> Blok -> İşleyici BlockchainaddBlockHandler blockchain newBlock = dolet newBlockchain = blockchain ++ [newBlock]    liftIO $ putStrLn “Blok eklendi!”    return newBlockchain— ChainviewChainHandler’ı almak için işleyici :: Blockchain -> İşleyici BlockchainviewChainHandler blockchain = APIapp’ı çalıştırmak için blockchain-Ana giriş noktasını döndürür :: Applicationapp = serve (Proxy :: Proxy BlockchainAPI) (blockchainServer başlangıçBlockchain)

Yukarıdaki kodun açıklaması:

  • Blok önceki bölümlere benzer şekilde tanımlanmıştır
  • Servant kütüphanesi API’nin yapısını tanımlamak için kullanılır. API uç noktalarını tanımlamanın iki yöntemi vardır; GET ve POST, sırasıyla blok zincirini almak ve eklemek anlamına gelir.
  • Ayrıca eklenen yeni blokları işlemek ve diğer bloğu görüntüleyen viewChainHandler) işleyicilerini (addBlockHandler) tanımladık.
  • Sonunda, kodun kalbi olan, her şeyi birbirine bağlayan ve API sunucusunu çalıştıran bir ana işlev vardır.

API tanımına göre Uç Noktaları dahil etmenin ve Blockchain Uç Nokta ayrıntılarını toplamanın iki yolu vardır.

Plutus ile Blockchain Uygulaması Oluşturmak

Yaşasın! Bu bölümü etkili bir şekilde entegre ederek API’yi Cabal ile çalıştırmanıza olanak tanıdınız. Her şey hazır gibi göründüğü için bir sonraki aşamaya güvenle geçin!

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

Blockchain API’sinin oluşturulmasının ardından bazı testleri çalıştırmaya devam edelim. API ile etkileşime geçmek için Postman veya curl gibi araçları kullanabiliriz ve API’nin düzgün çalıştığının doğrulanmasını sağlayabiliriz.

Uygulamayı Çalıştırma ve Test Etme Adımları:

  • Programı derleyin ve çalıştırın:  cabal build   cabal run
  • Sunucuyu başlatın: API http://localhost:8080 adresinde bulunmalıdır
  • Blok uç noktalarını test edin ve ekleyin

 “dizin”: 1,  
“zaman damgası”: “2024-09-12 12:30:00”, 
 “dataField”: “Bu benim yeni bloğum”,  
“öncekiHash”: “some_hash”,  
“hash”: “new_block_hash”

Blockchain’i görüntüle

curl http://localhost:8080/chain

Bir araştırmacı olarak, artık Plutus kullanılarak hazırlanmış bir API ile çalışan temel bir blockchain uygulamasını başarıyla kurdum. Bu API, diğer uygulamaların veya kullanıcıların blok zincirimle sorunsuz bir şekilde etkileşim kurmasını sağlayarak onlara yeni bloklar ekleme ve blok zincirinin mevcut durumunu denetleme olanağı sağlar.

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

Plutus ile Blockchain Uygulaması Oluşturmak
Plutus ile Blockchain Uygulaması Oluşturmak
Plutus ile Blockchain Uygulaması Oluşturmak

Yukarıdaki Kod pasajı, aşağıdakilerin Adım Adım Yürütülmesidir:

  • Adım 1: Plutus sözdizimini kullanarak gerekli özniteliklerle Block veri türünü oluşturun.
  • Adım 2: account_hash yöntemini uygulayın.
  • Adım 3: Blockchain veri tipini tanımlayın ve onu bir oluşum bloğuyla başlatın.
  • Adım 4: Plutus’u kullanarak yeni bloklar eklemek ve en son bloğu almak için yöntemler uygulayın.
  • Adım 5: Blok veri türüne İş Kanıtı işlevini ekleyin ve Blockchain veri türünü güncelleyin.
  • Adım 6: API ortamını Plutus kullanarak istekleri işleyecek şekilde ayarlayın.
  • Adım 7: Yeni bir blok madenciliği yaparak ve Postman veya Curl kullanarak blok zincirini doğrulayarak uygulamayı test edin

Tebrikler! Modülün sonuna ulaştınız ve Plutus’un tüm temellerini öğrendiniz.

Plutus ile blockchain programlamayı keşfetmek yalnızca kodlamayla ilgili değildir; çeşitli sektörlerde devrim yaratabilecek merkezi olmayan sistemlerin temel yapısını şekillendirmekle ilgilidir. Eğitiminize devam edin ve kodlama yolculuğunuzun tadını çıkarın!

Ayrıca Şuna da Bakın: Kendi Kripto Para Biriminizi Nasıl Tasarlar, Geliştirir ve Kullanırsınız: Adım Adım Kılavuz

Sorry. No data so far.

2024-09-14 10:24