Leo Dili ile Basit Bir Banka Uygulaması

kuzeydurden
2 min readOct 9, 2023

--

Leo, Aleo tarafından geliştirilen bir akıllı sözleşme dilidir. Aleo, merkezi olmayan bir akıllı sözleşme platformudur. Leo, Rust dilinde yazılmıştır ve EVM uyumlu bir dildir.

Bu blog yazısında, Aleo’nun GitHub’daki “workshop” reposunda yer alan “basic_bank” projesini inceleyeceğiz. Bu proje, Leo dilini kullanarak basit bir banka uygulaması oluşturmaktadır.

Projenin Github Linki = https://github.com/AleoHQ/workshop/tree/master/basic_bank

Projenin Yapısı

Proje, aşağıdaki dosyaları içerir:

  • bank.leo: Banka uygulamasını tanımlayan Leo dosyası.
  • bank.rs: Banka uygulamasını implemente eden Rust dosyası.
  • main.rs: Banka uygulamasını çalıştıran Rust dosyası.

Leo Kodu

bank.leo dosyası, banka uygulamasını tanımlayan Leo kodunu içerir. Bu kod, aşağıdakileri tanımlar:

  • Hesaplar: Bankanın sahip olduğu hesaplar.
  • İşlemler: Hesaplar arasında para transferi yapan işlemler.

Hesaplar, aşağıdaki gibi tanımlanır:

struct Account {
pub id: u64,
pub balance: u64,
}

Bu kod, bir hesabın iki özelliğini tanımlar:

  • ID: Hesabı benzersiz bir şekilde tanımlayan bir sayı.
  • Bakiye: Hesaptaki para miktarı.

İşlemler, aşağıdaki gibi tanımlanır:

struct Transfer {
pub from: u64,
pub to: u64,
pub amount: u64,
}

Bu kod, bir işlemin üç özelliğini tanımlar:

  • Gönderen: Parayı gönderen hesabın ID’si.
  • Alıcı: Parayı alan hesabın ID’si.
  • Tutar: Transfer edilen para miktarı.

bank.rs dosyası, banka uygulamasını implemente eden Rust kodunu içerir. Bu kod, aşağıdakileri gerçekleştirir:

  • Hesapları oluşturur ve yönetir.
  • İşlemleri yürütür.

Hesapların oluşturulması ve yönetilmesi, aşağıdaki gibi yapılır:

#[derive(Clone, Debug, PartialEq)]
pub struct Account {
pub id: u64,
pub balance: u64,
}
impl Account {
pub fn new(id: u64) -> Account {
Account {
id,
balance: 0,
}
}
pub fn deposit(&mut self, amount: u64) {
self.balance += amount;
}
pub fn withdraw(&mut self, amount: u64) {
self.balance -= amount;
}
}

Bu kod, aşağıdaki fonksiyonları sağlar:

  • new(): Yeni bir hesap oluşturur.
  • deposit(): Hesaba para yatırır.
  • withdraw(): Hesaptan para çeker.

İşlemlerin yürütülmesi, aşağıdaki gibi yapılır:

pub struct Transfer {
pub from: u64,
pub to: u64,
pub amount: u64,
}
impl Transfer {
pub fn execute(&self, accounts: &mut HashMap<u64, Account>) {
let from_account = accounts.get_mut(&self.from).unwrap();
let to_account = accounts.get_mut(&self.to).unwrap();
from_account.withdraw(self.amount);
to_account.deposit(self.amount);
}
}

Bu kod, aşağıdaki fonksiyonu sağlar:

  • execute(): İşlemi yürütür.

Uygulamanın Çalıştırılması

Uygulama, main.rs dosyası çalıştırılarak çalıştırılır. Bu dosya, aşağıdakileri yapar:

  • İki hesap oluşturur.
  • Bir işlem oluşturur ve yürütür.

Uygulamanın çıktısı, aşağıdaki gibidir:

Account 1 balance: 0
Account 2 balance: 0
Account 1 balance: 100
Account 2 balance: -100

Sonuç

Bu proje, Leo dilini kullanarak basit bir banka uygulaması oluşturmanın bir örneğini göstermektedir. Leo, akıllı sözleşmeler geliştirmek için güçlü ve esnek bir dildir.

--

--

No responses yet