Blockchain Uygulama Geliştirme Rehberi – Genel Bakış
Son yıllarda Blockchain üzerine hem Decentralized Application(DApp) hem de protokol seviyede geliştirmeler sıkça yapılıyor. Blockchain sektörünün gelişmesi ve artık hangi sektörde hangi sorunların çözülebildiğine dair birçok örnek ortaya çıkması nedeniyle çeşitli sektörlerden bu konularla ilgili talep oluşmaya başladı. Bu nedenlerden dolayı hem geliştiricilerin bu alanla ilgili hızlı bir fikir sahibi olmasını sağlamak, hem de bize sürekli gelen Blockchain sorularına toplu cevaplar verebilmek için böyle bir yazı hazırladım.
Sunumun başlığındaki Genel Bakış ibaresini Blockchain’e DApp ya da Protocol Level odağı olmadan çok genel bir bakış yamayı hedeflediğim için kullandım. Blockchain ile ilgili bilinmesi gereken maddelere ve başlıklara hızlıca göz atalım:
Bitcoin Nedir?
- bitcoin.pdf
- 31 Ekim 2008’de yayınlandı.
- 8 sayfa, 12 bölüm
- Satoshi Nakamoto
- https://bitcoin.org/bitcoin.pdf
Blockchain Nedir?
- 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.
Ledger? Nedir
- Bir organizasyonun tüm işlemlerini saklayan bir kayıt defteridir.
Centralized Mimari Nedir?
- 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).
Distributed Mimari Nedir?
- Centralized mimarideki gibi merkezi bir güç tarafından yönetilir.
- Dağıtık olmasının nedeni teknik verimlilik/performans sağlamaktır.
Decentralized Mimari Nedir?
- Herkes veriyi kaydeder.
- Herkes eşit güce sahiptir.
- Adil ve şeffaf bir sistemdir.
- Güvensizdir(Trustless).
Ne Algoritması?
LinkedList!
Blockchain = LinkedList
Blockchain Vs. Traditional DBs
- Merkeziyetçilik
- Performans
- Gizlilik
Blockchain Vs. Traditional DBs
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.
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…
Blockchain Uygulaması : Kriptopara
- Kriptopara bir dijital değiş tokuş aracıdır.
- Kriptoparanın üç ana özelliği vardır:
- Güvenli Bir Blockchain
- Cüzdanlar
- Madencilik
Kriptopara‘da Dijital İmza
- Güçlü bir blockchain(!)
- Dijital imzalar için kriptografi kullanmak…
Kriptopara‘da Dijital İmza
Kriptopara Cüzdan
- Bir varlığın özel(private) ve genel(public) anahtarını depolayan nesnelerdir.
- Genel(public) anahtar cüzdanın adresidir.
Kriptopara Madencilik
- 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.
Blockchain Uygulama Seviyeleri
- Protocol Level Blockchain
- Ç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 Blockchain (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.
Blockchain Uygulama 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.
Protocol Level Blockchain (Örnek Girişimler)
- Bitcoin
- Ethereum
- Tezos
- NEO
- HyperLedger
- Corda
Application Level Blockchain (Örnek Girişimler)
- Etherem, Solidity Programming Language
- https://ethereum.org/
- https://ethereum.org/developers/#smart-contract-languages
- https://geth.ethereum.org/
- Solidity
DApp Uygulamaları (Decentralized Application)
- NEUFUND : https://neufund.org/
- Aion Network : https://aion.network/
- SingularityNET : https://singularitynet.io/
- Santiment : https://santiment.net/
- OpenZeppelin : https://openzeppelin.com/contracts/
- IoTex : https://www.iotex.io/
- Civil : http://joincivil.com/
- Metamask : https://metamask.io/
- OmiseGO : https://omisego.network/
- TrustWallet : https://trustwallet.com/
- Gnosis : http://gnosis.pm/
- Raiden Network : https://raiden.network/
- High Fidelity : https://highfidelity.com/
DApp Uygulamaları (Decentralized Application)
- Ox : https://0x.org/
- Origin Protocol : https://dapp.originprotocol.com/#/
- Aragon : https://aragon.org/discover/
- Cosmos : https://cosmos.network/
- Augur : https://www.augur.net/
- Storj : https://storj.io/
- Status : https://status.im/
Blockchain Nasıl Çalışır?
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.
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.
Blockchain İçin Programlama Dilleri (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.
Blockchain Uygulama Geliştirmeye 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.
Blockchain için Cloud Hizmetleri
- Azure
- Amazon
- IBM
- Oracle
Blockchain İçin Uzmanlık Alanları
- Blockchain Developer : Protocol Level
- Blockchain Developer : Application Level
- Blockchain Database Developer
- Blockchain DevOps Expert
- Decentralized AI Developer
Blockchain İçin İnceleme Önerileri
- https://www.hyperledger.org/
- https://ethereum.org/
- https://bitcoin.org
- https://u.network/
- https://neo.org/
- https://eos.io/
- https://cosmos.network/
- https://www.cortexlabs.ai/
- https://www.iotex.io/
- https://ont.io/
- https://www.deepbrainchain.org/
- https://singularitynet.io/
- https://www.bigchaindb.com/
- http://nethereum.com
- https://www.blockchain.com/api
Blockchain İçin Araştırma Tavsiyesi (Decentralized AI)
- Blockchain + ArtificialIntelligence
Blockchain İçin Araştırma Tavsiyesi (Hashgraph, hedera.com)
Awesome Blockchain
- https://github.com/igorbarinov/awesome-blockchain
- https://github.com/imbaniac/awesome-blockchain
- https://github.com/dily3825002/awesome-blockchain
- https://github.com/yjjnls/awesome-blockchain
- https://github.com/chaozh/awesome-blockchain-cn
- https://github.com/openblockchains/awesome-blockchains
- https://github.com/steven2358/awesome-blockchain-ai
- https://github.com/CityOfZion/awesome-neo
- https://github.com/machinomy/awesome-non-financial-blockchain
- https://github.com/jpantunes/awesome-cryptoeconomics
- https://github.com/ong/awesome-decentralized-finance
- https://github.com/Netherdrake/awesome-eos
- https://github.com/rust-in-blockchain/awesome-blockchain-rust
- https://github.com/hashgraph/awesome-hashgraph
- https://github.com/learndapp/awesome-libra
- https://github.com/Guppster/awesome-ark
- https://github.com/skcript/awesome-hyperledger
- https://github.com/koltenb/awesome-stellar
- https://github.com/toadkicker/awesome-ethereum
- https://github.com/nongiach/awesome-cryptocurrency-security
- https://github.com/Mikerah/awesome-privacy-on-blockchains
- https://github.com/openblockchains/awesome-libra
- https://github.com/transmute-industries/awesome-smart-contracts
- https://github.com/soulmachine/awesome-blockchain-whitepapers
- https://github.com/istinspring/awesome-blockchain
- https://github.com/obxium/awesome-crypto-art
Makalenin Sunum Hali: https://www.linkedin.com/embed/feed/update/urn:li:ugcPost:6637379228729913344?compact=1
Kaynak : http://www.cihanozhan.com/blockchain-uygulama-gelistirme-rehberi-genel-bakis-v1/
Başarılar.
Cihan Özhan