Пост
Поделитесь своими знаниями.
Освоение сети Move on Sui: полное руководство для новичков и строителей
Если вы занимались разработкой блокчейна, то наверняка заметили растущий ажиотаж вокругSui Networkи ее уникального языка программирования —Move. Это не просто еще один «язык смарт-контрактов», конкурирующий за внимание разработчиков. Move предлагает совершенно иной подход к программированию блокчейна — быстрый, безопасный и идеальный для приложений, основанных на активах.
В этом посте вы получите исчерпывающую информацию о Move on Sui**— о том, как он работает, в чем его отличие и как начать развивать его. Мы также рассмотрим распространенные ошибки, лучшие практики и реальные советы по достижению успеха.
##1. Что такое Move и почему Суй им пользуется?
Move — этоязык программирования на основе байт-кода, изначально разработанный компанией Meta (ранее Facebook) для блокчейна Libra/Diem. Компания Sui приняла Move, но расширила и оптимизировала его в соответствии со своейобъектно-ориентированной моделью данных.
По своей сути, Move разработан длябезопасного управления цифровыми активами. Традиционные языки смарт-контрактов, такие как Solidity, рассматривают активы как цифры в остатках на счетах, но в Move активы — этопервоклассные гражданины. Это означает:
- Активынельзя случайно дублировать.
- Активынельзя потерятьбез их явного уничтожения.
- Активыдолжны иметь четкое право собственности.
Эта философия позволяет легче рассуждать о безопасности активов и предотвращает распространенные ошибки и взломы.
Почему Суй выбрала Move:
*Безопасность: Право собственности на активы регулируется на языковом уровне. *Скорость: Программы Move работают быстро и позволяют избежать ненужных вычислений. *Гибкость: Вы можете создавать собственные типы активов, помимо простых токенов. *Параллельное выполнение: Архитектура Sui позволяет коду Move обрабатывать транзакции параллельно, повышая пропускную способность.
##2. Как работает Move на Sui
В то время как другие блокчейны выполняют транзакции последовательно, Sui организует данные вобъекты. Каждый объект:
- Имеетвладельца(это может быть пользователь, другой объект или система).
- Может быть изменен только владельцем или с помощью определенных функций Move.
- Имеет уникальный идентификатор.
Move on Sui имеет три основных концепции:
1.Объекты
- Все, что хранится в блокчейне, является объектом.
- Объекты хранятся и изменяются модулями Move.
- Пример: монета, NFT, игровой персонаж.
2.Модули
- Контейнеры для кода Move.
- Определите типы, функции и правила поведения объектов.
3.Транзакции
- Действия пользователей.
- Вызывайте функции Move, передавая принадлежащие им объекты.
##3. Сравнение перехода на Solidity
| Функция | Перемещение (Sui) | Надежность (Ethereum) | ------------------------------------------------------------------| | | -------------------------------------------| |Основное направление| Безопасность активов и владение ими | Общая логика смарт-контрактов | |Модель данны��| На основе объекта | На основе учетной записи | |Исполнение| Параллельное (при отсутствии конфликтов объектов) | Последовательное | |Безопасность типов| Строгая типизировка, ресурсы нельзя копировать/удалять | Более свободная система типов | |Безопасность| Предотвращает двойные расходы и непреднамеренную потерю активов | Распространенные проблемы: повторный ввод данных, переполнение целых чисел |
Если вы работаете в Solidity, вы заметите, что Moveзаставляет васоткрыто говорить об обращении с активами. Поначалу это иногда расстраивает, но именно поэтому программы Move использовать сложнее.
##4. Написание модуля First Move на Sui
Давайте рассмотрим простой пример Move: модуль, который создает и передает собственный токен.
###Создание токена
module my_project::my_coin {
use sui::coin;
use sui::transfer;
use sui::tx_context::{self, TxContext};
/// Create a new coin type
struct MyCoin has drop, store {}
/// Initialize a new coin and send it to the transaction sender
public entry fun mint(ctx: &mut TxContext) {
let coin = coin::mint<MyCoin>(1000, ctx);
transfer::transfer(coin, tx_context::sender(ctx));
}
}
Объяснение:
struct MyCoin
определяет новый тип монеты.mint
функция создает 1000 единицMyCoin
и передает их отправителю.TxContext
предоставляет доступ к деталям транзакции (например, к тому, кто ее отправил).
##5. Типы ресурсов Move — секретный соус
Move вводиттипы ресурсов, которые являютсянекопируемыми и не дублируемыми структурами данных. В повседневной жизни: если у вас есть банкнота номиналом в 10 долларов, ее нельзя просто «скопировать» — вы можете оставить ее у себя в руках или отдать. Ресурсы работают точно так же.
В движении:
struct MyCoin has key, store {
value: u64
}
*** key
— Может храниться как объект верхнего уровня.
*** store
— Может храниться внутри другого объекта.
Если вы попытаетесьскопироватьресурс, компилятор откажется компилировать ваш код. Это предотвращает ошибки, связанные с случайным клонированием ресурсов.
##6. Расширения переездов, специфичные для костюма
Sui внесла несколько изменений в vanilla Move, чтобы оптимизировать его дляобъектного исполнения:
*Динамические поля объектов: Поля к объектам можно добавлять после их создания. *Общие объекты: Несколько пользователей могут взаимодействовать с одним и тем же объектом. *Изменяемые ссылки: Разрешайте контролируемое изменение данных объекта. *Эмиссия событий: Модули Move могут генерировать события для слушателей, находящихся вне сети.
Например, создание общей таблицы лидеров в играх:
struct Leaderboard has key {
scores: vector<u64>
}
Это может быть обновлено несколькими игроками, не создавая узких мест в блокчейне.
##7. Рабочий процесс разработки
Вот основной рабочий процесс разработки с помощью Move on Sui:
1.Установите пользовательский интерфейс
curl -fsSL https://sui.io/install.sh | bash
2.Создайте новый пакет Move
sui move new my_project
sources
Запишите свои модулив папку.
4.Создайте свой пакет
sui move build
5.Опубликуйте в Sui
sui client publish --gas-budget 100000000
6.Функции вызововс использованием:
sui client call --package <PACKAGE_ID> --module my_module --function my_function
##8. Тестирование кода перемещения
Sui Move поддерживает модульное тестирование прямо на языке.
Пример:
#[test]
fun test_mint() {
let ctx = test::new_tx_context(@0x1);
my_project::my_coin::mint(&mut ctx);
// Add assertions here
}
Запустите тесты:
sui move test
##9. Типичные ошибки новичков
&mut TxContext
*Забывание передать txContext— для создания или передачи объектов требуется множество функций.
*Неверное право собственности на объект— если вы им не владеете, вы не можете изменить его.
*Не занимайтесь уничтожением активов— вы должны явно «уничтожить» ресурсы, которые вам больше не нужны.
*Публикация без управления версиями— Обновление модуля означает публикацию новой версии.
##10. Лучшие практики для Move on Sui
*Используйте четкие правила именования— делает код удобным для чтения. *Ограничьте использование общих объектов— они работают медленнее, чем принадлежащие им объекты. *Создавайте события, связанные с изменением состояния— помогает при индексировании вне сети. *Напишите тщательные тесты— компилятор многое ловит, но логические ошибки все равно случаются. *Документируйте свои модули— в будущем вы будете вам благодарны.
##11. Варианты использования в реальном мире
*Игровые активы— Каждый меч, шкура или домашнее животное могут быть уникальным предметом. *Торговые площадки NFT— безопасные переводы и аукционы со встроенными механизмами проверки прав собственности. *Протоколы DeFi— кредитование, стейкинг и свопы с использованием безопасной обработки активов. *Отслеживание цепочки поставк— представляйте товары как объекты, перемещающиеся по системе.
##12. Будущее компании Move on Sui
Язык Sui Move все еще развивается. Текущая работа включает в себя:
- Улучшенныйинструментарий разработчика. *Стандартные библиотекидля распространенных паттернов. *Функциональная совместимостьс другими блокчейнами.
По мере распространения мы можем ожидать расширения документации, более крупных проектов с открытым исходным кодом и более глубокой интеграции с инфраструктурой Web3.
##Заключительные мысли
Если вы серьезно относитесь к созданию безопасных и высокопроизводительных блокчейн-приложений**, Move on Sui стоит вашего внимания. Строгий, но логичный дизайн позволяет избежать целых категорий ошибок, а также предлагает инновационные варианты использования, невозможные в традиционных цепочках, основанных на учетных записях.
Независимо от того, создаете ли вы протокол DeFi, игру или сложную экосистему NFT, Move предоставит вамстроительные блоки для более безопасного и быстрого будущего блокчейна.
- Move CLI
- Move
- Smart Contract
Ответы
1Знаете ответ?
Пожалуйста, войдите в систему и поделитесь им.
Move is an executable bytecode language used to implement custom transactions and smart contracts.
Заработай свою долю из 1000 Sui
Зарабатывай очки репутации и получай награды за помощь в развитии сообщества Sui.
