İçindekiler
- 1 Önkoşullar
- 2 Tezos nedir?
- 3 SmartPy nedir?
- 4 Akıllı sözleşmeler nelerdir?
- 5 SmartPy CLI'yi kullanmaya başlama
- 6 tezos-client kurulumu
- 7 SmartPy ile bir Tezos akıllı sözleşmesi geliştirme
- 8 Tezos akıllı sözleşmesini test etme
- 9 Akıllı sözleşmeyi Michelson'a derlemek
- 10 Tezos akıllı sözleşmesini dağıtma
- 11 Dağıtılan akıllı sözleşmeyle etkileşim kurma
- 12 Çözüm
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:
- Tezos nedir?
- SmartPy nedir?
- Akıllı sözleşmeler nelerdir?
- SmartPy CLI'yi kullanmaya başlama
-
tezos-clientkurulumu - SmartPy ile bir Tezos akıllı sözleşmesi geliştirme
- Tezos akıllı sözleşmesini test etme
- Akıllı sözleşmeyi Michelson'a derlemek
- Tezos akıllı sözleşmesini dağıtma
- Dağıtılan akıllı sözleşmeyle etkileşim kurma
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-clientbir sözleşme dağıtmasını ("oluşturmasını") söyler -
--code step_000_cont_0_contract.jsonderlenmiş sözleşme dosyasına işaret ediyor -
--storage step_000_cont_0_storage.jsonderlenmiş 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:
- “Alternatif Düğümler”e gidin
- Sözleşmenin adresini “Sözleşme” girişine yapıştırın
- "Belirli Bir Düğümde Keşfet" altında
mainnetgeçişjakartanet - RPC URL'sini
https://jakartanet.ecadinfra.commetin kutusuna yapıştırın - “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ı.

Sohbete katıl0
Henüz yorum yok. İlk katkı senden gelsin.