Cudos Network, herkes için yüksek performanslı, güvensiz, izinsiz bulut bilişim sağlamak için tasarlanmış özel amaçlı bir blok zinciridir.

Bu öğreticide, Cudos genel test adette bir CosmWasm akıllı sözleşmesi dağıtacağız.

1) RPC Düğümü

İlk olarak, ortamınızı ayarlamanızgerekir Blockchain ile etkileşim kurmak için kullanacağımız ikili oluşturucu kapsayıcısını oluşturacağınız.

Akıllı sözleşmeyi blok zincirine yüklemek için ayrıca bir RPC düğümüne (=bağlantı noktası 26657 açık olan tam düğüm) erişmeniz gerekir. Bunu kullanabilirsiniz, yukarı olduğu sürece: https://sentry1.gcp-uscentral1.cudos.org:26657 .

Dışarıdan barındırılan bir RPC düğümüne erişiminiz yoksa (yani yukarıdaki düğüm her nedense aşağıdaysa), her zaman kendi düğümünüzü kurabilir ve çalıştırabilirsiniz.

2) Pas

CosmWasm akıllı sözleşmeleri Rust, bu yüzden Rust derleyicisini yüklememiz gerekiyor.

# Install rustup.
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh# Use the latest stable version.
$ rustup default stable# Add the wasm32 target and make sure it was installed correctly.
$ rustup target add wasm32-unknown-unknown
$ rustup target list --installed

Varolan Akıllı Sözleşmeyi karşıdan yükleme

Basitlik adına, zincire mantarlı bir belirteç (ERC20 gibi) dağıtır CW20 sözleşmesini kullanıyor olacağız. Kendi akıllı sözleşmenizi dağıtmaya çalışıyorsanız, Derleme‘ye atlayabilirsiniz.

CW20 akıllı sözleşmesi GitHub’daki CosmWasm/cw-plus deposundan indirilebilir. CUDOS için v0.9.0’ı ödememiz gerekir.

$ git clone --depth 1 --branch v0.9.0 https://github.com/CosmWasm/cw-plus.git

Derleme

Sözleşmenin kök dizininde, lütfen aşağıdaki komutu çalıştırın.

# Go to root directory of CW20 contract.
$ cd cw-plus# Optimize and compile the smart contract.
$ docker run --rm -v "$(pwd)":/code --mount type=volume,source="$(basename "$(pwd)")_cache",target=/code/target --mount type=volume,source=registry_cache,target=/usr/local/cargo/registry cosmwasm/workspace-optimizer:0.12.4

Derleme yapıldıktan sonra, .wasm yürütülebilir dosyanın ikili oluşturucu kapsayıcısına kopyalanması gerekir.

# Make sure the binary-builder is in the list of running containers.
$ docker ps --format '{{.Name}}'# Copy the .wasm executable into the /usr/cudos directory of the binary-builder.
$ docker cp artifacts/cw20_base.wasm binary-builder:/usr/cudos

Dağıtım

CW20 akıllı sözleşmesinin, diğer şeylerin yanı sıra jetonları basabilecek ve yazabilecek bir sahip hesabına ihtiyacı vardır. Zaten bir hesabınız yoksa, lütfen sözleşme sahibi olarak kullanmak istediğiniz mevcut bir hesabı oluşturun veya kurtarın.

# Create a new owner account (if needed).
$ cudos-noded keys add owner --keyring-backend file# To recover an account, add the --recover flag to the command above.

Sözleşmeyi dağıtmak için, sahip hesabının gaz için ödeme yapmak için bazı CUDOS belirteçlerine ihtiyacı vardır,bu nedenle musluktan biraz alın.

Tamam, akıllı sözleşmeyi uygulamaya hazırız.

$ docker exec -it binary-builder cudos-noded tx wasm store /usr/cudos/cw20_base.wasm --from owner --keyring-backend file --chain-id cudos-testnet-public --node https://sentry1.gcp-uscentral1.cudos.org:26657 --gas auto --gas-adjustment 1.3 -y | tee /dev/tty | tail -1 | tr -d '\r' | jq -r '.logs[0].events[-1].attributes[-1].value' | tee /dev/tty

Çıktı size sözleşme kimliği vermelidir.

Örnekleme

Dağıtılan bir akıllı sözleşmenin örneği oluşturulmadıkça etkileşimde bulunamaz. Örnekleme esasen, bir anlamda “sözleşmeyi hayata geçiren” belirtecin adı, sembol, ondalıklar ve benzeri özel değerleri sözleşmeye geçirme işlemidir.

Önce özel başlatma parametrelerimizi ayarlayalım.

$ INIT=$('{"name":"<TOKEN_NAME>","symbol":"<TOKEN_SYMBOL>","decimals":<DECIMALS>,"initial_balances":[<ACCOUNTS>],"mint":{"minter":"<MINTER_ADDR>","cap":"<TOKEN_CAP>">
  • <>CW20 jetonunuza vermek istediğiniz ad TOKEN_NAME, örneğin “Süper Cudos”
  • <TOKEN_SYMBOL > CW20 jetonunuzun paydasıdır, örneğin “scudos”
  • <ONDALıK > DEĞER, belirtecinizin sahip olması gereken ondalık basamak sayısıdır, örneğin 3 (=en küçük değer 0,001 olur)
  • <HESAP> gibi bir veya daha fazla JSON nesnesi dizisidir {"address": "<CUDOS_ADDR>","amount":<TOKEN_AMOUNT>} nerede <CUDOS_ADDR> cudos1... verilen adres <TOKEN_AMOUNT> sözleşme örneğin, sözleşme örneğini oluşturma belirteçleri {"address": "cudos1d0new9u2f80rcmmlw0zftxeh0385c2gwpmdv8v","amount":1000}
  • <TOKEN_CAP, > “10000000000000” gibi, minter’in basabileceği maksimum jeton miktarıdır.

Şimdi CW20 sözleşmemizi özelleştirdiğimize göre, örnekleelim.

$ docker exec -it binary-builder cudos-noded tx wasm instantiate <CONTRACT_ID> $INIT --from owner --label "CW20" --keyring-backend file --chain-id cudos-testnet-public --node https://sentry1.gcp-uscentral1.cudos.org:26657 --gas auto --gas-adjustment 1.3 -y
  • <CONTRACT_ID > sözleşmenin kimliği.

Şimdi, sözleşme durumunu kontrol ederek gerçekten örnek olduğundan emin olun.

$ docker exec -it binary-builder cudos-noded q wasm list-contract-by-code <CONTRACT_ID> --node https://sentry1.gcp-uscentral1.cudos.org:26657 --output json | jq -s

Sözleşmeyle etkileşim kurmak için sözleşmenin adresine ihtiyacınız vardır.

$ CONTRACT_ADDR=$(docker exec -it binary-builder cudos-noded q wasm list-contract-by-code <CONTRACT_ID> --node https://sentry1.gcp-uscentral1.cudos.org:26657 --output json | jq -r '.contracts[-1]' | tee /dev/tty | tail -1 | tr -d '\r')

Her sözleşme, Ethereum’daki bir ABI gibi onunla nasıl etkileşim kurabileceğinizi söyleyen şema dosyaları sağlamalıdır. Aşağıdaki komutu kullanarak bunları deponun kök dizininde kendiniz oluşturabilirsiniz.

$ cargo schema

Örneğin yöntemi ele transfer alalım. Şema bize bir nesneyi bir ve bir ile geçirmemiz gerektiğini "transfer" "amount" "recipient" söylüyor.

$ TRANSFER=$('{"transfer":{"amount":100,"recipient":"cudos1d0new9u2f80rcmmlw0zftxeh0385c2gwpmdv8v"}}')

Hareketi ateşlemek için aşağıdaki komutu kullanın. Defterin durumunu değiştirirken bunun için gaz ödemeniz gerektiğini unutmayın.

$ docker exec -it binary-builder cudos-noded tx wasm execute $CONTRACT_ADDR --from owner --keyring-backend file --chain-id cudos-testnet-public --node https://sentry1.gcp-uscentral1.cudos.org:26657 --gas auto --gas-adjustment 1.3 -y

Sorgu için bir örnek, bir hesabın belirteç bakiyesini denetlemekolacaktır. Bu, defterin durumunu değiştirmez ve bu nedenle gaz için ödeme gerektirmez.

$ BALANCE=$('{"balance":{"address":"cudos1d0new9u2f80rcmmlw0zftxeh0385c2gwpmdv8v"}}')

Bunu aşağıdaki komuta iletirseniz adresin bakiyesini alırsınız.

$ docker exec -it binary-builder cudos-noded q wasm contract-state smart $CONTRACT_ADDR $BALANCE --node https://sentry1.gcp-uscentral1.cudos.org:26657

Ve işte, başarılı bir şekilde dağıttınız, örneklediniz ve akıllı bir sözleşmeyle etkileşime girdiniz! Diğer uç noktalar ve sözleşmeler ile denemeler yapmak için çekinmeyin! Umarım, bu kılavuzu yararlı bulmuşsunuz! Eğer yaptıysan bize bir alkış bırak!

Bir dahaki sefere kadar!

Daha fazla bilgi edinin:

Web sitesi, Twitter, Telegram, YouTube, Discord, Orta, Podcast