BlockChain dünyasında çok büyük gelişmeler ve fırsatlar olduğu bir gerçek. Hatta özellikle bu yaz güneşten sonra en çok maruz kalacağımız şeyin BlockChain olacağını söylemek hiç de abartı olmasa gerek. Teknoloji dünyası BlockChain(kısaca BC olarak ifade edelim) ile sallanıyor. Aslında yazımızın ana konusu BC’nin önemli bir parçası olan ChainCode ve son yılların yükselen yıldızı GoLang olacak. Bu iki teknoloji arasında sıkı bir ilişki var ve bu ilişkinin boyutlarını birlikte keşfe çıkıyoruz. Her şeyden önce bazı kavramları açıklığa kavuşturabilmek için kısaca BC’nin ne olduğundan bahsedelim.
Blockchain Nedir?
BC, transactionların kaydedilmesi ve varlıkların bir iş ağında izlenmesi sürecini kolaylaştıran, paylaşılmış(shared) ve distributed(dağıtılmış) bir ledger(finansal defter) veya merkezileştirilmemiş bir veritabanı olarak tanımlanabilir. Geleneksel veritabanları için -ki bunlar bir bankaya, hükümete, muhasebeye ait olabilir — merkezi bir yönetim söz konusuyken — bir distributed ledger ‘de merkezi bir yönetim yoktur ve BC ağ içindeki herkes tarafından görülebilen çoğaltılmış veritabanlarına sahiptir.
BC’den daha çok bilinen bir teknoloji varsa o da Bitcoin’dir. Aslında Bitcoin hazır bir BC ağıdır ve Bitcoin’in ünü , karanlık ve tartışmalı yönleriyle gündeme gelmesinden kaynaklanır. Bitcoin’in karanlık dünyası sebebiyle BC teknolojisi gelişim açısından büyük bir dirençle karşılaştı ve karşılamaya da devam ediyor. Alışkanlıkları tamamen değiştirmeye hazırlanan ve cryptocurrency ‘nin temelini taşıyan bu teknoloji, dünya ekonomisinde yeni bir devrim olarak karşımıza çıkmaya hazırlanıyor. Bu gelişmelerle birlikte de hayatımıza yeni kavramlar girmeye başlıyor: consensus algorithms (fikir birliği algoritmaları ), akıllı sözleşmeler, distributed ledgers, dijital cüzdan , transaction blocks gibi.
Gelin BC’nin çalışma mantığını basit bir şekilde Varyemez Amca ile birlikte inceleyelim. Yıllar içinde onun da yatırım alışkanlıkları ve paraya bakış açısı değişti. İşte Varyemez Amca ve QuackCoin’lerinin bir BC ağında geçen kısa öyküsü. 🙂
Varyemez Amca şekilde de görüldüğü gibi bir BC ağı üzerinden kendi QuackCoin’lerini gönderiyor. Bu gönderim işleminde üçüncü bir taraf bulunmuyor, işlem doğrudan ve hızlı bir şekilde gerçekleşmiş oluyor, üstelik komisyon masrafları olmadan… Bu tam da Varyemez Amca’nın sevdiği türden bir ayrıcalık. :))
Bir BC ağı izlenip bu ağda ticaret yapılabilir, risk azaltılabilir ve maliyetler düşürülebilir. BC işlem listelerini kaydetmek için merkezi olmayan şeffaf bir yol sunmaktadır. Aslında BC klasik alışılagelmiş iş operasyonlarına yeni ve radikal bir boyut katacak sanayi 4.0 teknolojilerindendir diyebiliriz.
BC’nin en iyi bilinen kullanım şekli 2013’te Bitcoin olarak karşımıza çıkmıştır.BC ile ilgili araştırma yapmaya kalktığınızda karşınıza çıkan verilerin büyük bir bölümünün Bitcoin ile ilgili olmasına şaşırmamanız gerekir 😉 Bitcoin ile BC aynı şey değildir. BC , Bitcoin işlemlerini kaydetmek ve depolamak için tool’lar sağlar. Dinlediğim bir seminerde bu konuyla ilgili şöyle bir cümle vardı : “ Bitcoin en büyük BC laboratuvardır.” BC’nin Bitcoin dışında bir çok kullanım alanı olduğunu söyleyebiliriz.
Bu kullanım alanları ;
– Seçim dönemlerinde oylama sistemleri
– Kamuya dair işlemler (Güvenli kamu kayıtları oluşturma)
– Belirli bir döneme ait belgenin varlığının kanıtlanması
– Tedarik zinciri yönetimi
– Mülkiyet geçmişlerinin önem kazandığı durumlar (elmasların veya tarihi eserlerin etik kaynaklı olması, peynirin gerçekten sütten yapılmış olması,gıdaların organik üretim süreçleri)
– Telif haklarının korunması (dijital medyanın meşru olarak satılması, kiralanması vb)
– Patent koruma
-Sağlık ve sigorta işlemleri
vb pek çok alanda kullanılabilecek ve bunu yaparken de sistemleri daha şeffaf ve belki de daha demokratik hale getirecek. BC tabanlı sistemler tedarik, lojistik ve ödeme süreçlerinin etkinliğini arttırma, ithalat / ihracat belgelerinin manuel olarak işlenmesini azaltma, malların uygunluğunu ve teslimatını garanti etme ve kayıpları önleme potansiyellerine sahiptir. Böylece işlemsel operasyon maliyetlerinin düşürülmesi, finansal hareketlerin daha güvenli bir şekilde sağlanması, dolandırıcılık -ki pek çok finans kurumu bu olumsuz durumları tespit etmek için Fraud sistemlere ciddi yatırımlar yapmaktadır- faaliyetlerinin azaltılması mümkün hale gelir.
BC ‘nin şeffaf ve izlenebilir mülkiyet geçmişi için iyi bir yol olabileceğine dair ciddi bir inanç var. Ancak BC içinde fırsatlar olduğu kadar zorluklar da mevcut. Her ne olursa olsun bu teknoloji ciddi bir ilgi görüyor ve istikrarlı bir şekilde büyüyor. 2009’dan beri hayatta olan bu teknolojinin hiç hacklenememiş olması da dikkat çekici.
Dünyada başta bankalar olmak üzere bazı kuruluşlar tarafından , üzerinde çalışmalar yapılan bu teknoloji daha çok Startuplar tarafından drive ediliyor. BC teknolojisinin yararına odaklanıp harekete geçen Startup’ları incelemek isteyebilirsiniz. İçlerinde “Everledger” gibi çok enterasan projeler gerçekleştiren firmalar göreceksiniz.
BC’yi iş modeli olarak inceledikten sonra çok da teknik olmayan bir anlatımla nasıl çalıştığını kısaca inceleyelim. BC ağdaki tüm işlemlerin kanıtıdır. Block ,işlem tamamlandıktan sonra verileri kalıcı olarak veri tabanına kaydeder. BC’de çok sayıda block bulunur. Bu block’lar bir zincir gibi doğrusal, kronolojik sırada ve her block bir önceki block’un hash değerini içerecek şekilde birbirleriyle ilişki halindedirler.
BC birbirine bağlı block’larda transaction kayıtlarını depolar
BC’ i oluşturan block’larda transaction bilgileri yer alır. Bir transaction, bir kişinin sahip olduğu ve başka biriyle alışveriş yapmaya istekli olduğu bir değer birimini temsil eder. Bu değer birimi, A ‘nın hesabından paranın düştüğünü ve bu paranın B’nin hesabına geçtiğini ağa yayınlayacaktır. Peki ağdaki node’lar hesap bakiyelerini nasıl takip eder, derseniz; bu durum, bir önceki transaction’lara yapılan bağlantılar yoluyla ile doğrulanır. Transaction sayısı arttıkça BC de büyür ve daima günceldir. Block’lar transaction’ların sırasını — zamanını onaylar ve kaydeder. Her block bir önceki block’un hash’ini içerir.
Önceki block hash’i block’ları birbirine bağlar ve herhangi bir block’un değiştirilmesine veya mevcut iki block arasına bir block yerleştirilmesine engel olur. Bu şekilde, sonraki her blok bir önceki bloğun ve dolayısıyla blok zincirinin doğruluğunu güçlendirir. Kayıtlar cryptography yoluyla korunur. Bu da bu sistemin güvenlik açısından ön plana çıkmasını sağlıyor.
BC uygulamaları oluşturmak için arka planda , kodlama , kriptografi , matematik gibi önemli kaynaklar gerekiyor. Bu gözünüzü korkutmasın çünkü artık BC için gerekli ortamı sağlayan platformlar var. Şimdilerde BC geliştirme topluluğu 2 önemli teknoloji etrafında dönüyor. Bunlar Ethereum ve Hyperledger .
Ethereum, geliştiricilerin merkezi olmayan uygulamaları oluşturmasına imkan sağlayan BC teknolojisine dayanan açık bir yazılım platformudur.Bitcoin BC’ i dijital paranın sahiplik durumunu izlemek için kullanılırken, Ethereum platformunda oluşturulan BC , merkezi olmayan herhangi bir uygulamanın programlama kodunu çalıştırmaya odaklanır. Ethereum ‘da geçerli para birimi Ether’dir 🙂 Bu platformda Solidity programlama dili kullanılır.
Hyperledger , sektörler arası BC teknolojilerini geliştirmek için yola çıkmış açık kaynak kodlu bir girişim olmakla birlikte ; finans , bankacılık ,IoT , tedarik zinciri , üretim gibi sektörlerin liderlerinin de dahil olduğu Linux Foundation’un ev sahipliğinde yükselen küresel bir işbirliğidir.
Siyasi tartışmaları da beraberinde getireceğinden , Hyperledger diğer BC projelerinin aksine şifreli para birimleri ve jetonlarla vakit harcamaktan uzak duruyor. Hyperledger, kendisini yüksek ölçeklenebilir endüstriyel uygulamaların omurgası olarak görüyor ve bu kararlılıkla ilerliyor. Bu teknoloji tüm dijital benliği ile kendisini endüstriyel uygulamalar oluşturma konusuna odaklamış durumda.
Hyperleger üzerinde tasarlanan BC teknolojilerinden biri de Hyperledger Fabric’tir ve bu proje IBM tarafından yönetilmektedir. Fabric’te programlama dili olarak Go ve Java kullanılmaktadır.
Hyperledger Fabric v1.0-alfa, IBM Bluemix üzerinden hizmet olarak sunulmaktadır. Hyperledger Fabric, dağıtık mimaride bir blockchain ağı oluşturabilmeniz için kolay bir mekanizma sağlar. Hyperledger Fabric oldukça güvenli bir ortamda çalışır. Sistemsel olarak bakıldığında IBM LinuxONE makinesinde Secure Service Container isimli bir yazılım bulunur. Bu çatı içerisinde ağ kaynakları olarak ifade edilen Peer, Order, Certificate Authority, Source Code ve Ledger tipleri yer alır. Çatıdaki bu parçalar sayesinde belirli iş kurallarını taşıyan ChainCode uygulamalarını bir BlockChain ağını tasarlamaya gerek duymadan test edebiliriz.
Chaincode nedir?
BC sadece işlemler ve değer depolamak için kullanılan bir ağ değildir. Bazı BC’ler “Smart Contract” (akıllı sözleşme) gibi programlar içerebilir. İşte Ethereum yapısı içinde kullanılan “Smart Contract” kavramı HyperLedger teknolojisinde “ChainCode” olarak karşımıza çıkmaktadır.
ChainCode , para, içerik , mülkiyet, paylaşımlar veya değerli şeylerin alışverişini kolaylaştıracak bir bilgisayar kodunu tanımlamak için kullanılan bir ifadedir ve kullanıcıların bir blockchain ağı ile etkileşime girmesini sağlayan bir kod parçasıdır da diyebiliriz. Yine başka bir ifadeyle, bir BC ağındaki farklı varlıkların veya tarafların birbiriyle nasıl etkileşimde bulunduklarını yöneten iş mantığıdır. Ağ üstündeki bir işlemi her çağırdığınızda, değerleri ledger’dan okuyup yazan bir ChainCode fonksiyonu çağırmış olursunuz.
Gopher = Go ‘nun Maskotu
“Sevimli Gopher İş Başında”
GoLang olarak da anılan Go Programlama Dili , Google ekibinden Robert Griesemer, Rob Pike ve Ken Thompson tarafından deneysel bir proje olarak 2007’de tasarlandı ve ilk kez Kasım 2009 açık kaynak olarak piyasaya sürüldü. Dilin ilk sürümü Aralık 2012’de çıktı. Şu an geçerli olan son sürümü Şubat 2017’de release olan Go 1.8 ‘dir. Hatta bu yazıyı yazmaya başladığım sıralarda 1.9 versiyonunun beta sürümü de yayınlamış ki şu linkten bu yeni sürüm ile ilgili detaylı bilgilere ulaşabilirsiniz.
IBM Bluemix üzerinde ChainCode yazmak için desteklenen tek dil şu an Go. (Java henüz Beta aşamasında) ChainCode bir SDK veya CLI (Command Line Interface) aracılığıyla Hyperledger Fabric ağına yüklenir ve bu ağın shares ledger ‘i (paylaşılan defter) ile etkileşime girer.
Temel kavramlardan sonra geldik ChainCode ile Go’nun ilişkisine. İşin uzmanları BC ve bu teknoloji içinde çalışan ChainCode için neden Go’yu tercih etmiş olabilirler? ChainCode ve Go arasındaki kesişim noktalarını yakalayabilmek için Go ‘nun özelliklerine göz atalım.
Şöyle ki ;
· Açık kaynak kodlu bir yazılımdır.
· Onu tasarlayan ekip, onun hızlı , üretken ve en önemlisi de eğlenceli olmasına önem vermiş. Dili bilmeyenler için bile Go maskotu ile tanışmak bu dil ile aranızda bir eğlence akımı başlatıyor. 🙂
· Kodlarda geriye dönük bakım yapmak oldukça kolay. Uzun ömürlü projeler için bu çok önemli. ChainCode da uzun ömürlü tasarlanan/tasarlanması gereken bir teknoloji.
· Modern bir dil ve modern teknolojinin ihtiyaçları göz önünde bulundurularak tasarlandı.
· Go, metin tabanlı iş akışı, minimalist tasarım ve net dil özellikleri ile temiz bir sözdizimine sahiptir. Böylece bu dili hızla öğrenebilirsiniz. Bu basitlik sayesinde kodun bakımı daha ucuz ve geliştirme süreci daha hızlı olur. BC ‘in bir çok sektörde kullanılabilir hale gelmesi için bu özellikler önemli diyebiliriz.
· Çıkan her yeni sürüm dilin özelliklerini frenlemiyor.
· Etkin Derleme , etkin yürütme ve programlama kolaylığı…Tabi ki G0’da 🙂
· Dinamik olarak yazılan bir dilin programlama kolaylığı + statik olarak yazılmış ve derlenmiş bir dilin etkinliği ve güvenliği = > İşte bu bileşimden Go ortaya çıkmış.
· Ağa bağlı ve çok çekirdekli hesaplama desteği ile modern olmayı hedeflemektedir.
· Go ile çalışmanın hızlı olması amaçlanmıştır: Tek bir bilgisayarda büyük bir yürütülebilir dosyanın oluşturulması en fazla birkaç saniye sürer.
· Hız, basitlik , ölçeklenebilirlik onun genlerinde var.
· Ağa bağlı hizmetleri yazmak için çok uygun.
· Yenilikçi projeler için tabi ki Go .
· Yüksek performans ve hızlı gelişebilme özelliği ile Java’ya karşı sıkı bir rakip . HyperLedger için Java beta’da kalmaya devam edebilir. Teknoloji dünyasının Go gibi taze bir kana ihtiyacı var 🙂
· Dinamik ve derlenmiş diller arasında orta bir yerde ve bu da onu mükemmel kılıyor.
· Kullanımı kolaydır. Çoğu iş sadece standart kütüphaneler ile yapılabiliyor
· Google’ın da dediği gibi ; “Go, C veya C ++ gibi derlenmiş bir dilin performansı ve güvenliği Python gibi dinamik bir dilde çalışma geliştirme hızını birleştiriyor.”
· Go, Docker ve Cloud Foundry gibi bazı yüksek profilli projelere dahil edildi ve bu durum yükselişine hız kazandırdı.
· Go, makine kodunu derleyerek onu çok hızlı ve güvenilir hale getirir. BC’nin tamda da ihtiyacı olan şey.
· Go’daki eşzamanlılık, işlevlerin birbirinden bağımsız olarak çalışabilme kabiliyeti olarak ifade edilir. Eşzamanlılık mekanizmaları, çok çekirdekli ve ağa bağlı makinelerden en iyi şekilde yararlanacak programlar yazmayı kolaylaştırırken, yeni tür sistem esnek ve modüler program yapılandırmasını mümkün kılıyor. Kulağa hoş geliyor. En büyük kesişim noktası diyebilir miyiz?
· Yine eşzamanlılığa vurgu yapalım. Go’nun concurrency modeli çok kolay ve sezgiseldir . Go, eşzamanlılık için mükemmel bir seçimdir. Basitliği, sadeliği, hızı, eşzamanlılığı ve yüksek performansı nedeniyle Go görevlerini en iyi şekilde yerine getirebiliyor.
· Network applicationları yazmak için Go son derece iyi bir seçim
· DevOps giderek daha fazla Go kullanmaya başladı.
· Go’nun gücü sağlam ve iyi yazılmış standart kütüphanesinden geliyor… Çok kapsamlı bir libary setine sahip. Go ile kendi kütüphanelerini kurabilirsiniz. Java ekosisteminde bulunanlar gibi şişirilmiş ve düşük kaliteli kütüphanelerden kurtulursunuz. 🙂
· Kısaca eş zamanlı programlamada Go basit ancak performansı yüksek imkanlar sunmaktadır. C ve C++’ın static yürütme tekniğini kullanmaktadır .
Dünyada BlockChain teknolojisine doğru hızlı bir yönelim var. BC’nin en önemli yapı taşlarından biri olan ChainCode ‘un Go gibi esnek, hızlı ve modern bir dil ile yazılıyor olması aslında hiç de şaşırılacak bir durum değil.
O zamaaaan … Gelişen teknolojiye ayak uydurabilmek için ne diyoruz? Hızlı ol basit ol.. Go’ da kal 🙂
Ben Go bilmiyorum , kurs araştırdım bulamadım..Gopher bir çevrem yok diyenlere de buyrun kaynaklar diyoruz. “Self Training + Özgüven” Bu bileşime inanın ve harekete geçin. İşte bu linkler, konfor alanının dışına çıkmak isteyen cesur yazılımcılara gelsin 😉
- Ücretsiz Kitaplar
- Gopher Academy
- GopherCon2016 Con2017 için takipte olun! 13–15 Temmuz
- Turuncu Gopher ile mutlaka tanışın 🙂
Ama ben öyle kendi kendime motive olamam bana ekosistem lazım diyenler için de buyurun efendim Gopher’larla kaynaşıp , tartışabileceğiniz platformlar:
– Go Programlama Dili Türkiye Topluluğu
– Golang Twitter Hesabı (@golang)
– Golang News Twitter Hesabı (@golang_news)
Go öğrenmemek için bahanemiz var mı? Hızla gelişen ve büyüyen bu topluluğun parçası olmak için beklemeyin. Harekete geçin.
Gopher Academy