Blockchain Tabanlı Akıllı Yasal Kontratlar

[Accord Projesi]

Serkan Erkan
Sep 6, 2018 · 5 min read

Accord projesi çok fazla kodlama bilgisine sahip olmayan fakat elindeki yasal bir belgeyi satış sözleşmesi, kira sözleşmesi, hukuki yazışmalar vs. bir akıllı kontrata çevirmek isteyen kişiler için çok kullanışlı bir çözüm sunuyor.

Genel olarak proje, var olan bir yasal belgedeki metni tarıyor ve orada belirlediğimiz değişkenlerden bir yasal akıllı kontrat modeli çıkarıyor. Bu modeli kullanarak Blockchain network’ü üzerinde bu kontratları transfer edebiliyoruz.

Projede kullanılan teknolojiler aşağıdaki gibidir.

  • Cicero : sözleşmeler ve maddeler için yeniden kullanılabilir şablonlar,
  • Ergo : Şablonlar için yürütülebilir mantığı tanımlamak için kullanılan işlevsel bir alana özgü dil,
  • Model Repository : Cicero şablonunda ve Ergo mantığında kullanılmak üzere Açık Kaynak veri modellerinin bir deposu,
  • Template Library : Açık Kaynak Cicero şablonları kütüphanesi,

Accord Projesi şu an geliştirme aşamasındadır. Son güncellemeler oldukça ilgi çekici. Biz de geçtiğimiz ay Türkçe ve Rusça dört farklı şablon geliştirip projeye katkıda bulunma fırsatı bulduk.


Araç Kiralama Sözleşmesi (Türkçe)

[Template car-rental-tr@0.3.0]

Hazırladığımız bu örnekte, bir araç kiralama durumu söz konusudur. Sözleşme, iki taraf arasında imzalanır.

Ayrıca; tarafların bilgileri, teslimat adresi, araç hakkında detaylı bilgiler, ödeme kontrolü, kiralama tarihleri gibi önemli bilgileri içerir. Ödeme onaylandıktan sonra onaylandığına dair bir işlem kodu döner.

Değişkenlerimizi aşağıdaki gibi tanımladım. Bu bilgiler kontrata göre şekillenecektir.

Daha sonra bu bilgiler, cicero-cli ile parse edilecektir.

orjinal sözleşme

Program çalıştırıldığında, değişkenler ile orjinal sözleşme arasında bir hata yoksa aşağıdaki gibi bir sonuç dönecektir.

Bu örneği çalıştırmak ve diğer şablonları denemek isterseniz aşağıdaki adımları uygulayabilirsiniz.


Node.js (v8.11.4 LTS) Kurulumu

  • Komutları çalıştırabilmek için Node.js’in kurulu olması gerekiyor.

👇 Buradan indirebilirsiniz. (v8.11.4 sürümü öneriliyor.)

Bilgisayarınızda “.bash_profile” dosyasının olmadığını varsayıp yeniden oluşturuyorum. Yapacağımız yüklemeler bu dosya içerisine kaydedilecektir. (Dosya mevcutsa bu adımı atlayıp, nvm kurulumundan devam edebilirsiniz. Aksi takdirde aşağıdaki hata ile karşılaşılabilir.

nvm Kurulumu

Terminal penceresinde aşağıdaki komutu çalıştıralım. Ardından, “.bash_profile” dosyasına ilgili satırlar kaydedilmiş mi kontrol edelim.

⚠️ “.bash_profile” dosyası gizli dosya olduğu için, ana dizinde cmd + shift + . kombinasyonunu kullanarak gizli dosyaları görüntüleyebilirsiniz. Dosyayı oluşturduk ve nvm install komutunu girdik. “.bash_profile” dosyası içerisinde bir takım değişiklikler olduğunu göreceksiniz.

Node paketlerinin yönetimini kolaylaştırmak için nvm kullanmak kolaylık sağlayacaktır.

bu işlemleri yaptıktan sonra, terminal penceresini kapatıp yeni bir terminal penceresi açmamız gerekiyor. Ardından versiyonları kontrol edelim.

Cicero Kurulumu

Cicero komut satırı arayüzüne (CLI) erişmek için cicero-cli npm paketini kurmamız gerekiyor.

versiyonu kontrol edelim.

Ergo dilinde yazılmış bir kodu cicero şablonundan bağımsız olarak derlemek için ergo-cli paketini yüklemeniz gerekmektedir.

Visual Studio Code için iki adet eklenti bulunuyor. Bunları kurmanızı öneriyorum. Eklenti 1, Eklenti 2.

Cicero Şablonların İndirilmesi ve Çalıştırılması

Github üzerindeki bağlantıyı terminal ekranından kendi local’imize alalım.

Daha sonra ilgili dizine gidiyorum.

Şablonlar “src” klasörü altındadır.

Buradan istediğiniz şablonun içerisine girip parse komutu ile çalıştırabilirsiniz. Örneğimizin bulunduğu şablonu açalım ve çalıştıralım.

Dosyamızı parse ettik. Sözleşmedeki değişkenleri görebiliyoruz. Şimdi execute edip, akıllı kontratı çalıştıralım.

Execute komutu çalıştıktan sonra bize “transaction_id, timestamp, ve state” bilgileri döndü. İşlemin başarılı bir şekilde tamamlandığını, görüyoruz.

Akıllı Kontrat Mantığı

Ergo dilinde yazdığımız akıllı kontrat mantığını detaylı inceleyelim.

Github’dan indirdiğiniz, cicero-template-library klasörü içerisinde proje klasörünü visual studio code’da açıyorum.

sample.txt dosyasında, sözleşmenin metin hali bulunmaktadır.

template.tem dosyasında ise, sözleşmedeki değişkenleri görebilirsiniz.

template.tem dosyası

model.cto dosyası, akıllı kontrat içerisindeki değişkenlerin tanımlandığı dosyadır.

logic.ergo dosyasında ise, payment request yapıldığında, payout işlemini gerçekleştiren bir clause yazdık. Bu dosya programın işleyiş mantığının tanımlandığı yerdir. Ayrıca, bu script, logic.js ile birbirini tetikleyen bir mekanizmaya sahiptir.

logic.js dosyası içerisinde de akıllı kontratın işleyiş mantığı tanımlanır.

Bazı önemli linkleri şu şekilde listeledim.

Accord Project Github

Cicero Şablon Kütüphanesi’ne buradan ulaşabilirsiniz.

Şablonların çalışma mantıklarının detaylarına buradan ulaşabilirsiniz.

DLK Consultancy

We are sharing our educational notes / tutorials, experiences and theoretical documents.

Serkan Erkan

Written by

iOS, SAP UI5/Fiori Developer | Blockchain, Hyperledger Fabric Developer/Researcher

DLK Consultancy

We are sharing our educational notes / tutorials, experiences and theoretical documents.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade