e
sv

Tezos akıllı sözleşmelerinin geliştirilmesi ve devreye alınması

avatar

Yazılım Method

  • e 0

    Mutlu

  • e 0

    Eğlenmiş

  • e 0

    Şaşırmış

  • e 0

    Kızgın

  • e 0

    Üzgün

Tezos, Ethereum'un ilk olduğu en eski akıllı sözleşme blok zincirlerinden biridir.

Ethereum, akıllı sözleşmeler geliştirmek ve dağıtmak için geliştiriciler arasında popüler bir seçim olsa da, yüksek ücretler ve yavaş işlemler nedeniyle uygulamaları çok ölçeklenebilir değildir. Buna karşılık Tezos uygulamalarının kurulumu çok verimli ve ucuzdur.

Bu kılavuzda, SmartPy CLI ile Tezos'ta akıllı sözleşmelerin nasıl geliştirileceğini ve dağıtılacağını öğreneceksiniz. Şunları ele alacağız:

Nihai projenin kodunu bu GitHub deposunda alabilirsiniz.

Önkoşullar

Bu makaleyi takip etmek için Tezos blok zincirine aşina olmanız gerekir. Bilginizin derinlemesine olması gerekmez.

Ethereum blok zinciri bilgisi gerekli değildir, ancak çok yardımcı olur.

Tezos nedir?

Tezos, yönetişim modeli ve kendi kendini geliştirme yeteneği ile uyarlanabilir olacak şekilde oluşturulmuş bir blok zinciri ağı ve akıllı sözleşme platformudur.

Tezos ve Ethereum, akıllı sözleşmeleri ve DApp geliştirmeyi destekleyen benzer blok zincirleri olsa da, birkaç yönden farklıdırlar. Aşağıdaki Tezos ve Ethereum tablosu, iki ağ arasındaki bazı farklılıkları göstermektedir.

Tezos ve Ethereum: Bir karşılaştırma tablosu

Tezos Ethereum
Geliştiriciler, ağdaki blok zinciri protokolünü yükseltmek için önerilerde bulunur Geliştiriciler, blockchain protokolünü yükseltmek için bir hardfork kullanıyor
Paydaşlar, teklifleri kabul etmek veya reddetmek için oy vererek blok zinciri protokolüne yükseltmeleri kontrol eder Blockchain ağının yaratıcıları, blockchain protokolündeki yükseltmeleri yönetir
Akıllı sözleşmeleri yürütmek için resmi doğrulama kullanır Ağ üzerinde akıllı sözleşmeleri depolamak ve yürütmek için EVM'yi kullanır
Katılımcılar (düğümler), işlem doğrulama işlemlerine katılmak için bilgi işlem kaynakları sağlama veya belirteçlerini devretme seçeneğine sahiptir. Tüm katılımcılar (düğümler), doğrulama işlemlerine katılmak için bilgi işlem kaynakları sağlamalı ve madeni paralarını kullanmalıdır.
Gaz ücretleri düşüktür, bu da onu çok ölçeklenebilir kılar Gaz ücretleri gerçekten yüksek, bu da onu ölçeklenemez hale getiriyor

SmartPy nedir?

SmartPy, Tezos blok zincirinde kolayca akıllı sözleşmeler oluşturmanıza olanak tanıyan bir araçtır.

Python kullanarak SmartPy'de sözleşmeler yazarsınız. Python'a zaten aşina iseniz, yeni bir akıllı sözleşme programlama dili öğrenmeniz gerekmez.

SmartPy, diğer sözdizimlerini kullanan iki farklı şekilde gelir: TypeScript kullanan SmartTS ve OCaml kullanan SmartML.

SmartPy, Python komut dosyalarını Michelson'a derler. Michelson, Tezos'ta akıllı sözleşmeler için düşük seviyeli bir programlama dilidir. SmartTS ve SmartML, SmartPy aracı kullanılarak da derlenebilir.

Akıllı sözleşmeler nelerdir?

Akıllı sözleşmeler, bir blok zinciri ağında oluşturabileceğiniz, dağıtabileceğiniz ve yürütebileceğiniz programlardır . Akıllı sözleşmenizi dağıtmadan önce ağda bir düğüme sahip olmanız gerekmez.

Akıllı sözleşmelerle, bir sunucuya sahip olmadan veya bakımını yapmadan tüm cihazlar için erişilebilir uygulamalar oluşturabilirsiniz. Bu tamamen merkezi olmayan uygulamalar çok az bakım gerektirir veya hiç bakım gerektirmez.

