Допис
Діліться своїми знаннями.
Чи можете ви використовувати випадковість у публічних функціях без входу в Move?
Я новачок у використанні випадковості в програмуванні Move. Документація пропонує використовувати випадкові тільки в функціях введення. Однак я розглядаю можливість використання випадковості для встановлення значень, а не для розгалуження коду. Чи нормально використовувати випадковість у публічній функції таким чином?
- Move CLI
- Move
Відповіді
1Не обов'язково. Якщо ви визначаєте публічну функцію, наприкладfoo(Random, SharedObj, ...)
, зловмисник може використовувати це, створивши функцію, скажі attack(Random, SharedObj, ...)
мо, яка викликає вашу функцію. Потім зловмисник може перевірити зміни до спільного об'єкта, вирішуючи, чи перервати транзакцію на основі її нового стану. Це схоже на атаку, описану в документації Sui про випадковість, але передбачає спільний стан. Навіть якщо чутливі поля не розкриваються, зловмисник може серіалізувати та аналізувати стан об'єкта. Тому вони завжди могли «виграти» або «перервати», але ніколи не «програвати». Якщо це прийнятно для вашого випадку використання, ви можете продовжити використання загальнодоступної функції та придушити попередження.
Ви знаєте відповідь?
Будь ласка, увійдіть та поділіться нею.
Move is an executable bytecode language used to implement custom transactions and smart contracts.