Türkçe Plutus Kurulum ve dApp Geliştirme Rehberi

tarafından

tarihinde yayınlandı.

|

, ,
Cardano Türkiye Türkçe Plutus Kurulum ve dApp Geliştirme Rehberi

Plutus Nedir?

Plutus, Cardano Blockchain’inde akıllı sözleşmeler yazmak için kullanılan Haskell tabanlı bir programlama dilidir.

Güvenli ve doğrulanabilir (Haskell tabanlı ve hata payı oldukça düşük), merkeziyetsiz ve şeffaf, hızlı ve düşük maliyetli işlem gücüne sahip.

Plutus’u çalıştırmak için ihtiyacımız olan şeyler:

1- İşletim Sistemi (Windows + WSL) Not: Bu yazıda sadece Windows üzerinde çalıştırmayı göstereceğim.
2- Terminal PowerShell
3- Nix Paket Yöneticisi (Plutus ortamını kurmak için kullanacağız)
4- Git ve Geliştirme Araçları
5- Yerel Plutus Ortamı

Windows Kullanıcıları İçin (WSL2 + Ubuntu)

Windows Subsystem for Linux (WSL2) kullanarak Ubuntu’yu çalıştırmak genellikle en çok tercih edilen yöntemdir.

1- PowerShell’i Yönetici Olarak Çalıştırın
2- WSL2’yi Etkinleştirin:

Daha detaylı bilgi burada bulunabilir.

wsl --install
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

Daha sonra, bilgisayarınızı yeniden başlatın

3- Gerekli Dosyaları Güncelleyin:

WSL güncellemesi varsa indirin ve yükleyin:

Yükleme tamamlandıktan sonra PowerShell’de şu komutları çalıştırın:

wsl --set-default-version 2

WSL sürümünüzü doğrulamak için:

wsl --list --verbose

4- Ubuntu’yu İndirin ve Kurun

Ubuntu 22.04 LTS WSL İmajını İndirin:

İndirilen dosyayı çalıştırın.
Bu işlem tamamlandığında Ubuntu terminali açılacak ve sizden bir kullanıcı adı + şifre belirlemenizi isteyecek.

Daha sonrasında Paketleri Güncelleyin ve Gerekli Araçları Yükleyin:

sudo apt update && sudo apt upgrade -y
sudo apt install curl git build-essential jq -y

5- Nix Paket Yöneticisini Yükleyin:

Nix’i yükleyin:

