Blok zincirleri, tokenleri değer aktarmanın temel aracı olarak kullanır. Zincirin yerel değişim birimi olabilirler, bir uygulamanın değişim birimi olabilirler ve hatta oyun dünyasında para birimi olarak bile kullanılabilirler. Tokenlar, Sui ve diğer blok zincirlerde de güçlü DeFi etkinliğini destekler.

Ethereum, tokenlar için ERC-20 standardını kullanıyor. Geliştiricilerin çeşitli amaçlarla oluşturabileceği bu tokenlar, Ethereum üzerinde akıllı sözleşmeler olarak temsil ediliyor. Sui'de tokenlar Coin paketini kullanır. ERC-20 tokenleri gibi geliştiriciler de Sui üzerinde çok çeşitli kullanımlar için Coin oluşturabilirler. Ancak Sui'nin temelde farklı veri modeli, her bir madalyonun ağdaki bir adrese ait olduğu anlamına geliyor.

Ethereum'da ERC-20 tokenları ve Sui'de Coins oluşturma süreçlerinden geçmek bu iki standart arasındaki farkları göstermektedir. Ethereum geliştiricileri Sui'deki Coin paketinin esnekliğine de şaşırabilirler.

ERC-20 jetonunu dağıtma

Bu örnekte, ERC-20 standardını kullanarak bir token oluşturmak için gereken adımları göstermek amacıyla Remix IDE'yi kullanacağız.

1. Tarayıcınızda çevrimiçi Remix IDE'yi açarak başlayın.

2. OpenZeppelin'den ERC-20 proje şablonunu seçin.

3. Sol bölmedeki Dosya Gezgini'nde, bağımlılıklarını yüklemek için sözleşmeler dizininde Token.sol'u seçin.

4. Bir tane ekleyin

_gibi

oluşturulacak belirteçlerin sayısını belirtmek için varsayılan kurucuya işlev. Aşağıdaki kod örneği bir yöntemi gösterir.

sözleşme MyToken, ERC-20, ERC-20Permit'tir {     constructor() ERC-20("MyToken", "MTK") ERC-20Permit("MyToken") {_mint(msg.sender, 12);} }

 5. Hızlı menüdeki Derle simgesine tıklayın.

6. İşlemleri Dağıt ve Çalıştır eklentisini açın, Remix VM (Cancun) ortamını seçin ve Dağıt düğmesine tıklayın.

Yukarıdaki adımları takip ederek ERC-20 bağımlılıklarını projenize kopyalayın. Sözleşmeniz, kopyalanan bağımlılıklarla birlikte EVM bayt kodu halinde derlenir ve sanal blok zincirine dağıtılır. İşleminiz kazıldı ve ERC-20 tokenlerinizi temsil eden sözleşme artık Remix'in sanal blok zincirinde yayında.

ERC-20 tokenleri nasıl temsil edilir?

Tokenlarınızı bulmak için Remix'teki (.deps klasörü) bağımlılık sözleşmelerine gidin ve ERC-20.sol dosyasına gidin. Bu soyut sözleşmenin ilk satırı şöyledir:

eşleme(adres hesabı => uint256) özel _bakiyeler;

Bu eşleme, tüm kullanıcılar için tüm bakiyelerin saklandığı yerdir. Bir kullanıcının bakiyesini almak için sözleşmenizin

dengesi

kullanıcının adresiyle çalışır. Bu eşlemeyi sorgulayacak ve değeri getirecektir. Fonlarınızı görüntülerken, MetaMask cüzdanınız çeşitli sözleşmelere birkaçbalanceOf() çağrısı yapar ve sonuçları gösterir.

Başka bir deyişle, tüm transferler, darphaneler, yakmalar ve DeFi protokol etkileşimleri sonuçta bu eşlemenin içindeki değerleri günceller.

Coin Dağıtımı

Sui'de dağıtılan sözleşmeler yeni tokenları temsil etmiyor. Bunun yerine Sui çerçevesi, bu işlevi sağlamak için bir Coin paketi kullanır. Basitleştirilmiş bir benzetme olsa da tek bir paketi sözleşme olarak düşünebilirsiniz. Nesneleri alıp diğer nesneleri geri getirebilen işlevleri ortaya çıkarır.

Kodlama ortamınızı ayarlamak için Sui'yi yüklemeyle ilgili belgeleri izleyin. Alternatif olarak yukarıda bahsettiğimiz Remix IDE'yi kullanarak WELLDONE Code eklentisini kurarak Sui'ye Move kodu yazabilirsiniz.

Aşağıdaki Move kodu örneği Coin modülünü içe aktarır ve onun

create_currency

parayı başlatma işlevi.

sui::coin::{Self, TreasuryCap} kullanın; public struct MY_COIN, {} eğlenceyi düşürdü init(witness: MY_COIN, ctx: &mut TxContext) {         let (hazine, metadata) = coin::create_currency(witness, 6, b"MY_COIN", b"", b"", option ::yok(), ctx);         transfer::public_freeze_object(metadata);         transfer::public_transfer(hazine, ctx.sender())     }

Aradığın zaman

create_currency()

, Sui, para biriminiz için TreasuryCap<T> ve CoinMetadata<T> nesnelerini döndürür; burada T, para biriminizin türüdür (önceki örnekte MY_COIN). 

Cüzdan adresiniz aslında bu nesneleri barındırır. Sahipliği izlemek için eşlemeleri kullanan ERC-20 yönteminin aksine, bunlar yalnızca cüzdanınızda bulunur ve başka hiçbir yerde bulunmaz.

Hazine Kapağı

"Hazine kapasitesi"nin kısaltması olan , yeni madeni para arzını basmak için gereken anahtardır. TreasuryCap güvenilir bir üçüncü tarafın farklı bir adresine aktarılabilir veya imha edilebilir. Hazine Kapağını yok etmek, bir ERC-20 sözleşmesindeki mülkiyetten vazgeçmeye benzer. 

