Интервью с отцом языка Move: почему язык смарт-контрактов Sui Move подходит для создания продуктов Web3?
На днях мы поговорили с техническим директором Mysten Labs и создателем языка программирования Move Сэмом Блэкшером о том, почему он разработал новый язык программирования смарт-контрактов Sui Move, о возможностях масштабирования Sui и о преимуществах децентрализованных технологий для строителей.
Следующее является содержанием данного интервью:
Q1, Во-первых, вы можете кратко изложить, что такое языки программирования, какие качества разработчики наиболее ценят при выборе языка программирования и что подтолкнуло вас к разработке собственного языка программирования?
Языки программирования — это всего лишь инструменты для дружелюбного, безопасного, эффективного и четкого взаимодействия с компьютером, что особенно важно для самого компьютера. Мы не можем общаться с компьютером на естественном языке, потому что вся суть естественного языка заключается в его богатстве и выразительности. Когда вы немного изменяете тон или выбираете слегка разные способы выражения слов, ваше предложение или абзац могут иметь совершенно другой смысл.
А в языках программирования самым важным является наличие точно определенной семантики. Когда вы пишете программу, вы точно знаете, что она будет делать. Если вы вносите небольшие изменения, вы понимаете, какой результат это приведет. Это должно сохраняться на нескольких уровнях, например, вы можете написать код на одном языке, который имеет определенное значение, а затем его преобразовать в другую форму, и оно также должно иметь то же самое значение, вплоть до обработки машинным модулем.
Я считаю, что в отличие от естественных языков, суть языков программирования заключается в том, чтобы быть ориентированными на определенные области или конкретные задачи. В противном случае можно было бы использовать один язык программирования для выполнения всех задач. Но существует множество языков программирования, потому что невозможно хорошо проявить себя во всех областях. Они стремятся к целевому позиционированию в определенных областях проблем и сосредоточены на их решении. Например, если вы посмотрите на язык программирования Rust, который мы используем для написания блокчейна Sui и для работы большинства других систем в Mysten, он сосредоточен на написании быстрого и высокопроизводительного кода, одновременно обеспечивая безопасность. Он позволяет вам обращаться к низкоуровневым деталям, таким как память, структура потоков или параллелизм, но не дает вам допустить ошибки, как это делали предыдущие языки, такие как C или C++.
Таким образом, история Move очень похожа на это. Когда я его создавал, я не стремился создать новый язык. Вы ранее упоминали, что разработчики ищут в языке. Они могут спрашивать: "Подходит ли этот язык для задач, которые я хочу решить?" Но я думаю, что может быть более важно: "Есть ли у этого языка большая сообщество? Есть ли много доступных баз данных? Много ли программистов его используют? Есть ли хорошие образовательные ресурсы?" Все это очень важно, поэтому порог для создания нового языка должен быть очень высоким, даже если этот язык сам по себе лучше, но если у него нет этих факторов, то его преимущества теряют смысл. Построить большое и живое сообщество с нуля очень трудно.
Q2, можете поделиться дополнительной информацией о разработке Move?
Move возник языком из проекта Libra от Facebook. Моя задача тогда заключалась не в создании нового языка, а в том, что "Libra нуждается в смарт-контрактах, так что выясните, что мы должны делать". Я рассмотрел самые разные вещи. Можем ли мы использовать Solidity в EVM? Должны ли мы использовать обычный универсальный язык, такой как WASM или JVM, и применить его для Libra? Или мы должны создать что-то свое?
Решение создать что-то свое основано на исследовании существующих смарт-контрактов, понимании того, что пытаются сделать программисты, а также на том, в каких аспектах определенные языки помогают им и разочаровывают. Мой вывод заключается в том, что во многих случаях существующие языки смарт-контрактов действительно разочаровывают их.
Это можно четко увидеть на основе плохой записи безопасности Solidity, но более важно то, что эти смарт-контракты не являются очень традиционными типами программ. Solidity — это язык, который не был создан для того, что сейчас делают люди. Я не собираюсь его критиковать, потому что это первый язык смарт-контрактов, и он еще не знает, что люди хотят с ним делать. Как только вы увидите, что люди пытаются с ним делать, я думаю, станет очевидно, что вам нужен набор других абстракций и инструментов программирования, которые язык Solidity не предоставляет.
Так что эти смарт-контракты очень просты, они в основном делают две вещи. Они определяют типы активов, включая то, когда активы могут быть переданы, что вы можете с ними делать, кто может их читать, кто может записывать их правила. И проверяют политику контроля доступа, определяя, кто владеет этим активом, кто имеет право его использовать, кто имеет право с ним работать. Все сосредоточено вокруг активов, вы хотите, чтобы эти активы имели такие же свойства, как и физические активы. Если я передаю вам что-то, то вы должны владеть этим, а я больше не владею этим.
В смарт-контрактах есть концепция собственности и передачи собственности, но на компьютере все это всего лишь цифры и байты, которые можно свободно копировать. И, как вы знаете, эти концепции в реальном мире не существуют. Поэтому вы хотите, чтобы был язык, который мог бы предоставить вам хорошую абстракцию по поводу собственности и гомогенизации. Точно так же, как в реальном мире, но без необходимости заставлять программистов вновь изобретать это. Вы хотите получить базовые гарантии безопасности.
Вот для чего нужен Move и почему мы в конечном итоге создали этот новый язык. Эти задачи являются основополагающими для программирования смарт-контрактов. Их трудно воспроизвести на других языках, включая существующие языки смарт-контрактов, и мы хотим спроектировать весь язык вокруг предоставления этих основных функций, чтобы программисты могли безопасно и эффективно писать код, не изобретая каждый раз колесо, когда им нужно написать какой-то код.
Вопрос 3. 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 делает так называемую временную комбинацию более легкой. Так, если трубы совпадают, мы можем завершить это в одной транзакции.
Для пользователей преимущества программируемых торговых блоков включают более низкие газовые сборы, так как вы можете упаковать все операции в одну транзакцию, а не проводить отдельные транзакции. Кроме того, количество необходимых одобрений также уменьшается. Если система, которую вы используете, требует одобрения транзакций, вам нужно будет провести одобрение только один раз, а затем оно выполнит все операции сразу. Еще одно преимущество — атомарность: если вы хотите сделать три разные вещи и хотите, чтобы третья операция была успешной только в том случае, если первые две операции прошли успешно, если эти операции должны быть независимыми транзакциями, вы не сможете этого достичь. Однако, если вы можете поместить их все в одну транзакцию, вы сможете легко это реализовать.
Q6, я слышал, что вы и другие говорили о том, что разработка на Sui - это отличный опыт для программистов, и это очень важно. Есть ли у вас какие-либо анекдоты, которыми вы могли бы поделиться для опытных и новых программистов Web3, начинающих использовать Sui Move?
Для разработчиков, приходящих из других языков программирования Web3, опыт разработки на Move и Sui Move действительно более эффективен и безопасен. Я только что принял участие в подкасте о Bucket Protocol, они строят нечто на Sui.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
7 Лайков
Награда
7
2
Репост
Поделиться
комментарий
0/400
MoonlightGamer
· 19ч назад
move — это будущее
Посмотреть ОригиналОтветить0
LiquidationWatcher
· 19ч назад
уф, еще один день, еще один язык смарт-контрактов... просто молитесь, чтобы его не эксплуатировали, как солану
Анализ преимуществ Sui Move от отца языка Move: инструмент для создания продуктов Web3
Интервью с отцом языка Move: почему язык смарт-контрактов Sui Move подходит для создания продуктов Web3?
На днях мы поговорили с техническим директором Mysten Labs и создателем языка программирования Move Сэмом Блэкшером о том, почему он разработал новый язык программирования смарт-контрактов Sui Move, о возможностях масштабирования Sui и о преимуществах децентрализованных технологий для строителей.
Следующее является содержанием данного интервью:
Q1, Во-первых, вы можете кратко изложить, что такое языки программирования, какие качества разработчики наиболее ценят при выборе языка программирования и что подтолкнуло вас к разработке собственного языка программирования?
Языки программирования — это всего лишь инструменты для дружелюбного, безопасного, эффективного и четкого взаимодействия с компьютером, что особенно важно для самого компьютера. Мы не можем общаться с компьютером на естественном языке, потому что вся суть естественного языка заключается в его богатстве и выразительности. Когда вы немного изменяете тон или выбираете слегка разные способы выражения слов, ваше предложение или абзац могут иметь совершенно другой смысл.
А в языках программирования самым важным является наличие точно определенной семантики. Когда вы пишете программу, вы точно знаете, что она будет делать. Если вы вносите небольшие изменения, вы понимаете, какой результат это приведет. Это должно сохраняться на нескольких уровнях, например, вы можете написать код на одном языке, который имеет определенное значение, а затем его преобразовать в другую форму, и оно также должно иметь то же самое значение, вплоть до обработки машинным модулем.
Я считаю, что в отличие от естественных языков, суть языков программирования заключается в том, чтобы быть ориентированными на определенные области или конкретные задачи. В противном случае можно было бы использовать один язык программирования для выполнения всех задач. Но существует множество языков программирования, потому что невозможно хорошо проявить себя во всех областях. Они стремятся к целевому позиционированию в определенных областях проблем и сосредоточены на их решении. Например, если вы посмотрите на язык программирования Rust, который мы используем для написания блокчейна Sui и для работы большинства других систем в Mysten, он сосредоточен на написании быстрого и высокопроизводительного кода, одновременно обеспечивая безопасность. Он позволяет вам обращаться к низкоуровневым деталям, таким как память, структура потоков или параллелизм, но не дает вам допустить ошибки, как это делали предыдущие языки, такие как C или C++.
Таким образом, история Move очень похожа на это. Когда я его создавал, я не стремился создать новый язык. Вы ранее упоминали, что разработчики ищут в языке. Они могут спрашивать: "Подходит ли этот язык для задач, которые я хочу решить?" Но я думаю, что может быть более важно: "Есть ли у этого языка большая сообщество? Есть ли много доступных баз данных? Много ли программистов его используют? Есть ли хорошие образовательные ресурсы?" Все это очень важно, поэтому порог для создания нового языка должен быть очень высоким, даже если этот язык сам по себе лучше, но если у него нет этих факторов, то его преимущества теряют смысл. Построить большое и живое сообщество с нуля очень трудно.
Q2, можете поделиться дополнительной информацией о разработке Move?
Move возник языком из проекта Libra от Facebook. Моя задача тогда заключалась не в создании нового языка, а в том, что "Libra нуждается в смарт-контрактах, так что выясните, что мы должны делать". Я рассмотрел самые разные вещи. Можем ли мы использовать Solidity в EVM? Должны ли мы использовать обычный универсальный язык, такой как WASM или JVM, и применить его для Libra? Или мы должны создать что-то свое?
Решение создать что-то свое основано на исследовании существующих смарт-контрактов, понимании того, что пытаются сделать программисты, а также на том, в каких аспектах определенные языки помогают им и разочаровывают. Мой вывод заключается в том, что во многих случаях существующие языки смарт-контрактов действительно разочаровывают их.
Это можно четко увидеть на основе плохой записи безопасности Solidity, но более важно то, что эти смарт-контракты не являются очень традиционными типами программ. Solidity — это язык, который не был создан для того, что сейчас делают люди. Я не собираюсь его критиковать, потому что это первый язык смарт-контрактов, и он еще не знает, что люди хотят с ним делать. Как только вы увидите, что люди пытаются с ним делать, я думаю, станет очевидно, что вам нужен набор других абстракций и инструментов программирования, которые язык Solidity не предоставляет.
Так что эти смарт-контракты очень просты, они в основном делают две вещи. Они определяют типы активов, включая то, когда активы могут быть переданы, что вы можете с ними делать, кто может их читать, кто может записывать их правила. И проверяют политику контроля доступа, определяя, кто владеет этим активом, кто имеет право его использовать, кто имеет право с ним работать. Все сосредоточено вокруг активов, вы хотите, чтобы эти активы имели такие же свойства, как и физические активы. Если я передаю вам что-то, то вы должны владеть этим, а я больше не владею этим.
В смарт-контрактах есть концепция собственности и передачи собственности, но на компьютере все это всего лишь цифры и байты, которые можно свободно копировать. И, как вы знаете, эти концепции в реальном мире не существуют. Поэтому вы хотите, чтобы был язык, который мог бы предоставить вам хорошую абстракцию по поводу собственности и гомогенизации. Точно так же, как в реальном мире, но без необходимости заставлять программистов вновь изобретать это. Вы хотите получить базовые гарантии безопасности.
Вот для чего нужен Move и почему мы в конечном итоге создали этот новый язык. Эти задачи являются основополагающими для программирования смарт-контрактов. Их трудно воспроизвести на других языках, включая существующие языки смарт-контрактов, и мы хотим спроектировать весь язык вокруг предоставления этих основных функций, чтобы программисты могли безопасно и эффективно писать код, не изобретая каждый раз колесо, когда им нужно написать какой-то код.
Вопрос 3. 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.