sh <(curl -L https://nixos.org/nix/install) --daemon

Terminali kapatıp tekrar açın, ardından şu komutlarla kurulumun başarılı olup olmadığını kontrol edin:

nix --version
nix-env --version

Eğer bir sürüm numarası görüyorsanız, Nix doğru şekilde kurulmuştur!

6- Git Kurulumu ve Plutus Reposunun İndirilmesi

Git’in kurulu olup olmadığını kontrol edin, eğer yüklü değilse yükleyin:

sudo apt install git -y
git --version

Plutus reposunu klonlayın:

git clone https://github.com/input-output-hk/plutus.git

Plutus klasörüne girin:

cd plutus
Cardano Türkiye Türkçe Plutus Kurulum ve dApp Geliştirme Rehberi
Dilerseniz Plutus Playground üzerinden de proje oluşturup, deneme yapabilirsiniz. Ancak şu aralar biraz sıkıntılı.

“Plutus üzerinde dApp geliştirme”

Plutus üzerinde bir dApp yazmak için her şey hazır gözüküyorsa, başlayabiliriz:

Proje Oluşturma

İlk olarak, projemiz için bir dizin oluşturalım, ben basit bir sertifikasyon dApp’i geliştirmek istiyorum:

mkdir plutus-certification-dapp
cd plutus-certification-dapp

Plutus ortamını çalıştırmak için:

nix-shell

Akıllı Sözleşmeyi Yazma

Yeni bir Haskell dosyası oluşturun:

nano CertificationContract.hs

Aşağıdaki kod ile sertifikanın sahibi ve ID’sı gibi verileri girdikten sonra. Bu verileri zincir üzerinde kontrol edecek ve doğrulayacak akıllı sözleşmeyi yazıyorum. Yanlış bir adres ile erişilmeye çalışıldığında hata vermesini istiyorum:

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE NoImplicitPrelude #-}
module CertificationContract whereimport PlutusTx
import PlutusTx.Prelude
import Ledger
import Ledger.Typed.Scripts
import Playground.Contract-- Sertifika veri tipi
data CertificationDatum = CertificationDatum
{ owner :: PubKeyHash -- Sertifika sahibi
, certId :: Integer -- Sertifika ID'si
}
PlutusTx.unstableMakeIsData ''CertificationDatum-- Sertifikayı doğrulayan akıllı sözleşme
{-# INLINABLE mkCertificationValidator #-}
mkCertificationValidator :: CertificationDatum -> () -> ScriptContext -> Bool
mkCertificationValidator datum _ ctx =
traceIfFalse "Hatalı Eslesme" (txSignedBy info (owner datum))
where
info = scriptContextTxInfo ctx-- Akıllı sözleşmenin derlenmesi
data Certification
instance Scripts.ValidatorTypes Certification where
type instance DatumType Certification = CertificationDatum
type instance RedeemerType Certification = ()typedValidator :: Scripts.TypedValidator Certification
typedValidator = Scripts.mkTypedValidator @Certification
$$(PlutusTx.compile [|| mkCertificationValidator ||])
$$(PlutusTx.compile [|| wrap ||])
where
wrap = Scripts.wrapValidator @CertificationDatum @()validator :: Validator
validator = Scripts.validatorScript typedValidatorvalHash :: Ledger.ValidatorHash
valHash = Scripts.validatorHash typedValidatorscrAddress :: Ledger.Address
scrAddress = scriptAddress validator

Sonuç olarak;
Kullanıcıların PubKeyHash (cüzdan adresi) ve sertifika ID’si ile birer sertifika kaydedebilmelerini sağlayacağız.
Kullanıcı, yalnızca kendisine ait bir sertifikayı doğrulayabilecek, ve yanlış cüzdan adresiyle doğrulama yapıldığı vakit işlem başarısız olacak.

Cardano CLI ile dApp’i Test Etme

Öncelikle Cardano CLI aracını yükleyelim:

sudo apt install cardano-cli -y

Bir Kullanıcı İçin Sertifika Oluşturma

Bir test cüzdanı için sertifika oluşturalım

cardano-cli address key-gen --verification-key-file user.vkey --signing-key-file user.skey
USER_PKH=$(cardano-cli address key-hash --payment-verification-key-file user.vkey)

Sertifikayı Blockchain’e ekleyelim:

cardano-cli transaction build \
--tx-in <TX_ID>#0 \
--tx-out "$(cat user.addr) + 1000000 lovelace" \
--tx-out "$(cat script.addr) + 2000000 lovelace" \
--change-address $(cat user.addr) \
--out-file tx.raw

💡 Burada <TX_ID> kısmını, kullanıcının sahip olduğu bir UTXO ile değiştirmeliyiz.

Ardından işlemi imzalayıp gönderebiliriz:

cardano-cli transaction sign --signing-key-file user.skey --tx-body-file tx.raw --out-file tx.signed
cardano-cli transaction submit --tx-file tx.signed

Böylelikle, sertifika blockchain’e yüklenir!

Bu dApp sayesinde, kullanıcılar sertifikalarını doğrulayabilir, İzni olmayan bir kullanıcı doğrulama yapamaz.

Basit bir şekilde Plutus üzerinden sertifika kayıt sistemi oluşturduk. Bir de bu dApp için bir frontend arayüzü gerekiyor şimdi…

Bir Cevap Yazın


Hey!

Cardano Türkiye’nin resmi internet sitesine hoş geldin!
Burada Cardano hakkında teknik içeriklere Türkçe olarak erişebilirsin!

Sosyal medyada bizi takip etmeyi unutma!


Bültenimize Kaydolun!

Cardano hakkındaki güncellemeleri Türkçe olarak edinin!

Cardano Türkiye sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya Devam Edin