دیپلوی اسمارت کانترکت نیاز به سیستم خاصی نداره و فقط محیط کدنویسی لینوکس میخواد
آموزش راهاندازی محیط کدنویسی رو از این توییت ببینید
در این پارت هرکدوم از پکیج ها رو نصب داشتید ازش بگذرید
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
دستور نصب این قسمت 20 دقیقه زمان میبره، می تونید با دستور اسکرین که قرار میدم، اون دستور رو در بک گراند اجرا کنید تا اگر ترمینال قطع شد دوباره همون اسکرین رو بازیابی کنید
screen -S suicli
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
دو دستور اول فایل های قبلی رو حذف میکنه که به نظرم برای اینکه مطمئن شید به خطا نمیخورید بزنید
Delete old Files
sui genesis --force
rm -rf .sui/sui_config/client.yaml
Run CLI
press
YEnter
https://fullnode.testnet.sui.io:443Enter
testnetEnter
0با اینکار برای شما یک ولت جدید ساخته میشه که مشخصاتش رو سیو کنید
اگر خواستید ولت قبلیتون رو ریکاور کنید با استفاده ازین دستور فقط 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 آدرس ولتتون رو با عبارت بالا در دستور عوض کنید
برای چک کردن اینکه کانفیگ رو صحیح انجام دادید
cat .sui/sui_config/client.yaml

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

sui move new my_first_package
یک پوشه برای پروژه میسازه که حاوی فایل کانفیگ و اسمارت کانترکت هست
nano my_first_package/sources/my_module.move
با دستور بالا فایل اسمارت کانترکت به نام “مای ماژول” ساخته میشه و منوی ادیت فایل در ترمینال طبق عکس باز میشه که باید کدهای داخل این لینک رو کپی و توی ترمینال با راست کلیک جاگذاری کنید

بعد از کپی:
Press Ctrl + X
Press Y
Press Enter
وارد پوشه پروژه بشید
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
برای اینکه آبجکت آیدی خودتون رو چک کنید
sui client object Object_ID
برای مثال دستور بالا با “آبجکت آیدی” من
sui client object 0x4e17ea3a175b28a4a9f32f9b8f78c713f74941e8
جوابی که از دستور بالا میگیرید، آخرین خطش عبارت زیر رو میبینید که 0 هست یعنی تراکنشی انجام نشده swords_created: 0
برای تراکنش روی کانترکت خودتون
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
تبریک میگم شما کانترکت خودتون روی شبکه تست نت سوی دیپلوی کردید و روی اون تراکنش زدید
موفق و موید باشید

