Sui.

Допис

Діліться своїми знаннями.

article banner.
Turnerlee69.
Aug 11, 2025
Стаття

Запобігання конфліктам версій об'єктів у розробці

Якщо ви коли-небудь стикалися з помилкою * «Невідповідність версії об'єкта» *, ви знаєте, наскільки це може бути неприємно. У вас є правильний ідентифікатор об'єкта, ваш код виглядає добре, але транзакція відмовляється проходити. Що відбувається? Проблема полягає в системі версій Sui.

Кожен об'єкт на Sui маєномер версії, який збільшується кожного разу, коли він мутується. Якщо ваш сценарій або транзакція використовує посилання на стару версію, Sui відхилить його - таким чином він забезпечує послідовність та запобігає перезапису змін. Погана новина полягає в тому, що в середовищі, що швидко рухається (або під час тестування із спільними об'єктами) версії можуть змінюватися між часом їх отримання та часом надсилання транзакції.

Виправлення просте, але важливе: завжди отримуйте останні дані об'єкта безпосередньо перед їх використанням. У CLI це:

sui client object <objectID>

У JavaScript ви робите:

const object = await provider.getObject({
  id: objectId,
  options: { showContent: true }
});

Це гарантує, що ви працюєте з найсвіжішим станом.

Для автоматизованих скриптів напишіть невеликий помічник, який оновлює об'єкт кожного разу перед тим, як передати його в транзакцію. У тестах повністю уникайте версій жорсткого кодування - натомість динамічно завантажуйте їх під час налаштування тесту.

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

  • SDKs and Developer Tools
1
Поділитися
Коментарі
.