Пост
Поделитесь своими знаниями.
Можно ли использовать случайность в публичных функциях, не связанных с входом, в 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.