Sui.

Пост

Поделитесь своими знаниями.

Owen.
May 31, 2025
Экспертные Вопросы и Ответы

Ошибка проверки типов при использовании настраиваемой структуры в качестве параметра типа в монете Sui Move: :Coin?

Вопрос:

Я обнаружил ошибку при проверке типов в моем коде Sui Move, которую я не понимаю. Вот упрощенная версия моего кода:

module my_module::mymodule {
    use sui::coin;
    use sui::wallets;

    struct MyCoin has drop {}

    public fun create_coin(): coin::Coin<MyCoin> {
        coin::mint(1000)
    }
}

Когда я пытаюсь скомпилировать, я получаю следующую ошибку:

Invalid type parameter instantiation.
Expected type 'phantom type T' but found 'MyCoin'

Что я делаю не так? Почему я не могу использовать его MyCoinв качестве параметра типа coin::Coinи как решить эту проблему с проверкой типов?

  • Sui
  • Architecture
0
2
Поделиться
Комментарии
.

Ответы

2
HaGiang.
Jun 1 2025, 03:20

Вы столкнулись с этой ошибкой при проверке типа, потому что coin: :Coin ожидает, что T будет фантомным типом, то есть он используется только на уровне типов и никогда не хранится в реальных структурах данных. В исходном коде вы определили MyCoin как обычную структуру без каких-либо параметров типа или использования фантомов. Это противоречит ожиданиям модуля монет.

Модуль монет в Sui разработан так, чтобы быть универсальным: тип монеты — это просто маркер, похожий на этикетку, позволяющую отличить одну монету от другой. Поэтому предполагается, что этот тип не будет содержать фактических данных и будет использоваться только для набора текста.

2
Комментарии
.
harry phan.
May 31 2025, 09:45

Вы пытаетесь использовать coin: :mint (1000) без надлежащей регистрации собственного типа монеты MyCoin. В игре Sui Move, прежде чем вы сможете чеканить собственную монету, ее необходимо создать и зарегистрировать с помощью функции create_currency.

https://docs.sui.io/references/framework/sui/coin

1
Комментарии
.

Знаете ответ?

Пожалуйста, войдите в систему и поделитесь им.

Sui is a Layer 1 protocol blockchain designed as the first internet-scale programmable blockchain platform.

306Посты450Ответы
Sui.X.Peera.

Заработай свою долю из 1000 Sui

Зарабатывай очки репутации и получай награды за помощь в развитии сообщества Sui.

Кампания вознагражденийИюнь
Мы используем файлы cookie, чтобы гарантировать вам лучший опыт на нашем сайте.
Подробнее