Blockchain Tabanlı Akıllı Yasal Kontratlar

[Accord Projesi]

Serkan Erkan
DLK Consultancy
5 min readSep 6, 2018

--

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.

değişkenlerin gösterilmesi
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.

nvm kurulumu

⚠️ “.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.

.bash_profile dosyası 1.0
.bash_profile dosyası 1.1

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

varsayılan sürüm v8.11.4

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

node ve nvm versiyonları

Cicero Kurulumu

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

cicero-cli kurulumu

versiyonu kontrol edelim.

cicero versiyon

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.

eklenti-2
eklenti-1

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.

cicero-template-library dizini
şablonların bulunduğu dizin (src)

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.

cicero parse komutu

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

cicero execute komutu

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.

sample.txt dosyası
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.ergo

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

logic.js

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.

--

--