Cover photo

How To Deploy SUI Smart Contract

آموزش دیپلوی اسمارت کانترکت روی تست نت شبکه سوی

دیپلوی اسمارت کانترکت نیاز به سیستم خاصی نداره و فقط محیط کدنویسی لینوکس میخواد

آموزش راه‌اندازی محیط کدنویسی رو از این توییت ببینید

مراحل دیپلوی اسمارت کانترکت:

1. Install Dependecies

در این پارت هرکدوم از پکیج ها رو نصب داشتید ازش بگذرید

1.1 Install Linux Dependecies

sudo apt-get update \
&& sudo apt-get install -y --no-install-recommends \
tzdata \
ca-certificates \
build-essential \
libssl-dev \
libclang-dev \
pkg-config \
openssl \
protobuf-compiler \
cmake

1.2 Install cURL

1.3 Install Git

sudo apt-get install git-all

1.4 Install screen

sudo apt-get install screen

1.5 Install rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustup update stable
rustup default stable

2. Install Sui CLI

دستور نصب این قسمت 20 دقیقه زمان میبره، می تونید با دستور اسکرین که قرار میدم، اون دستور رو در بک گراند اجرا کنید تا اگر ترمینال قطع شد دوباره همون اسکرین رو بازیابی کنید

2.1 Make Screen

screen -S suicli

2.2 Install Sui CLI

cargo install --locked --git https://github.com/MystenLabs/sui.git --branch testnet sui
در صورت نصب صحیح
در صورت نصب صحیح

دستورات کمکی در صورت نیاز وگرنه صبر کنید تا نصب دستور بالا انجام شه

خروج اسکرین (انتقال به بک گراند)

Ctrl + A + D

خروج و حذف اسکرین

Ctrl + C

لیست اسکرین ها

screen -ls

بازیابی اسکرین

screen -d suicli && screen -r suicli

2.3 Configure Sui CLI

دو دستور اول فایل های قبلی رو حذف میکنه که به نظرم برای اینکه مطمئن شید به خطا نمیخورید بزنید

Delete old Files

sui genesis --force
rm -rf .sui/sui_config/client.yaml

Run CLI

  1. press Y

  2. Enter https://fullnode.testnet.sui.io:443

  3. Enter testnet

  4. Enter 0

    با اینکار برای شما یک ولت جدید ساخته میشه که مشخصاتش رو سیو کنید

2.4 Recover Wallet

اگر خواستید ولت قبلیتون رو ریکاور کنید با استفاده ازین دستور فقط 12 کلمه ولت رو بین 2 علامت “ “ جاگذاری کنید

sui keytool import "word1 word2 word3 word4 word5 word6 word7 word8 word9 word10 word11 word12" ed25519

Switch to a new active address

 sui client switch --address your_address

your_address آدرس ولتتون رو با عبارت بالا در دستور عوض کنید

2.6 Check Your Config

برای چک کردن اینکه کانفیگ رو صحیح انجام دادید

cat .sui/sui_config/client.yaml
در صورتی که کانفیگ رو صحیح انجام داده باشید
در صورتی که کانفیگ رو صحیح انجام داده باشید

Active address باید آدرس ولت خودتون باشه

2.7 $SUI token Faucet

برای دریافت فاست توکن سوی روی شبکه تست نت فقط باید از طریق دیسکورد پروژه آدرس خودتون رو با فرمتی که گفته شده در کانال مخصوص طبق عکس قرار بدید

testnet-faucet
testnet-faucet

3. Smart Contract

3.1 Create new project ( my_first_package)

sui move new my_first_package

یک پوشه برای پروژه میسازه که حاوی فایل کانفیگ و اسمارت کانترکت هست

3.2 Create new smart contract file ( my_module.move )

nano my_first_package/sources/my_module.move

با دستور بالا فایل اسمارت کانترکت به نام “مای ماژول” ساخته میشه و منوی ادیت فایل در ترمینال طبق عکس باز میشه که باید کدهای داخل این لینک رو کپی و توی ترمینال با راست کلیک جاگذاری کنید

منو ادیت فایل my_module.move
منو ادیت فایل my_module.move

بعد از کپی:

Press Ctrl + X

Press Y

Press Enter

3.3 Deploy Contract On Sui Testnet Network

وارد پوشه پروژه بشید

cd my_first_package

دیپلوی کانترکت

sui client publish --gas-budget 1000

اگر کانترکت شما با موفقیت روی شبکه دیپلوی شده باشه، باید یک خروجی مثل موارد زیر بهتون داده باشه

Created Objects:
ID: 0x4e17ea3a175b28a4a9f32f9b8f78c713f74941e8 , Owner: Account Address ( 0xf1ba1e0bd0741cba3ce5f65de2827452091e3bfe )

ID: 0xa9a9d2280b4eaf9b2fe12c6f3c200452b00fb6f5 , Owner: Immutable

Mutated Objects:
ID: 0x39b9f0807deb7b88a3b25cbe6e98857c635290f3 , Owner: Account Address ( 0xf1ba1e0bd0741cba3ce5f65de2827452091e3bfe )

Save 2 “Created Objects” ID با دستور دیپلوی، 2 تا آی دی طبق خروجی بالا میسازید که باید برای تراکنش روی اسمارت کانترکت اونهارو سیو کنید توجه: آی دی های شما با من فرق میکنه که باید آی دی خودتون رو در نظر بگیرید ID - Owner: Account address = Object_ID 0x4e17ea3a175b28a4a9f32f9b8f78c713f74941e8

ID - Owner: Immutable = Contract_ID 0xa9a9d2280b4eaf9b2fe12c6f3c200452b00fb6f5

Owner: Account address = Wallet_Address

3.4 Check your Object_ID

برای اینکه آبجکت آیدی خودتون رو چک کنید

sui client object Object_ID

برای مثال دستور بالا با “آبجکت آیدی” من

sui client object 0x4e17ea3a175b28a4a9f32f9b8f78c713f74941e8

جوابی که از دستور بالا میگیرید، آخرین خطش عبارت زیر رو میبینید که 0 هست یعنی تراکنشی انجام نشده swords_created: 0

4. Interaction with Smart Contract

برای تراکنش روی کانترکت خودتون

sui client call --package Contract_ID --module "my_module" --function "sword_create" --args Object_ID 5 5 Wallet_Address --gas-budget 1000

در دستور بالا 3 مورد زیر رو با اطلاعاتی که در مرحله دیپلوی سیو کردید جاگذاری کنید

Contract_ID Object_ID Wallet_address

برای مثال با آیدی های من:

sui client call --package 0xa9a9d2280b4eaf9b2fe12c6f3c200452b00fb6f5 --module "my_module" --function "sword_create" --args 0x4e17ea3a175b28a4a9f32f9b8f78c713f74941e8 5 5 0xf1ba1e0bd0741cba3ce5f65de2827452091e3bfe --gas-budget 1000

دوباره آبجکت آیدی خودتون چک کنید

sui client object Object_ID

میبینید که مقدار عبارت زیر از 0 به 1 تبدیل شده یعنی شما یک تراکنش روی اسمارت کانترکت خودتون انجام دادید swords_created: 1

تبریک میگم شما کانترکت خودتون روی شبکه تست نت سوی دیپلوی کردید و روی اون تراکنش زدید

موفق و موید باشید