Blok zinciri teknolojilerini ilk keşfettiğimde, TON zincirinin ölçeklenebilirliği, hızı ve çok yönlülüğü dikkatimi çekti. Son zamanlarda, TON zincirindeki NFT’lerin (Değiştirilemez Token) büyüleyici dünyasına daldım. Diğer blok zincirlerinden farklı olarak, TON, NFT oluşturma ve dağıtma konusunda benzersiz avantajlar sunuyor. Bu makalede, TON zincirinde kendi NFT’mi nasıl oluşturduğumu ve teknik ayrıntıları paylaşacağım.
TON Zincirinde NFT Oluşturmanın Temel Noktaları:
Telegram ekibi tarafından geliştirilen TON Zinciri, onu son derece ölçeklenebilir hale getiren birkaç belirgin özelliğe sahiptir. Bu, yüksek işlem hacmi ve düşük ücretlerin kritik olduğu NFT oluşturma için ideal bir seçimdir. TON’un NFT geliştirmede öne çıkan nedenleri:
-
Etkili İşlemler: Parçalama mekanizması sayesinde TON, tıkanıklık olmadan birden fazla işlemi aynı anda gerçekleştirebilir.
-
Akıllı Sözleşmeler: TON, NFT’lerin oluşturulması ve yönetilmesi için kritik bir bileşen olan akıllı sözleşmeleri güçlü bir şekilde destekler.
-
TON Depolama: NFT verilerinin zincir dışı güvenli bir şekilde saklanmasını sağlayan merkeziyetsiz bir depolama çözümü, böylece işlem ücretlerini azaltır.
Benim için belirleyici faktör, TON’un, NFT projelerinin uzun vadeli başarısı için blok zinciri ekosisteminin geri kalanıyla ne kadar sorunsuz entegre olduğuydu.
TON Zincirinde NFT Oluşturmanın Adımları:
Adım 1: Geliştirme Ortamınızı Kurun
NFT oluşturmaya başlamadan önce geliştirme ortamımı hazırladım:
-
TON SDK’yı Yükleyin: SDK, TON’daki her türlü geliştirmenin bel kemiğidir. TON SDK belgelerini takip ederek indirip kurulumunu gerçekleştirdim.
-
Bir Cüzdan Kurun: TON zincirinde tokenlarımı saklamak ve NFT’lerin dağıtımını yönetmek için bir cüzdan oluşturdum. TON Cüzdan Uygulamasını indirerek cüzdanınızı oluşturabilirsiniz.
-
Yerel Bir Node Kurun: Yerel bir node dağıtarak NFT işlevselliğini ana ağdaki işlem ücretlerini ödemeden test edebildim. İşte yerel node kurulumunun temel komutu:
docker run -d --name ton-node -p 8080:8080 ton-node:latest
Node çalıştıktan sonra CLI veya SDK ile etkileşime geçebilirsiniz.
Adım 2: NFT Metadata Tasarımı
NFT metadatası genellikle şunları içerir:
-
Başlık ve Açıklama: NFT’nin adı ve açıklamasını temsil eder.
-
Medya: Görseller, ses veya 3D modeller. NFT’m için medya dosyalarını hazırladım ve bunların merkeziyetsiz bir hizmet olan TON Depolama aracılığıyla barındırıldığından emin oldum.
-
Token Standartları: TON zincirinde, değiştirilemez tokenler için optimize edilmiş TIP-3 token standardını kullandım.
Adım 3: Akıllı Sözleşme Yazımı
Her NFT’nin kalbinde bir akıllı sözleşme bulunur. TON zincirinde, akıllı sözleşmeler FunC dilinde yazılır. Aşağıda yazdığım temel NFT sözleşmesinin genişletilmiş bir örneği bulunmaktadır:
// Bu, NFT sözleşmesinin minting işlevi
mint_nft(address owner, uint256 tokenId, string metadata) {
;; Yeni tokeni sahibin hesabına kaydet
token_storage[owner][tokenId] = metadata;
event(“Mint”, tokenId, owner);
}
transfer_nft(uint256 tokenId, address from, address to) {
;; Arayanın token sahibi olup olmadığını kontrol edin
if (token_storage[from][tokenId] != null) {
;; Token transferi
token_storage[to][tokenId] = token_storage[from][tokenId];
delete token_storage[from][tokenId];
event(“Transfer”, tokenId, from, to);
} else {
revert(“Geçersiz Sahip”);
}
}
Bu sözleşme iki ana işlev içerir: NFT basımı ve adresler arasında transfer. mint_nft
işlevi, NFT’yi yaratıcının cüzdanına atar, transfer_nft
ise sahipliğin başka bir cüzdana devredilmesine izin verir. Sözleşme ayrıca NFT etkinliklerinin zincir üzerinde kolayca izlenebilmesi için olaylar oluşturur.
Adım 4: NFT Dağıtımı
Akıllı sözleşme hazır olduktan sonra, bunu TON test ağına dağıttım. İşte TON CLI kullanarak sözleşmeyi nasıl dağıttım:
toncli deploy nft_contract.fif --abi nft.abi.json --network testnet
Başarılı bir dağıtımdan sonra NFT’mi blok zincirinde görebildim. Sahipliği doğrulamak için şu komutu kullandım:
toncli run get_owner --address <contract_address> --network testnet
Bu komut, get_owner
işlevini çağırarak NFT sahibini doğrular ve her şeyin düzgün çalıştığından emin olur.
Uygulamalı Örnek: NFT Minting
Akıllı sözleşme dağıtıldıktan sonra, TON SDK kullanarak bir NFT minting işlemini yapalım. İşte kullandığım Python kodu:
from ton_sdk.client import TonClient
from ton_sdk.types import Abi, CallSet, Signer
client = TonClient()
# NFT sözleşmesini başlatın ve dağıtın
abi = Abi.from_file('nft.abi.json')
signer = Signer.from_file('signing_key.pem')
# NFT için metadata tanımlayın
metadata = {
'name': 'My First NFT on TON',
'description': 'A unique digital asset on the TON Chain',
'image': 'https://ton.storage/my-nft-image.png'
}
# Çağrı parametrelerini tanımlayın
call_set = CallSet(function_name='mint_nft', input={'metadata': metadata})
transaction = client.deploy_contract(
abi=abi,
signer=signer,
call_set=call_set,
initial_data={}
)
print('İşlem ID:', transaction['id'])
print('NFT başarıyla mint edildi!')
Bu örnekte:
- TON SDK’yı başlattım, ABI ve imzalayıcıyı tanımladım ve metadatası hazırladım.
- Akıllı sözleşmeden
mint_nft
işlevini çağırarak NFT’nin minting işlemini gerçekleştirdim. - Başarılı yürütme sonucunda NFT mint edildi ve doğrulama için bir işlem kimliği döndürüldü.
Teknik Önemli Hususlar:
- Gas Ücretleri: TON’un düşük işlem ücretleri, NFT dağıtımı için idealdir, ancak maliyetleri daha da düşürmek için akıllı sözleşmeyi optimize etmek önemlidir. Blok zincirinde yapılan her işlev yürütmesi gas maliyetlerine neden olur, bu nedenle verimli kodlama şarttır.
- Akıllı Sözleşme Denetimi: NFT akıllı sözleşmesini ana ağa dağıtmadan önce güvenliği sağlamak için denetim yapmanızı öneririm. TON ekosistemi, güvenlik açıklarını tespit etmek için denetim araçları sunar.
- Metadata Depolama: NFT’nin medya dosyasını depolamak için TON Depolama’yı kullandım ve zincir üzerindeki depolama maliyetlerini önemli ölçüde azalttım. TON Depolama, TON ekosisteminde yerleşik merkeziyetsiz bir dosya depolama hizmetidir.
Gerçek Dünya Uygulaması: NFT’leri Bir Pazara Entegre Etme
NFT’nizi mint ettikten sonra, bir sonraki adım onu bir pazara entegre etmektir. TON, yaratıcıların NFT’lerini satışa sunabilecekleri büyüyen bir NFT pazarına sahiptir. NFT’mi listelemek için, pazarın API’siyle etkileşime giren basit bir sözleşme işlevi kullandım. İşte NFT’yi satışa nasıl listeleyebileceğinize dair bir kod parçası:
def list_nft_for_sale(contract_address, nft_id, price):
# TON pazar yeri API'si ile etkileşime geçerek NFT'yi satışa sun
marketplace_api_url = "https://tonmarketplace.io/api/list"
payload = {
"contract_address": contract_address,
"nft_id": nft_id,
"price": price
}
response = requests.post(marketplace_api_url, json=payload)
if response.status_code == 200:
print(f'NFT {nft_id} {price} token karşılığında listelendi!')
else:
print('NFT listeleme hatası:', response.content)
Bu kod, pazar yerinin API’siyle etkileşime geçerek, NFT’yi satışa sunma işlemini gerçekleştirir. Sözleşme adresi, NFT kimliği ve istenilen fiyatı sağlar.
Geleceğe Bakış: TON Zincirinde NFT’lerin Geleceği
TON zincirinde ilk NFT’mi oluşturma sürecine baktığımda, platformun geliştiriciler için olağanüstü bir ortam sunduğunu görüyorum. Ölçeklenebilirliği, düşük işlem ücretleri ve sağlam araçları ile TON, yaratıcılar ve geliştiriciler için hızla en iyi seçenek haline geliyor. Ekosistem büyüdükçe, NFT’leri oluşturmayı, dağıtmayı ve satmayı daha da kolaylaştıran daha gelişmiş çerçevelerin ve geliştirme kitlerinin ortaya çıkmasını bekliyorum.
TON’da NFT’lerin geleceği, özellikle oyun geliştiricileri, sanal dünyalar veya merkeziyetsiz uygulamalara NFT’leri entegre etmeyi planlayan geliştiriciler için oldukça parlak. Platformun nasıl evrileceğini ve NFT yaratıcıları için ne gibi yeni fırsatların ortaya çıkacağını görmek beni heyecanlandırıyor.