Web3 Gelişiminde Yeni Bir Dönem
Ölçeklenebilir ve verimli merkeziyetsiz uygulamalar (DApps) oluşturmak her zaman geliştiriciler için bir zorluk olmuştur. Ancak, The Open Network (TON), bugün karşılaştığımız birçok teknik engeli çözen taze bir yaklaşıma sahip. TON’un yeteneklerini keşfettiğimde, ölçeklenebilirlik, düşük işlem ücretleri ve hız üzerine odaklanması beni hemen etkiledi. Bu temel güçlü yönler, TON’u Web3 projelerini başlatmak için ideal bir blockchain haline getiriyor.
TON’u diğerlerinden ayıran şey, Telegram ile entegre olmasıdır. Geliştiricilere anında geniş bir kullanıcı tabanına erişim sağlar. Bu, merkeziyetsiz bir uygulamayı hızlıca büyütmek ve geniş bir kitleye ulaşmak açısından son derece değerlidir.
Teknik Odak: TON’un Ana Avantajları
TON’un mimarisi üç ana teknik güçlü yön üzerine inşa edilmiştir:
-
Ölçeklenebilirlik – TON’un sharding sistemi, blockchain’i daha küçük parçalara (shard) böler, her bir parça işlemleri bağımsız olarak işleyebilir, bu da yüksek işlem hacmini garanti eder.
-
Hız – Çoğu blockchain ağından daha hızlı blok süreleri ile TON, neredeyse anında işlemleri mümkün kılar.
-
Düşük İşlem Ücretleri – TON’da işlem yapmanın maliyeti, diğer büyük blockchain’lere kıyasla çok daha düşüktür. Bu, DeFi, oyunlar ve NFT pazarları gibi sık sık işlem yapılan uygulamalar için çok önemli bir faktördür
Örnek Uygulama: TON’da Akıllı Sözleşme Yazma ve Yayınlama
TON ile çalışırken, akıllı sözleşme geliştirme için kullanılan ana dil FunC’tır. İşte bir akıllı sözleşmenin adım adım nasıl oluşturulup yayınlanacağına dair bir rehber.
Adım 1: Basit Bir Akıllı Sözleşme Yazma
Bu örnekte, başka bir adrese “Hello, world!” mesajı gönderen bir sözleşme inşa ediyorum.
var message = begin_cell()
.store_uint(0x10, 6) // Mesaj bayraklarını ayarla (iç mesaj etiketi dahil)
.store_slice(sender_address) // Alıcının adresini belirle
.store_coins(0) // Gönderilecek token miktarını ayarla (bu durumda yok)
.store_slice("Hello, world!") // Mesaj içeriği
.end_cell(); // Hücre yapısını tamamla
send_raw_message(message, 64); // Mesajı uygun bayrakla gönder (64)
Her satırın işlevi:
- begin_cell() hücreyi oluşturmaya başlar. Hücre, mesaj içeriği, gönderici/alıcı bilgileri ve token miktarı gibi verileri depolar.
- store_slice() belirli veri dilimlerini, örneğin gönderenin adresini ve mesaj içeriğini depolar.
- send_raw_message() yapılandırılmış mesajı, işlemin nasıl işleneceğini belirten bir bayrak (64) ile gönderir.
Adım 2: Sözleşmeyi Derleme
Sözleşme yazıldıktan sonra, TON’un anlayabileceği bir format olan BoC (Bag of Cells) formatına derlemek gerekir.
func -o contract.boc contract.fc # FunC kodunu BoC formatına derle
fift -s build.fif # BoC dosyasını yayınlanmak üzere serileştir
func
FunC kodunu BoC dosyası olarak derler, bu blockchain’in işleyebileceği bir formattır.fift
sözleşmeyi blockchain üzerinde yayınlanabilmesi için serileştirir.
Adım 3: Sözleşmeyi Yayınlama
Sözleşmeyi TON testnet’inde yayınlamak için toncli’yi, yani TON için bir komut satırı arayüzünü kullandım. İşlem ücreti ödemek için bir miktar testnet TON token’ı içeren bir cüzdana ihtiyacınız olacak.
toncli deploy contract.boc -w wallet.addr -v 0.1
Bu adımda:
-
contract.boc: Derlenen akıllı sözleşme dosyası.
-
wallet.addr: İşlem ücretini ödeyecek cüzdan adresi.
-
-v 0.1: İşlem ücreti olarak kullanılacak 0.1 TON token’ını belirtir.
Adım 4: Sözleşme ile Etkileşim
Sözleşme yayınlandıktan sonra, onunla etkileşime geçebilirim. Örneğin, sözleşmenin sakladığı bir counter değerini nasıl alacağımı göstereyim:
int counter() method_id {
var data = get_data().begin_parse();
return data~load_uint(32); // 32-bit counter değerini yükle ve döndür
}
slice owner() method_id {
var data = get_data().begin_parse();
data~skip_bits(32); // İlk 32 biti atla
return data~load_msg_addr(); // Sözleşme sahibinin adresini döndür
}
Bu iki yöntem:
-
counter() sözleşmeden 32-bit işaretsiz bir tam sayı değerini alır ve döndürür.
-
owner() sözleşme sahibinin adresini, ilk bitleri atlayarak ve adresi yükleyerek alır.
Adım 5: Sözleşme Verilerini Güncelleme
Sözleşmede saklanan verileri, örneğin bir counter değerini artırmak için aşağıdaki kodu kullanıyorum:
var cs = get_data().begin_parse();
var counter = cs~load_uint(32); // Mevcut counter değerini yükle
set_data(
begin_cell()
.store_uint(counter + 1, 32) // Counter değerini artır
.store_slice(cs) // Güncellenmiş değeri sakla
.end_cell()
);
Burada, mevcut counter değerini alıyor, onu artırıyor ve ardından güncellenmiş değeri sözleşmeye geri kaydediyorum.
Neden TON, Web3 Projeniz İçin İdeal?
TON üzerinde çalıştıktan sonra, çekirdek mimarisi—sharding, yüksek işlem hacmi ve düşük ücretler—modern Web3 projelerinin taleplerine mükemmel şekilde uyduğunu gördüm. TON’u diğerlerinden ayıran birkaç neden:
-
Düşük Ücretler: Diğer blockchain’lerle karşılaştırıldığında, TON maliyet avantajı sağlar, özellikle DeFi, oyunlar ve NFT platformları gibi sık işlem yapılan uygulamalar için.
-
Geliştirici Dostu Araçlar: FunC ve kapsamlı belgeleriyle, TON geliştiricilerin hızla başlamasını ve projelerini ölçeklendirmesini kolaylaştırır.
-
Telegram ile Sorunsuz Entegrasyon: TON’un doğrudan Telegram ile entegre olması, anında milyonlarca potansiyel kullanıcıya erişim sağlar. Geliştiriciler için bu, geniş bir küresel kullanıcı tabanına hızlıca ulaşma fırsatı sunar.