Интервью с основателем языка Move: почему язык смарт-контрактов Sui Move подходит для создания продуктов Web3?
Недавно мы поговорили с техническим директором Mysten Labs и основателем языка программирования Move Сэмом Блэкшером о том, почему он разработал новый язык программирования смарт-контрактов Sui Move, о возможностях масштабирования Sui и о преимуществах децентрализованных технологий для строителей.
Следующее содержание интервью:
Q1. Во-первых, можете ли вы дать краткое описание того, что такое языки программирования, какие качества наиболее важны для разработчиков при выборе языка программирования и что побудило вас разработать собственный язык программирования?
Языки программирования — это инструменты для дружелюбного, безопасного, эффективного и четкого взаимодействия с компьютерами. Это особенно важно для компьютеров. Мы не можем общаться с компьютерами на естественном языке, потому что вся суть естественного языка заключается в его богатстве и выразительности. Когда вы используете немного другой тон или выбираете слегка разные способы выражения слов, ваше предложение или абзац могут иметь совершенно другой смысл.
А в языках программирования самое важное — это наличие точно определённой семантики. Когда вы пишете программу, вы понимаете, что она будет делать. Если вы вносите в неё небольшие изменения, вы знаете, какой результат это принесёт. Это необходимо поддерживать на нескольких уровнях, например, вы можете написать код на одном языке, который имеет одно значение, а затем он преобразуется в другую форму представления, и он также должен иметь то же значение, пока не дойдёт до обработчика машины.
Я считаю, что, в отличие от естественных языков, суть языков программирования заключается в том, что они предназначены для определенной области или конкретной задачи. В противном случае можно было бы использовать один язык программирования для выполнения всех задач. Но различные языки программирования существуют потому, что невозможно хорошо справляться со всеми областями. Они стремятся нацелиться на конкретные проблемные области и сосредоточиться на решении этих проблем. Например, если вы посмотрите на язык программирования Rust, который мы используем для написания блокчейна Sui и для работы большинства других систем в Mysten, он сосредоточен на написании кода, который является одновременно быстрым и высокопроизводительным, при этом обеспечивая безопасность. Он позволяет вам взаимодействовать с низкоуровневыми деталями, такими как память, структура потоков или параллелизм, но не заставляет вас ошибаться в них, как это делали предыдущие языки (например, C или C++).
Поэтому история Move очень похожа на это. Когда я его создавал, моя цель не заключалась в создании нового языка. Вы ранее упоминали, что разработчики ищут в языке. Они могут задаться вопросом: "Подходит ли этот язык для задачи, которую я хочу решить?" Но я думаю, что может быть более важно: "Есть ли у этого языка большая сообщество? Есть ли много доступных баз данных? Есть ли много программистов, которые его используют? Есть ли хорошие образовательные ресурсы?" Все это очень важно, поэтому планка для создания нового языка должна быть очень высокой. Даже если этот язык сам по себе лучше, если у него нет этих факторов, его преимущества теряют смысл. Создать большое и активное сообщество с нуля очень трудно.
В2. Можете поделиться дополнительной информацией о разработке Move?
Move возник из проекта Libra от Facebook. Моя задача тогда состояла не в создании нового языка, а в том, что "Libra нуждается в смарт-контрактах, поэтому выясните, что мы должны сделать." Я изучал самые разные варианты. Можем ли мы использовать Solidity в EVM? Должны ли мы использовать обычные универсальные языки, такие как WASM или JVM, и применить их к Libra? Или нам следует создать что-то свое?
Решение создать что-то свое основано на изучении существующих смарт-контрактов, понимании того, что пытаются сделать программисты, а также на том, в чем некоторые языки помогают им и в чем разочаровывают. Мой вывод заключается в том, что во многих случаях существующие языки смарт-контрактов действительно разочаровывают их.
Это можно четко увидеть по плохой записи безопасности Solidity, но более важно то, что эти смарт-контракты не являются очень традиционными типами программ. Solidity не является языком, построенным для того, что сейчас делают люди. Я не хочу критиковать его, потому что это первый язык смарт-контрактов, который еще не знает, что люди хотят с ним делать. Как только вы увидите, что люди пытаются с ним делать, я думаю, станет очевидно, что вам нужен набор различных абстракций и инструментов программирования, которые язык Solidity не предоставляет.
Поэтому эти смарт-контракты очень просты, они в основном делают две вещи. Они определяют типы активов, включая то, когда активы могут быть переданы, что с ними можно делать, кто может их читать, и правила, кто может их записывать. И проверяют политику контроля доступа, определяя, кто владеет этим активом, кто имеет право его использовать, кто имеет право с ним работать. Всё revolves around активами, вы хотите, чтобы эти активы имели такие же свойства, как и физические активы. Если я передаю вам что-то, то вы должны владеть этим, и я больше не владею этим.
В смарт-контрактах есть концепция собственности и передачи прав собственности, но на компьютере все это всего лишь цифры и байты, которые можно свободно копировать. Более того, вы знаете, что эти концепции не существуют в реальном мире. Поэтому вы хотите, чтобы был язык, который мог бы предоставить вам хорошую абстракцию о собственности и однородности. Как в реальном мире, но без необходимости принуждать программистов заново изобретать его. Вы хотите получить основные гарантии безопасности.
Вот в чем заключается функция Move и почему мы в конечном итоге создали этот новый язык. Эти задачи являются основополагающими для программирования смарт-контрактов. Их сложно воссоздать на других языках, включая существующие языки смарт-контрактов, и мы хотели бы спроектировать весь язык вокруг предоставления этих основных функций, чтобы программисты могли безопасно и эффективно писать код, не изобретая колесо каждый раз, когда им нужно написать какой-то код.
Q3. Sui использует модификацию Move, называемую Sui Move. Что вызвало эти изменения? Какие особенности Sui Move особенно подходят для создания продуктов в Web3?
Некоторые факторы способствовали этим изменениям, один из которых заключается в том, что первоначальной целью проекта Libra было создание соответствующей платежной сети. Поэтому мы пытались разработать Move как универсальный язык. Но мы также сознательно сделали некоторые вещи, потому что Libra хотела иметь ограничения. Одним из важных моментов является то, что они не хотели, чтобы люди могли отправлять определенные активы куда угодно. Они хотели, чтобы люди явно создавали аккаунт и устанавливали некоторые правила при создании аккаунта, например, что владелец аккаунта должен пройти KYC-аудит. Или, возможно, потребуется уплатить сбор за создание аккаунта, или его могут создать только небольшое количество людей, имеющих право на создание аккаунтов. Поскольку вся цель заключалась в том, что Libra хотела осуществлять соответствующие платежи и смарт-контракты, существуют эти ограничения. Но в более универсальной области Web3 ситуация как раз наоборот. Вы не хотите, чтобы на базовом уровне существовала соответствие, это концепция смарт-контрактов. Вы хотите, чтобы вещи были как можно более свободными, и чтобы можно было отправлять что-то на любой адрес. Затем вам не следует явно создавать аккаунты, так как это блокирует различные случаи использования. Это важный фактор.
Другим фактором является то, что, хотя мы сосредоточены на активах в Move, на тот момент в Libra мы не рассматривали, как сосредоточить внимание на активах непосредственно в самой транзакции. Таким образом, когда вы достигаете уровня транзакции, у вас все еще есть только этот API, в который вы вводите числа и булевы значения и другие неактивные вещи, а затем в Move вы используете эти числа для извлечения активов из счета и выполнения других операций. Оказалось, что большая часть кода, который вы выполняете, состоит из этой надоедливой работы с бухгалтерией, которая включает в себя извлечение этого, извлечение того, извлечение другого, хорошо, у меня есть все активы, которые я хочу. Они здесь, в моей мастерской, и теперь я могу начать делать что-то значимое. Затем в конце этого процесса вы можете сказать: "Хорошо, верните эти активы на этот счет, верните их на тот счет, реорганизуйте их."
В Sui мы тщательно обдумали, можно ли абстрагировать, если каждая программа начинается и заканчивается таким образом? Таким образом, логика обработки транзакций будет выполнять эту задачу для программистов, с их точки зрения, им нужно только подготовить необходимые активы и сразу приступить к интересной работе. Это и есть объектно-ориентированная модель данных, существующая в Sui. В оригинальном Move у нас есть модель данных на основе аккаунтов, активы хранятся в аккаунте, и программистам нужно явно их извлекать. А в Sui активы уже извлекаются Sui во время перехода в часть Move транзакции. Это удобнее для программистов, так как им не нужно делать всю эту бухгалтерскую работу до и после, и это также является секретным оружием, позволяющим нам определять, можно ли выполнять одну транзакцию параллельно с другой, масштабировать Sui горизонтально и более эффективно выполнять некоторые другие операции, не выполняя их фактически.
Мы также провели несколько очень интересных работ, например, использование объектно-ориентированной модели данных для программируемых транзакционных блоков. Это довольно техническая тема, и я был бы рад обсудить её более подробно. Но эти два фактора являются основными движущими силами, приводящими к расхождениям с оригинальным Move.
Q4, можете ли вы поделиться больше информацией о программируемых торговых блоках и их функциях?
Мне нравится использовать аналогию для объяснения: другие блокчейны похожи на фуд-корт в торговом центре. Вы хотите поесть мороженое, вы идете к киоску с мороженым и расплачиваетесь кредитной картой. Но если вы решите, что хотите еще бургер, тогда вы идете к киоску с бургерами и снова платите. Я не жадный человек, но если я хочу поесть восемь разных вещей, мне придется сделать восемь отдельных транзакций. А Sui больше похож на шведский стол: каждая транзакция — это не просто одно действие. Как только вы оплатили шведский стол, вы можете делать множество вещей без дополнительных затрат. Вы можете есть мороженое, вы можете есть бургеры, вы можете смешивать их вместе.
Чтобы сделать эту концепцию более конкретной, в простом случае, если вы хотите отправить 100 транзакций для создания 100 NFT, вы можете отправить одну транзакцию на создание 100 NFT. Стоимость такой транзакции практически равна стоимости создания одного NFT. Вы также можете выполнять гетерогенные пакетные транзакции, например, первая транзакция в блоке извлекает персонажа Марио из вашего мультиподписного кошелька, а вторая транзакция запрашивает Марио, позволяя вам играть в игру. Если вы выиграете игру и получите трофей, возможно, третья транзакция поместит трофей в шкаф с трофеями, которым вы делитесь с друзьями. Примечательно, что программируемые транзакционные блоки позволяют программистам писать код таким образом, что игре не нужно знать о мультиподписном кошельке или способе хранения Марио, ей также не нужно знать о вашем шкафу с трофеями или его реализации.
Программируемые транзакционные блоки состоят из транзакций с объектами ввода и вывода. Если вам нужен объект ввода, вы можете получить его, не беспокоясь о том, откуда он пришел, а затем передать его вывод объекту, которому он нужен, также не беспокоясь о том, куда он будет передан. В других блокчейнах степень связности выше, поэтому игры должны интегрироваться с мультиподписными кошельками и трофейными шкафами, или все они должны реализовать некоторые общие интерфейсы и иметь более сильную связность. Sui упрощает так называемые временные комбинации. Например, если трубы совпадают, мы можем завершить это в одной транзакции.
Q5, какие преимущества имеет программируемая торговая зона для пользователей?
Для пользователей преимущества программируемых торговых блоков включают более низкие газовые сборы, поскольку вы можете упаковать все операции в одну транзакцию, а не выполнять отдельные транзакции. Кроме того, количество необходимых одобрений также уменьшается. Если система, которую вы используете, требует одобрения транзакции, вам нужно провести одобрение только один раз, и затем она выполнит все операции сразу. Еще одним преимуществом является атомарность: если вы хотите сделать три разных действия и хотите, чтобы третье действие было успешным только в том случае, если первые два действия выполнены успешно, если эти действия должны быть независимыми транзакциями, вы не сможете этого достичь. Однако, если вы можете объединить их в одну транзакцию, вы можете легко это сделать.
Q6, Я слышал, как вы и другие говорили о том, что разработка на Sui является отличным опытом для программистов, и это очень важно. Есть ли у вас какие-нибудь анекдоты, которыми вы могли бы поделиться с опытными и новыми программистами Web3, которые начинают использовать Sui Move?
Для разработчиков, пришедших из других языков программирования Web3, опыт разработки на Move и Sui Move действительно более эффективен и безопасен. Я только что участвовал в подкасте о Bucket Protocol, они строят что-то очень крутое на Sui.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
21 Лайков
Награда
21
7
Поделиться
комментарий
0/400
GasOptimizer
· 07-18 07:39
Давайте займемся движением!
Посмотреть ОригиналОтветить0
GasOptimizer
· 07-17 16:03
tps будет в 8.64 раза быстрее ETH, уже посчитано
Посмотреть ОригиналОтветить0
AirdropHuntress
· 07-15 22:08
Еще один маркетинговый трюк, кто изучал ранний код контрактов?
Посмотреть ОригиналОтветить0
HodlKumamon
· 07-15 22:04
С данными что-то не так, папа Мов.
Посмотреть ОригиналОтветить0
CryptoAdventurer
· 07-15 22:02
Стад закончился, я слишком долго не смотрел на переезд
Посмотреть ОригиналОтветить0
Degen4Breakfast
· 07-15 21:57
move опять пришел хвастаться
Посмотреть ОригиналОтветить0
NftPhilanthropist
· 07-15 21:54
хм, ещё один основатель web3 пытается спасти нас с их стеком технологий
Основатель Move раскрывает секреты: как Sui Move помогает в разработке продуктов Web3
Интервью с основателем языка Move: почему язык смарт-контрактов Sui Move подходит для создания продуктов Web3?
Недавно мы поговорили с техническим директором Mysten Labs и основателем языка программирования Move Сэмом Блэкшером о том, почему он разработал новый язык программирования смарт-контрактов Sui Move, о возможностях масштабирования Sui и о преимуществах децентрализованных технологий для строителей.
Следующее содержание интервью:
Q1. Во-первых, можете ли вы дать краткое описание того, что такое языки программирования, какие качества наиболее важны для разработчиков при выборе языка программирования и что побудило вас разработать собственный язык программирования?
Языки программирования — это инструменты для дружелюбного, безопасного, эффективного и четкого взаимодействия с компьютерами. Это особенно важно для компьютеров. Мы не можем общаться с компьютерами на естественном языке, потому что вся суть естественного языка заключается в его богатстве и выразительности. Когда вы используете немного другой тон или выбираете слегка разные способы выражения слов, ваше предложение или абзац могут иметь совершенно другой смысл.
А в языках программирования самое важное — это наличие точно определённой семантики. Когда вы пишете программу, вы понимаете, что она будет делать. Если вы вносите в неё небольшие изменения, вы знаете, какой результат это принесёт. Это необходимо поддерживать на нескольких уровнях, например, вы можете написать код на одном языке, который имеет одно значение, а затем он преобразуется в другую форму представления, и он также должен иметь то же значение, пока не дойдёт до обработчика машины.
Я считаю, что, в отличие от естественных языков, суть языков программирования заключается в том, что они предназначены для определенной области или конкретной задачи. В противном случае можно было бы использовать один язык программирования для выполнения всех задач. Но различные языки программирования существуют потому, что невозможно хорошо справляться со всеми областями. Они стремятся нацелиться на конкретные проблемные области и сосредоточиться на решении этих проблем. Например, если вы посмотрите на язык программирования Rust, который мы используем для написания блокчейна Sui и для работы большинства других систем в Mysten, он сосредоточен на написании кода, который является одновременно быстрым и высокопроизводительным, при этом обеспечивая безопасность. Он позволяет вам взаимодействовать с низкоуровневыми деталями, такими как память, структура потоков или параллелизм, но не заставляет вас ошибаться в них, как это делали предыдущие языки (например, C или C++).
Поэтому история Move очень похожа на это. Когда я его создавал, моя цель не заключалась в создании нового языка. Вы ранее упоминали, что разработчики ищут в языке. Они могут задаться вопросом: "Подходит ли этот язык для задачи, которую я хочу решить?" Но я думаю, что может быть более важно: "Есть ли у этого языка большая сообщество? Есть ли много доступных баз данных? Есть ли много программистов, которые его используют? Есть ли хорошие образовательные ресурсы?" Все это очень важно, поэтому планка для создания нового языка должна быть очень высокой. Даже если этот язык сам по себе лучше, если у него нет этих факторов, его преимущества теряют смысл. Создать большое и активное сообщество с нуля очень трудно.
В2. Можете поделиться дополнительной информацией о разработке Move?
Move возник из проекта Libra от Facebook. Моя задача тогда состояла не в создании нового языка, а в том, что "Libra нуждается в смарт-контрактах, поэтому выясните, что мы должны сделать." Я изучал самые разные варианты. Можем ли мы использовать Solidity в EVM? Должны ли мы использовать обычные универсальные языки, такие как WASM или JVM, и применить их к Libra? Или нам следует создать что-то свое?
Решение создать что-то свое основано на изучении существующих смарт-контрактов, понимании того, что пытаются сделать программисты, а также на том, в чем некоторые языки помогают им и в чем разочаровывают. Мой вывод заключается в том, что во многих случаях существующие языки смарт-контрактов действительно разочаровывают их.
Это можно четко увидеть по плохой записи безопасности Solidity, но более важно то, что эти смарт-контракты не являются очень традиционными типами программ. Solidity не является языком, построенным для того, что сейчас делают люди. Я не хочу критиковать его, потому что это первый язык смарт-контрактов, который еще не знает, что люди хотят с ним делать. Как только вы увидите, что люди пытаются с ним делать, я думаю, станет очевидно, что вам нужен набор различных абстракций и инструментов программирования, которые язык Solidity не предоставляет.
Поэтому эти смарт-контракты очень просты, они в основном делают две вещи. Они определяют типы активов, включая то, когда активы могут быть переданы, что с ними можно делать, кто может их читать, и правила, кто может их записывать. И проверяют политику контроля доступа, определяя, кто владеет этим активом, кто имеет право его использовать, кто имеет право с ним работать. Всё revolves around активами, вы хотите, чтобы эти активы имели такие же свойства, как и физические активы. Если я передаю вам что-то, то вы должны владеть этим, и я больше не владею этим.
В смарт-контрактах есть концепция собственности и передачи прав собственности, но на компьютере все это всего лишь цифры и байты, которые можно свободно копировать. Более того, вы знаете, что эти концепции не существуют в реальном мире. Поэтому вы хотите, чтобы был язык, который мог бы предоставить вам хорошую абстракцию о собственности и однородности. Как в реальном мире, но без необходимости принуждать программистов заново изобретать его. Вы хотите получить основные гарантии безопасности.
Вот в чем заключается функция Move и почему мы в конечном итоге создали этот новый язык. Эти задачи являются основополагающими для программирования смарт-контрактов. Их сложно воссоздать на других языках, включая существующие языки смарт-контрактов, и мы хотели бы спроектировать весь язык вокруг предоставления этих основных функций, чтобы программисты могли безопасно и эффективно писать код, не изобретая колесо каждый раз, когда им нужно написать какой-то код.
Q3. Sui использует модификацию Move, называемую Sui Move. Что вызвало эти изменения? Какие особенности Sui Move особенно подходят для создания продуктов в Web3?
Некоторые факторы способствовали этим изменениям, один из которых заключается в том, что первоначальной целью проекта Libra было создание соответствующей платежной сети. Поэтому мы пытались разработать Move как универсальный язык. Но мы также сознательно сделали некоторые вещи, потому что Libra хотела иметь ограничения. Одним из важных моментов является то, что они не хотели, чтобы люди могли отправлять определенные активы куда угодно. Они хотели, чтобы люди явно создавали аккаунт и устанавливали некоторые правила при создании аккаунта, например, что владелец аккаунта должен пройти KYC-аудит. Или, возможно, потребуется уплатить сбор за создание аккаунта, или его могут создать только небольшое количество людей, имеющих право на создание аккаунтов. Поскольку вся цель заключалась в том, что Libra хотела осуществлять соответствующие платежи и смарт-контракты, существуют эти ограничения. Но в более универсальной области Web3 ситуация как раз наоборот. Вы не хотите, чтобы на базовом уровне существовала соответствие, это концепция смарт-контрактов. Вы хотите, чтобы вещи были как можно более свободными, и чтобы можно было отправлять что-то на любой адрес. Затем вам не следует явно создавать аккаунты, так как это блокирует различные случаи использования. Это важный фактор.
Другим фактором является то, что, хотя мы сосредоточены на активах в Move, на тот момент в Libra мы не рассматривали, как сосредоточить внимание на активах непосредственно в самой транзакции. Таким образом, когда вы достигаете уровня транзакции, у вас все еще есть только этот API, в который вы вводите числа и булевы значения и другие неактивные вещи, а затем в Move вы используете эти числа для извлечения активов из счета и выполнения других операций. Оказалось, что большая часть кода, который вы выполняете, состоит из этой надоедливой работы с бухгалтерией, которая включает в себя извлечение этого, извлечение того, извлечение другого, хорошо, у меня есть все активы, которые я хочу. Они здесь, в моей мастерской, и теперь я могу начать делать что-то значимое. Затем в конце этого процесса вы можете сказать: "Хорошо, верните эти активы на этот счет, верните их на тот счет, реорганизуйте их."
В Sui мы тщательно обдумали, можно ли абстрагировать, если каждая программа начинается и заканчивается таким образом? Таким образом, логика обработки транзакций будет выполнять эту задачу для программистов, с их точки зрения, им нужно только подготовить необходимые активы и сразу приступить к интересной работе. Это и есть объектно-ориентированная модель данных, существующая в Sui. В оригинальном Move у нас есть модель данных на основе аккаунтов, активы хранятся в аккаунте, и программистам нужно явно их извлекать. А в Sui активы уже извлекаются Sui во время перехода в часть Move транзакции. Это удобнее для программистов, так как им не нужно делать всю эту бухгалтерскую работу до и после, и это также является секретным оружием, позволяющим нам определять, можно ли выполнять одну транзакцию параллельно с другой, масштабировать Sui горизонтально и более эффективно выполнять некоторые другие операции, не выполняя их фактически.
Мы также провели несколько очень интересных работ, например, использование объектно-ориентированной модели данных для программируемых транзакционных блоков. Это довольно техническая тема, и я был бы рад обсудить её более подробно. Но эти два фактора являются основными движущими силами, приводящими к расхождениям с оригинальным Move.
Q4, можете ли вы поделиться больше информацией о программируемых торговых блоках и их функциях?
Мне нравится использовать аналогию для объяснения: другие блокчейны похожи на фуд-корт в торговом центре. Вы хотите поесть мороженое, вы идете к киоску с мороженым и расплачиваетесь кредитной картой. Но если вы решите, что хотите еще бургер, тогда вы идете к киоску с бургерами и снова платите. Я не жадный человек, но если я хочу поесть восемь разных вещей, мне придется сделать восемь отдельных транзакций. А Sui больше похож на шведский стол: каждая транзакция — это не просто одно действие. Как только вы оплатили шведский стол, вы можете делать множество вещей без дополнительных затрат. Вы можете есть мороженое, вы можете есть бургеры, вы можете смешивать их вместе.
Чтобы сделать эту концепцию более конкретной, в простом случае, если вы хотите отправить 100 транзакций для создания 100 NFT, вы можете отправить одну транзакцию на создание 100 NFT. Стоимость такой транзакции практически равна стоимости создания одного NFT. Вы также можете выполнять гетерогенные пакетные транзакции, например, первая транзакция в блоке извлекает персонажа Марио из вашего мультиподписного кошелька, а вторая транзакция запрашивает Марио, позволяя вам играть в игру. Если вы выиграете игру и получите трофей, возможно, третья транзакция поместит трофей в шкаф с трофеями, которым вы делитесь с друзьями. Примечательно, что программируемые транзакционные блоки позволяют программистам писать код таким образом, что игре не нужно знать о мультиподписном кошельке или способе хранения Марио, ей также не нужно знать о вашем шкафу с трофеями или его реализации.
Программируемые транзакционные блоки состоят из транзакций с объектами ввода и вывода. Если вам нужен объект ввода, вы можете получить его, не беспокоясь о том, откуда он пришел, а затем передать его вывод объекту, которому он нужен, также не беспокоясь о том, куда он будет передан. В других блокчейнах степень связности выше, поэтому игры должны интегрироваться с мультиподписными кошельками и трофейными шкафами, или все они должны реализовать некоторые общие интерфейсы и иметь более сильную связность. Sui упрощает так называемые временные комбинации. Например, если трубы совпадают, мы можем завершить это в одной транзакции.
Q5, какие преимущества имеет программируемая торговая зона для пользователей?
Для пользователей преимущества программируемых торговых блоков включают более низкие газовые сборы, поскольку вы можете упаковать все операции в одну транзакцию, а не выполнять отдельные транзакции. Кроме того, количество необходимых одобрений также уменьшается. Если система, которую вы используете, требует одобрения транзакции, вам нужно провести одобрение только один раз, и затем она выполнит все операции сразу. Еще одним преимуществом является атомарность: если вы хотите сделать три разных действия и хотите, чтобы третье действие было успешным только в том случае, если первые два действия выполнены успешно, если эти действия должны быть независимыми транзакциями, вы не сможете этого достичь. Однако, если вы можете объединить их в одну транзакцию, вы можете легко это сделать.
Q6, Я слышал, как вы и другие говорили о том, что разработка на Sui является отличным опытом для программистов, и это очень важно. Есть ли у вас какие-нибудь анекдоты, которыми вы могли бы поделиться с опытными и новыми программистами Web3, которые начинают использовать Sui Move?
Для разработчиков, пришедших из других языков программирования Web3, опыт разработки на Move и Sui Move действительно более эффективен и безопасен. Я только что участвовал в подкасте о Bucket Protocol, они строят что-то очень крутое на Sui.