Blockchain : Decentralized Application Development (Turkish)
Jul. 21, 2022•0 likes•264 views
Report
Engineering
www.cihanozhan.com
*It is the presentation of my blockchain event that I presented in 2019.
Teknopark Istanbul Announcement : https://www.teknoparkistanbul.com.tr/egitimler/blockchain-decentralized-uygulama-gelistirme-sunumu
4. Bitcoin?
• bitcoin.pdf
– 31 Ekim 2008’de yayınlandı.
– 8 sayfa, 12 bölüm
– Satoshi Nakamoto
– https://bitcoin.org/bitcoin.pdf
6. Blockchain?
• Transaction gibi verileri depolayan ve bu verileri kendi ağının tüm
node’larında halka açık olarak paylaşan dağıtılmış ve merkezi olmayan bir
defterdir.
9. Centralized?
• Bir varlık veriyi kaydeder.
• Merkez varlığın çok fazla gücü var.
• Para cezası ya da ödüllendirme için tam yetkilidir.
• Varlığa tam güven(mek zorunda olmak).
10. Distributed?
• Centralized mimarideki gibi merkezi bir güç tarafından yönetilir.
• Dağıtık olmasının nedeni teknik verimlilik/performans sağlamaktır.
11. Decentralized?
• Herkes veriyi kaydeder.
• Herkes eşit güce sahiptir.
• Adil ve şeffaf bir sistemdir.
• Güvensizdir(Trustless).
19. Blockchain Ne Sunar?
• Ortak ve Sıralı Kayıt Defteri
• Güvenlik
– Son derece güvenli ve merkezi bir hata noktası yok.
• Otonomi
– Aracı kişi ve kurumlardan ve onların ek maliyetleri aradan çıkarmak.
• Değişmezlik
– İşlenmiş bir veri değiştirilemez!
• Şeffaflık
– İlk Bitcoin hesabının yıllar önce gerçekleştirdiği tüm transaction’ları bile herkes görebilir.
20. Blockchain ile Neler Yapılabilir?
• Ödeme İşlemleri
• Yurtdışına Para Gönderme
• Değişmezlik İspatları
• Seçim / Yönetim
• Kitlesel Fonlama
• Paylaşım Ekonomisi *
• Tedarik Zinciri Denetimi
• Dosya Depolama
• Fikri Mülkiyetin Korunması
• Nesnelerin İnterneti (IoT)
• … bildiğimiz ve henüz bilmediğimiz birçok alanda daha…
33. Cüzdan
(Kriptopara)
• Bir varlığın özel(private) ve genel(public) anahtarını depolayan nesnelerdir.
• Genel(public) anahtar cüzdanın adresidir.
34. Madencilik
(Kriptopara)
• Tüm transaction’lar geçici olarak onaysızdır.
• Bir proof of work algoritması çözerek transaction bloklarını dahil etmek:
– Çözmek zor ve bilgisayar hesaplama gücü gerektiriyor. Ve pahalı…
– Bir kez çözüldükten sonra madenci bloğu ekleyebilir ve diğer madenciler doğrular.
– Madenciler zincire bir blok eklediği için ödüllendirilir.
– Hesaplama zorluğu gelen yeni blokların oranını kontrol etmek için ayarlanabilir.
36. Blockchain Seviyeleri
• Protocol Level
– Çekirdek seviyede Blockchain mimarisi ve hizmeti oluşturmak/geliştirmek için kullanılır.
– Algoritmik seviyede Blockchain kurallarının uygulandığı katmandır.
– Bu bir CryptoCurrency de olabilir, endüstriyel amaçla geliştirilmiş bir mimari de…
– Öğrenmesi ve geliştirme süreci zor ve uzmanlık gerektirir.
– Genellikle yoğun hesaplama gerektirdiği için dil/teknoloji seçimlerinde performansa bakılır.
– Low-Level Blockchain katmanıdır.
• Application Level (Decentralized App[DApp])
– Protokol seviyesindeki bir mimari/hizmet üzerinde çalışan Blockchain kod parçalarına denir.
– DApp(Decentralized Application) olarak isimlendirilir.
– Tabi olduğu kurallar üzerinde bulunduğu Blockchain protokolü tarafından belirlenir.
– Öğrenmesi ve geliştirme süreçleri göreceli olarak kolaydır.
– High-Level Blockchain katmanıdır.
– High-Level olduğu için kullanılan dilde daha çok Developer Friendly özellikler tasarlanır/aranır.
37. Blockchain Seviyeleri
Protokol seviyeli Blockchain geliştirme ile Decentralized App(DApp) geliştirmek
birbirinden neredeyse tamamen farklıdır.
Protocol Level hizmete bir işletim sistemi dersek, DApp uygulamaları o işletim
sistemi üzerindeki bilgisayar programları gibidir. İkisinin de amaç ve hedeflemesi,
farklı olduğu gibi zorlukları ve gereklilikleri farklıdır.
45. Blockchain Mimari Komponentleri
• Node
– Blockchain içindeki kullanıcı ya da bilgisayar.
• Transaction
– Blockchain sisteminin en küçük yapı taşı.
• Block
– Ağdaki tüm düğümlere(node) dağıtılmış bir işlem kümesini tutmak için kullanılan bir veri yapısı
• Chain
– Belirli bir sıradaki blok dizisi.
• Miner
– Blok doğrulama işlemini gerçekleştiren belirli düğümler(node)
• Consensus
– Blockchain işlemlerini gerçekleştirmek için bir dizi kural ve düzenleme.
49. Nonce : Hedef hash değerini elde etmek için gereken sayı.
Data : Kullanıcının blokta saklamak istediği herhangi bir veri.
Hash : Miner tarafından üretilir ve hedefi belli bir pattern’e sahip olan hash’i bulmaktır.
50. Programlama Dilleri
(Blockchain, Protocol Level)
• C++
– Performanslı ve low-level bir dil olduğu için en çok tercih edilen dillerden biridir.
• Go
– Performanslı ve low-level bir dil olduğu için en çok tercih edilen dillerden biridir.
– C’nin gücüyle birlikte web ve veri uygulamalarındaki gücü nedeniyle ekstra değere sahiptir.
• Rust
– Performanslı ve low-level bir dil olduğu için en çok tercih edilen dillerden biridir.
– Gücü ve low-level’daki avantajları(C/C++’a göre) nedeniyle tercih ediliyor.
• C#
– Dil ve platform gücü nedeniyle birçok projede tercih edilir.
– Microsoft’un cross-platform’daki geç adımları nedeniyle diğer dillerin yerine geçmesi zor.
• Python
– Açık kaynaktaki gücü nedeniyle bilgi kaynakları ve örnek projeler genellikle bu dille hazırlanır.
• Node.js (JavaScript)
– Büyük protokol seviyeli Blockchain projelerinde pek tercih edilmez. Ancak hem Blockchain
algoritmalarının öğrenilmesini kolaylaştırmak, hem de yaygınlığını artırmak için kullanıldığı
gibi, hem de orta büyüklükteki Blockchain projelerinde kullanılabiliyor.
51. Nereden Başlamalı?
Protokol seviyesinde geliştirme yapmak daha zordur ve daha yoğun çalışma
gerektirir. Bu nedenle genel çalışma mantığını anlamak için Ethereum
üzerinde Solidity programlama dilini kullanarak akıllı kontratlar geliştirmekle
başlanmasını öneririm. Bu sayede bir DApp geliştirici olarak Blockchain
geliştirici olunabilir.
52. Blockchain için Cloud
• Azure
– https://azure.microsoft.com/tr-tr/solutions/blockchain/
• Amazon
– https://aws.amazon.com/tr/blockchain/
• IBM
– https://www.ibm.com/tr-tr/blockchain
• Oracle
– https://www.oracle.com/tr/blockchain/