Как можно выполнить копирование транзакции в блокчейне SUI, используя клиента SUI CLIENT PTB?

Я пытаюсь воспроизвести транзакцию с использованием клиента SUI, но сталкиваюсь с ошибкой. Конкретно, при выполнении возникает ошибка выполнения транзакции 'ByByZ4jXKFKBUbXcswuni6UbgzHvM37ZQyZwBYjYyPVu': CommandArgumentError { arg_idx: 0, kind: InvalidUsageOfPureArg } в команде 1. <br/><br/> Вот ссылка на транзакцию: <a href="https://suivision.xyz/txblock/AphU69JfV4QrvqyVNPmngUce2dLRFhJeugSyfSVbb4ew" rel="nofollow">https://suivision.xyz/txblock/AphU69JfV4QrvqyVNPmn...</a>. <br/><br/> Я пробовал использовать последнюю версию кода, но без успеха. <br/><br/> Вот пример кода, который я использую (это .bat файл для Windows, и я также пробовал на Linux, но ошибка остается прежней): <pre><code class="dos">sui client ptb --split-coins gas [1000000000] --assign coin ^
--move-call 0xfa9302fe83a1b717293ca0d4f80a9195e66ac3d401977df5b16f1aae00232ab9::move_pump::buy "&lt;0xd177f070ac9dc7ca9cf13107ff9bebc74b4606ab75dde706e9a6bfa78377de23::nsell::NSELL&gt;" ^
'0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4' ^
coin ^
'0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92' ^
61353114536558 ^
'0x0000000000000000000000000000000000000000000000000000000000000006' ^
--gas-budget 1000000000</code></pre><br/> Дополнительно, вот ссылка на транзакцию, осуществляемую этим .bat файлом: <a href="https://suivision.xyz/txblock/ByByZ4jXKFKBUbXcswuni6UbgzHvM37ZQyZwBYjYyPVu" rel="nofollow">https://suivision.xyz/txblock/ByByZ4jXKFKBUbXcswuni6UbgzHvM37ZQyZwBYjYyPVu</a>.
  • 25 сентября 2024 г. 16:33
Ответы на вопрос 1
Ошибка `InvalidUsageOfPureArg`, с которой вы столкнулись, говорит о том, что вы, вероятно, неправильно используете аргумент в вашем вызове команды. В SUI некоторые аргументы должны передаваться в качестве "недостаточных типов" (non-pure types), а не как "чистые" значения (pure values). В частности, местоположение, в котором вы используете аргумент или его тип, может вызывать данную проблему.

Давайте разберем ваш код и попробуем определить источник ошибки.

1. **Проверка аргументов**: Убедитесь, что все аргументы передаются в правильном формате. Например, для `--move-call` убедитесь, что адрес и переменные передаются верно и в необходимых квотах.

2. **Форматирование адресов**: Убедитесь, что адреса, которые вы используете (например, `0xd177f070ac9dc7ca9cf13107ff9bebc74b4606ab75dde706e9a6bfa78377de23` и т.д.), имеют правильный формат, и они соответствует ожидаемым типам в контрактах Move, которые вызываются.

3. **Проверка количества и типов аргументов**: Вам следует проверить, сколько аргументов ожидает функция `buy` в `move_pump`. Если количество или типы аргументов не совпадают, возможно, это приведет к ошибке.

Попробуйте адаптировать ваш вызов следующим образом:

```bash
sui client ptb --split-coins gas [1000000000] --assign coin ^
--move-call 0xfa9302fe83a1b717293ca0d4f80a9195e66ac3d401977df5b16f1aae00232ab9::move_pump::buy 0xd177f070ac9dc7ca9cf13107ff9bebc74b4606ab75dde706e9a6bfa78377de23 ^
'0xd746495d04a6119987c2b9334c5fefd7d8cff52a8a02a3ea4e3995b9a041ace4' ^
coin ^
'0x3f2d9f724f4a1ce5e71676448dc452be9a6243dac9c5b975a588c8c867066e92' ^
61353114536558 ^
0x6 ^
--gas-budget 1000000000
```

Здесь я убрал `&lt;` и `&gt;` из адресов, если они были добавлены по ошибке. Также убедитесь, что аргумент `0x6`, который, вероятно, ожидается как целое число, передается без кавычек.

4. **Дополнительные отладочные шаги**: Используйте команду `sui client ptb --help` для получения информации о правильном использовании аргументов в командах и убедитесь, что ваше использование соответствует последним обновлениям в CLI.

Если все указанные выше шаги не помогают, я бы рекомендовал обратиться к документации SUI или на форумах сообщества для получения более конкретной помощи, так как структура параметров может изменяться в зависимости от версии.
Похожие вопросы