Teknoloji ve Hayata dair günceler

Son Yazılar


Kategoriler


Son Yorumlar..


Internet Computer Protocol & Motoko ile Hello World!

Kemal İKİZOĞLUKemal İKİZOĞLU

Herkese merhaba,

Web 3.0 dünyasının blok zinciri üzerinde şekillenmeye, ana blok ağlarında yeni proje ve içeriklerin üretilmeye başlandığı bu zaman diliminde tüm gelişmelere birebir şahit oluyoruz. Yeni bir blok zinciri çıkıyor ve o blok zincirine ait bir ekosistem oluşturulmaya çalışılıyor. Bugün Internet Computer Protocol blok zincirini biraz tanıyıp Hello World örneğiyle bu merkeziyetsiz geliştirme ortamına ilk adımımızı atacağız. Dilerseniz hemen başlayalım.

Internet Computer Protocol Nedir?

Internet Computer (ICP), web hızında çalışan ve dünyada ilk sınırsız kapasite vadeden blok zincir ağıdır. Ağın tokeni ICP’dir. DFINITY Vakfı kurucusu Dominic Williams’ın 2021 yılının Mayıs ayında piyasaya sürdüğü Internet Computer Protocol (ICP),  Ethereum ve Bitcoin’den sonraki en büyük blok zincir ağlarından biridir.

Bu blok zinciri İsviçre’nin Zürih kentinde bulunan, dünyanın en iyi kriptograflarından, dağıtılmış sistemler ve programlama dili uzmanlarından oluşan, yaklaşık 100.000 akademik alıntı ve toplu olarak 200 patentten oluşan kar amacı gütmeyen bir bilimsel araştırma kuruluşu olan DFINITY Vakfı tarafından oluşturulmuştur. Bu vakıf interneti merkeziyetsiz bir yapıya dönüştürerek geliştiricilere, şirketlere ve bireylere dapps (merkeziyetsiz uygulamalar) oluşturma ve çalıştırma olanağı sağlamaktır. Aynı zamanda Merkeziyetsiz Yapay Zeka (DeAI) ile entegre edilmiş uygulamaları destekleme özelliği ile de diğer ağlardan ayrışmaktadır.

Mainnet, TestNet, DevNet Ağları Nelerdir?

Daha önceki blog yazılarımda blok zinciri teknolojisinden ve buna bağlı olarak kripto paralardan bahsetmiştim. Etherium, Bitcoin, Solana ya da bugün bahsettiğim ICP. Bunların hepsinin çalıştığı ana ağ Mainnet’tir. Tüm resmi işlemler ana ağ üzerinde gerçekleşmekte ve bunlar gerçekleştirilirken Gas Fee adında bir ücret alınmaktadır. Gas Fee, yapılan her bir merkeziyetsiz işlem için bu işi yapan node(düğüm) birimine ödenen bir ücrettir. Kripto alım satım işlemleri de yine bu ana ağ üzerinden gerçekleştirilmektedir.

ICP blok zincirinin amacı merkeziyetsiz uygulamalar oluşturabilmenize olanak sağlar. Bunu gerçekleştirirken Devnet ağını kullanırız. Bu ağ içerisinde yapacağımız geliştirmeler desteklenen geliştirme ortamlarını kullanılır. Testler için airdrop denilen ücretsiz ağ tokenları alır ve onları harcarız. Geliştirme süreci boyunca bu ağı kullanarak uygulamanızı geliştirebilirsiniz.

Uygulamayı hazır hale getirdiniz, gerçek ortam öncesi son test işlemlerini gerçekleştirmek istiyorsunuz. Projeyi ana ağa geçirmeden önce tüm testlerin yapıldığı kısım burasıdır. Testnet, gerçek olmayan kripto para ile test edebileceğiniz, hatalara karşı hızlı düzeltmeler yapabileceğiniz bir ortamdır. Burada her şey yolunda ise ana ağa taşıyabilirsiniz.

Motoko Programlama Dili

DFINITY Vakfı tarafından geliştirilen ve Internet Computer platformunda kullanılmak üzere tasarlanmış programlama diline Motoko denir. Motoko programlama dili, merkeziyetsiz – dağıtılmış programlama yapabilmek, akıllı sözleşme ve merkeziyetsiz uygulamalar geliştirmek için tasarlanmıştır. Bu programlama dilini kullanarak uygulamalar geliştirebilir ve bunu ana ağda erişime açabilirsiniz.

Motoko ile yapılmış merkeziyetsiz örnek projeleri incelemek isterseniz https://internetcomputer.org/docs/current/motoko/main/getting-started/examples adresindeki çalışmaları inceleyebilirsiniz.