Akıllı sözleşmeler, zincir üzerindeki programları yürütmenize ve zincirin kendisiyle etkileşime girmenize olanak tanıyan blok zincirlerinin tüm potansiyelini kullanır. Akıllı bir sözleşme ile jetonları tutabilir veya aktarabilir ve blok zincirindeki özel işlevlere erişebilirsiniz.

SmartPy CLI'yi kullanmaya başlama

SmartPy CLI'yi kurmak için aşağıdaki komutu çalıştırın:

 $ bash <(curl -s https://smartpy.io/cli/install.sh)

Bu komut, şu ağaç yapısıyla home bir smartpy-cli dizini oluşturur:

 smartpy-cli
├── tarayıcı.py
├── düğüm_modülleri/
├── kaynak.js
├── paket.json
├── paket kilidi.json
├── __pycache__/
├── akıllı.css
├── smart.js
├── smartpyc.js
├── smartpyc.py
├── smartpyio.py
├── smartpy.py
├── SmartPy.sh
├── akıllı top/
├── smart-ts-cli.js
├── şablonlar/
├── theme.js
└── tipografi.css

Kurulumu onaylamak için aşağıdakileri çalıştırın:

 $ ~/smartpy-cli/SmartPy.sh --version

SmartPy.sh kolayca erişilebilir kılmak için ek bir adım olarak, aşağıdakileri .bashrc dosyanıza veya ilgili profil dosyanıza kopyalayarak bir takma ad oluşturun:

 $ takma ad smartpy="$HOME/smartpy-cli/SmartPy.sh"

Artık şunları kullanabilirsiniz:

 $ smartpy --versiyon

Onun yerine:

 $ ~/smartpy-cli/SmartPy.sh --version

tezos-client kurulumu

Bu kılavuz, konuşlandırılmış bir akıllı sözleşmeyle etkileşim kurmak için tezos-client kullanır. tezos-client, kurmak için, Mac veya Linux işletim sistemi kullanmanıza bağlı olarak aşağıdaki komutlardan birini çalıştırın:

 # Mac
$ demleme musluğu serokell/tezos-packaging-stable https://github.com/serokell/tezos-packaging-stable.git
$ brew kurulum tezos-client

# Linux
$ wget https://github.com/serokell/tezos-packaging/releases/latest/download/tezos-client
$ chmod +x tezos-istemci
$ mkdir -p $HOME/.local/bin
$ mv tezos-client $HOME/.local/bin
$ echo 'export PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc
$ kaynak $HOME/.bashrc

Windows kullanıyorsanız, wsl ile bir Linux dağıtımı kurmanız ve Linux kurulumunu çalıştırmanız gerektiğini unutmayın.

tezos-client kurduktan sonra kurmanız gerekiyor. Aşağıdaki komutu çalıştırarak başlayın:

 $ tezos-client --endpoint https://jakartanet.ecadinfra.com yapılandırma güncellemesi

Bu kılavuz, akıllı bir sözleşmeyi dağıtmak ve onunla etkileşim kurmak için Jarkatanet test ağını kullanır. Yukarıdaki komut, tezos-client ağdaki https://jakartanet.ecadinfra.com düğümü aracılığıyla Jakartanet testnet'e bağlar.

tezos-client ile herhangi bir işlem yapmadan önce bir hesap bağlamanız gerekmektedir. Tezos, ağ ile ücretsiz olarak etkileşim kurmanıza izin veren Musluk hesapları sağlar.

Jakartanet Faucet web sitesini ziyaret etmeniz ve Faucet dosyasını indirmeniz gerekmektedir. Bunu yaptıktan sonra, terminalinizdeki indirme klasörünü açın ve şu komutu çalıştırın:

 $ tezos-client hesap musluğunu ./jakartanet.json ile etkinleştirin

Komut, tezos-client Faucet hesabını etkinleştirir ve ona bir takma ad faucet verir. Bu hesabın bakiyesini kontrol etmek için jakartanet.json dosyasını açın, pkh değerini kopyalayın ve ardından şu komutu çalıştırın:

 $ tezos-client <address> için bakiye alıyor

<address> öğesini kopyaladığınız pkh değeriyle değiştirin.

Tezos Faucet hesaplarının herkese açık olduğunu ve sınırlı miktarda Tez tokenine sahip olduğunu, bu nedenle kullanımınızı düzenlemeniz gerektiğini unutmayın.

SmartPy ile bir Tezos akıllı sözleşmesi geliştirme

Örnek akıllı sözleşmemizi oluşturmaya başlamak için yeni bir store_text.py dosyası oluşturun ve aşağıdakini içine kopyalayın:

 smartpy'yi sp olarak içe aktar

class StoreText(sp.Contract):
    def __init__(kendi, değer):
        self.init(metin = değer)

    @sp.entry_point
    def replace(self, params):
        self.data.text = params.text

    @sp.entry_point # Not: "@" önündeki boşluklar
    def append(self, paragraflar):
        self.data.text += params.text

Yukarıdaki sözleşme parça parça şu şekilde işliyor:

İlk olarak, smartpy kitaplığını içe aktardık:

 smartpy'yi sp olarak içe aktar

Ardından sp.Contract genişleten bir sınıf tanımladık:

 class StoreText(sp.Contract):

Son olarak akıllı sözleşme içerisinde birkaç madde tanımladık; ilk olarak, text başlatacak bir kurucu:

 def __init__(self, value): # Not: "def"den önceki boşluklar
        self.init(metin = değer)

İkincisi, text değerini değiştirecek bir giriş noktası:

 @sp.entry_point # Not: "@" önündeki boşluklar
    def replace(self, params):
        self.data.text = params.text

Üçüncüsü, text bir dize eklemek için bir giriş noktası:

 @sp.entry_point # Not: "@" önündeki boşluklar
    def append(self, paragraflar):
        self.data.text += params.text

Şimdi, akıllı sözleşmenin nasıl test edileceğine bir göz atalım.

Tezos akıllı sözleşmesini test etme

Tezos'a dağıtılan akıllı sözleşmeler değiştirilemez veya kaldırılamaz. Bu bir sorun olabilir çünkü sözleşmede hatalar olabilir ve hatalar maliyetli hatalara ve fon kaybına neden olabilir.

SmartPy, devreye almadan önce sözleşmenizi kolayca test etme olanağı sağlar. Sözleşmeyi test etmek, çalıştırmak için herhangi bir jeton veya cüzdan hesabı gerektirmez. Tek yapmanız gereken store_text.py dosyasını açmak ve altına aşağıdakini kopyalamak:

 @sp.add_test(name = "Mağaza Metni")
tanım testi():
  senaryo = sp.test_scenario()
  sözleşme = StoreText("Merhaba")
  senaryo += sözleşme

  senaryo.verify(contract.data.text == "Merhaba")

  sözleşme.replace(metin = "Merhaba")
  sözleşme.append(metin = ", orada!")
  senaryo.verify(contract.data.text == "Merhaba, işte!")

Snippet'in nasıl çalıştığı aşağıda açıklanmıştır. İlk olarak, bir test işlevini test komut dosyası olarak kaydettik:

 @sp.add_test(name = "Mağaza Metni")

Ardından test fonksiyonunu tanımladık:

 tanım testi():

Kalan satırlarda bir test senaryosu oluşturduk:

 senaryo = sp.test_scenario()

Sözleşmeyi "Hello" ile başlattı:

 sözleşme = StoreText("Merhaba")

Sözleşme örneğini senaryoya ekledi:

 senaryo += sözleşme

Sözleşmenin text değerinin "Hello" olduğu doğrulandı:

 scenario.verify(contract.data.text == "Hello")

replace ve append giriş noktaları olarak adlandırılır:

 sözleşme.replace(metin = "Merhaba")
  sözleşme.append(metin = ", orada!")

Ve son olarak, sözleşmenin text değerinin artık "Hi, there" olduğunu doğrulayın:

 senaryo.verify(contract.data.text == "Merhaba, işte!")

Testi ekledikten sonra dosyayı kaydedin ve şu komutu çalıştırın:

 $ ~/smartpy-cli/SmartPy.sh testi store_text.py ./test-output

Test başarılı olursa derleyici bir hata mesajı atmaz.

Akıllı sözleşmeyi Michelson'a derlemek

Akıllı sözleşmenizi dağıtmadan önce Michelson'a derlemeniz gerekir. Daha önce de belirtildiği gibi Michelson, Tezos blok zincirindeki akıllı sözleşmeler için kullanılan düşük seviyeli bir programlama dilidir.

store_text.py derlemek için aşağıdakileri çalıştırın:

 $ ~/smartpy-cli/SmartPy.sh mesajı derleyin.py ./output

Başarılı bir şekilde derlendiyse, aşağıdaki gibi bir output klasörü görmelisiniz:

 çıktı/
├── senaryo.json
├── script_init.py
├── script_pure.py
└── mağazaMesaj/
    ├── log.txt
    ├── step_000_cont_0_contract.json
    ├── step_000_cont_0_contract.py
    ├── step_000_cont_0_contract.tz
    ├── step_000_cont_0_sizes.csv
    ├── step_000_cont_0_storage.json
    ├── step_000_cont_0_storage.py
    ├── step_000_cont_0_storage.tz
    └── step_000_cont_0_types.py

output dizini, akıllı sözleşmeyi dağıtmak için gerekli tüm dosyaları içerir.

Tezos akıllı sözleşmesini dağıtma

store_text.py dağıtmak için terminalde output/storeMessage klasörünü açın ve aşağıdaki komutu çalıştırın:

 $ ~/smartpy-cli/SmartPy.sh Originate-contract --code step_000_cont_0_contract.json --storage step_000_cont_0_storage.json --rpc https://jakartanet.ecadinfra.com

[BİLGİ] - RPC https://jakartanet.ecadinfra.com/...
[BİLGİ] - Sözleşme KT1………………CAjjW kaynaklı!!!

Komut şu şekilde çalışır:

  • Originate originate-contract , tezos-client bir sözleşme dağıtmasını ("oluşturmasını") söyler
  • --code step_000_cont_0_contract.json derlenmiş sözleşme dosyasına işaret ediyor
  • --storage step_000_cont_0_storage.json derlenmiş depolama dosyasına işaret eder
  • --rpc https://jakartanet.ecadinfra.com , dağıttığınız ağdaki bir RPC düğümüne işaret eder

Tezos akıllı sözleşmeleri genellikle iki bileşen içerir: depolama ve sözleşme. Depolama, sözleşmenin depoladığı verileri tutar ve sözleşme, akıllı sözleşmenin mantığını tutar.

Sözleşmeyi herhangi bir sözleşme veya depolama derlemesiyle dağıtabileceğinizi unutmayın. Komutu kullanırken aynı dosya uzantısı olmaları gerekir.

Varsayılan olarak, bir test ağında dağıtım yapıyorsanız, derleyici bir Faucet hesabı kullanacaktır. Ana ağa dağıtım yapıyorsanız veya cüzdan hesabınızı kullanmak istiyorsanız, --private-key işaretini ve ardından hesabın özel anahtarını ekleyin.

Dağıtılan akıllı sözleşmeyle etkileşim kurma

Dağıtılan akıllı sözleşmeyle etkileşime geçmeden önce, sözleşmenin şu anda nasıl göründüğünü bilmeniz gerekir. Bunu yapmak için tarayıcınızda SmartPy Explorer'ı açın ve şu adımları izleyin:

  1. “Alternatif Düğümler”e gidin
  2. Sözleşmenin adresini “Sözleşme” girişine yapıştırın
  3. "Belirli Bir Düğümde Keşfet" altında mainnet geçiş jakartanet
  4. RPC URL'sini https://jakartanet.ecadinfra.com metin kutusuna yapıştırın
  5. “Belirli Bir Düğümde Keşfet” seçeneğine tıklayın

Sözleşme verileri göründüğünde, metin deposu “Merhaba, Orada!” Olarak görüntülenmelidir.

Artık sözleşme metnini bildiğinize göre, onu “Merhaba, İşte!” olarak değiştirebilirsiniz. bu komutla replace giriş noktasını çağırarak:

 $ tezos-client, faucet'tan <contract-address>'e 0 aktarımı --entrypoint replace --arg '"Merhaba, İşte!"'

Komut başarılıysa, gezgini yenilediğinizde, depolama artık "Merhaba, Orada!"

Komutu çalıştırmadan önce <contract-address> dağıtılan sözleşmenin adresiyle değiştirmeniz gerektiğini unutmayın.

Çözüm

Bu makale, SmartPy ile Tezos üzerinde akıllı sözleşmeler oluşturma sürecini kapsar. Akıllı sözleşmeler oluşturmak, merkezi olmayan uygulamalar ve organizasyonlar oluşturmak için blok zinciri ağından tam olarak yararlanmanıza olanak tanır.

Umarım bu makale Tezos'ta akıllı sözleşmeler oluşturma sürecini anlamanıza yardımcı olmuştur. Akıllı sözleşmeler hakkında daha fazla bilgi edinmek isterseniz, kaçınılması gereken akıllı sözleşme hatalarıyla ilgili bu makaleye göz atın.

Okuduğunuz için teşekkürler! Ve iyi günler.Tezos akıllı sözleşmelerinin geliştirilmesi ve devreye alınması

Tezos akıllı sözleşmelerini geliştirme ve dağıtma yazısı ilk olarak LogRocket Blog'da yayınlandı.

etiketlerETİKETLER
Üzgünüm, bu içerik için hiç etiket bulunmuyor.

Sıradaki içerik:

Tezos akıllı sözleşmelerinin geliştirilmesi ve devreye alınması