Blockchain Tabanlı Akıllı Yasal Kontratlar
[Accord Projesi]
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.
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.
$ touch ~/.bash_profile
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.
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
⚠️ “.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.
$ nvm install 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 --version$ nvm --version
Cicero Kurulumu
Cicero komut satırı arayüzüne (CLI) erişmek için cicero-cli npm paketini kurmamız gerekiyor.
$ npm i -g @accordproject/cicero-cli
versiyonu kontrol edelim.
$ cicero --version
Ergo dilinde yazılmış bir kodu cicero şablonundan bağımsız olarak derlemek için ergo-cli paketini yüklemeniz gerekmektedir.
$ npm install @accordproject/ergo-cli -g
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.
$ git clone https://github.com/accordproject/cicero-template-library.git
Daha sonra ilgili dizine gidiyorum.
$ cd cicero-template-library$ cd src
Ş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.
$ cd car-rental-tr$ cicero parse
Dosyamızı parse ettik. Sözleşmedeki değişkenleri görebiliyoruz. Şimdi execute edip, akıllı kontratı çalıştıralım.
$ cicero execute
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.
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.
Cicero Şablon Kütüphanesi’ne buradan ulaşabilirsiniz.
Şablonların çalışma mantıklarının detaylarına buradan ulaşabilirsiniz.