Coin nesneleri nasıl temsil edilir?

Yeni tedarik sağlamak için,

Hazine Kapağı

sahibi Coin nane fonksiyonunu çağırır. İşlev, işlevin bastığı miktarı temsil eden bir Coin<T> nesnesi basar veya oluşturur. Kelimenin tam anlamıyla cüzdanınızda durur (alıcı olarak adresinizin verildiği varsayılarak). TreasuryCap sahibi tekrar mint() öğesini çağırırsa, süreç başka bir Coin<T> nesnesi oluşturur ve bu parayı da cüzdanınıza aktarır. Aynı para birimi için birden fazla Coin nesneniz olabilir ve o para birimindeki toplam bakiyeniz bu paraların toplamı kadardır.

ERC-20 ve Coin özellikleri

Ethereum ve Sui, aktarma ve harcama gibi benzer eylemler sunsa da konu tokenlara gelince, her bir blockchainin temel yapısı bu eylemlerin işleyişinde temel farklılıklar yaratıyor.

Darphane ve yakma

Yetkili bir kullanıcı, Ethereum'da yeni tokenleri, aşağıdaki numarayı arayarak basabilir:

gibi

o tokenın sözleşmesinde işlev görür. Bu, _balances eşlemesini günceller ve toplam arzı artırır. Herhangi bir kullanıcı yakma fonksiyonunu çağırabilir ancak sadece kendi bakiyesini yakmalarına izin verilir. 

Benzer şekilde Sui'de yetkili bir kullanıcı

gibi

Yukarıda açıklandığı gibi yeni madeni para basma işlevi. Aradaki fark, Sui'deki bakiyenizin paylaşılan bir durumdaki bir eşlemeyle temsil edilmemesi, cüzdanınızdaki nesnelerin arasında yer almasıdır. Bu anlamda ERC-20, banka kasasındaki parayı dijital olarak değiştirmenize izin veren bir ATM kartına benzer ve Sui, bakiyenizin elinizde bulunan nakite bağlı olduğu fiziksel bir cüzdan gibidir.

Sui, aynı türden madeni paraların bölünmesini ve birleştirilmesini destekler. Yani para biriminizi temsil eden birden fazla Coin nesneniz varsa bunları tek bir nesnede birleştirebilirsiniz. Ayrıca tek bir Coin nesnesini alıp aynı türden birden fazla Coin nesnesine bölebilirsiniz. 

Aktarılıyor

Ethereum'da token aktarırken,

Aktar

token sözleşmesinin işlevi. Bu işlev, aktardığınız bakiyenin sizde olduğunu doğrular, ardından bakiyenizi düşerek, fiziksel deftere benzer şekilde aktardığınız adresin bakiyesini artırır.

Sui'de Coin nesnelerinin gerçek anlamda sahibi olduğunuz için Coin nesnesini başka bir adrese göndermeniz yeterlidir. Bakiyelerin güncel tutulmasını sağlamak için işlem hakkında bilgi verilmesi gereken merkezi bir konum yoktur. Sahip olunan bir nesneyi bir cüzdandan diğerine gönderme eylemi, blok zincirinin geri kalanını etkilemez. 

Bir nesnenin bu şekilde gönderilmesine tek sahipli işlem denir ve blok zincirinin mutabakatını gerektirmez. Bu nedenle Sui, tek sahipli işlemleri paralel olarak yürüterek çok hızlı bir şekilde kesinliğe ulaşıyor. Yalnızca Sui'de paylaşılan nesneler fikir birliği gerektirir.

Harcama

Ethereum kullanıcıları Onayla konseptine aşinadır. Herhangi bir DeFi protokolüyle etkileşim kurduğunuzda, tokenlarınızı sizin adınıza harcamak için öncelikle bu protokolü onaylamanız gerekir. Örneğin Uniswap'te takas yaptığınızda, onaylı yönlendirici token sözleşmesindeki transfer fonksiyonunu çağırır. Token sözleşmesi daha sonra arayanın ya sahibi ya da onaylanmış bir adres olduğunu doğrular.

Sui'nin bu yapısı yok. Bir nesnenin sahibiyseniz, onu devredebilecek tek taraf sizsiniz. Başka bir varlığın bu nesneyi cüzdanınızdan çekmesinin hiçbir yolu yoktur. Bunun yerine Sui'deki protokoller Coin nesnelerini girdi olarak alır. Örneğin, merkezi olmayan bir borsada takas işlevini çağırmak için, Coin nesnenizi takas işlevine aktarmanız ve nesnenin sahipliğini protokole vermeniz gerekir. Artık protokol bu Coin nesnesine sahip olduğuna göre, onu istediğiniz türden başka bir Coin nesnesine değiştirebilir ve cüzdanınıza aktarabilir.

Sui'yi Anlamak

Sui üzerinde geliştirme yapmak isteyen, Ethereum ve diğer blok zincirleri konusunda deneyimli geliştiriciler birçok benzer paradigma bulacaktır. Örneğin jetonlar aynı pratik amaçların çoğuna hizmet eder. Ancak yukarıda açıklanan temel farklılıkları öğrenmeye zaman ayırmayan geliştiriciler hataya düşecek.

Ayrıca geleneksel nesne yönelimli programlama ortamlarında deneyimli geliştiriciler Sui'de de benzer yapılar bulacaktır. Bir nesneyi cüzdanda saklayabileceğiniz veya kod aracılığıyla değiştirebileceğiniz bir şey olarak düşünmek sezgiseldir. 

Sui'de token oluşturma hakkında daha fazla bilgi edinmek isterseniz belgelere göz atın.