Bunun için bir arama motoru kullanarak ICP Playground olarak arama yapıyorum ve https://m7sm4-2iaaa-aaaab-qabra-cai.raw.ic0.app adresine giriyorum. Adres karmaşık görünebilir ama güvenilirdir. Sayfa açıldığında üstteki görsel bir bir ekran göreceksiniz. Buradan New Motoko Project seçeneğine tıklayıp ilk boş çalışma ekranımızı oluşturalım.

Sayfamız açıldığında ekranın sol kısımda projemize ait dosyalar, sağ tarafında kod alanı alt kısmında ise işlem özetleri görüntülenmektedir.

Hello World!

Sayfamız açıldıktan sonra iki farklı türde “Hello World!” yazısı yazacağız. Bir butona tıkladığımızda ve metni girip onayladığımızda olmak üzere iki farklı örnek olacak.

Yazdığımız komutlar şu şekildedir:

Burada yer alan bazı noktaları açıklayalım.

Actor, Motoko dilinde ve genel olarak dağıtılmış sistemlerde kullanılan bir kavramdır. Bir aktör, asenkron mesaj iletişimi yoluyla diğer aktörlerle etkileşimde bulunabilen ve kendi iç durumunu yöneten bir varlığı temsil eder. 

Burada bir actor içerisinde iki fonksiyon bulunmaktadır. Bunlardan ilki fonksiyonu tetiklemek için butona tıklamakla gerçekleşirken diğerinde kendi girdiğimiz metni yazdırdığımız bir fonksiyon örneğidir.

Bu örnekleri yazdıktan sonra sağ üstte yer alan Deploy butonuna bastığımızda karşımıza hazırlık ekranı gelecektir. Burada Canister dediği akıllı sözleşmenin ICP ağındaki adıdır. Rastgele bir isim verebilirsiniz ya da aynı şekilde devam edebilirsiniz. Diğer ayarları aynı bırakıp Install butonuna tıklıyorum. Böylelikle projemiz ICP geliştirme ağına deploy ediliyor.

Deploy işlemi gerçekleştiğinde kod alanının sağ kısmında önizleme alanı açılacaktır. Burada kodun önizlemesini görebilirsiniz. Sol menü içerisinde yer alan Canister kısmı ilk başta boştu ve deploy işlemi tamamlandıktan sonra 20 dakikalık bir alan açıldığını fark edeceksiniz. Kodunuzda yapacağınız değişikliği yeniden deploy edebilir, güncel halini önizleyebilirsiniz.

İlk fonksiyonumuzun Query butonuna tıkladığımızda Hello World! yazısını hem butonun altında hem de log kısmında çıktı olarak görebilirsiniz. Bu bizim ilk fonksiyonumuzdu. İkinci fonksiyonumuzda ise bir veri girmemiz gerekiyordu. Hemen Hello World! metinini giriyorum ve Query butonuna tıklıyorum. Orada da çıktılarımı görüyorum. Böylelikle başarılı bir şekilde ilk merkeziyetsiz geliştirme dünyasına giriş yapmış olduk.

Kendinizi lütfen tebrik etmeyi unutmayın. Bu basit örnek geleceğiniz için bambaşka bir kapı olabilir 🙂

Bir sonraki yazımda görüşmek dileğiyle..
Kolay gelsin.

Kaynaklar:

https://www.bitlo.com/rehber/internet-computer-icp-nedir
https://akademi.bitci.com.tr/internet-computer-icp-nedir
https://metatime.com/tr/blog/mainnet-ana-ag-nedir-mainnet-ve-testnet-arasindaki-farklar-neler
https://icphubturkey.substack.com/p/motoko-101-internet-bilgisayarnn
https://icphubturkey.substack.com/p/internet-computer-protocol-icp-nedir
https://m7sm4-2iaaa-aaaab-qabra-cai.raw.ic0.app
https://aysekulabas.medium.com/internet-computer-protocol-icp-ve-yapay-zeka-teknolojik-devrimin-güçlü-i̇ttifakı-062a6dd9711d

Eğitim ve teknoloji haberlerini, ilginç ve önemli bilgileri, kendimi geliştirdiğim alanlardaki öğrendiğim tecrübelerimi blogumda paylaşıyorum. Öğrenmekten ve paylaşmaktan zevk alıyorum.İnandığım bir şey var ki istisnalar hariç, hiçbir şey imkansız değildir. Mucizeler için zaman gerekir! Bu benim yaşam felsefem.

Yorumlar 0
İlk yorumu yazmak ister misin?