Bài viết
Chia sẻ kiến thức của bạn.
Bạn có thể sử dụng tính ngẫu nhiên trong các chức năng công khai không nhập trong Move không?
Tôi mới sử dụng tính ngẫu nhiên trong lập trình Move. Tài liệu gợi ý chỉ sử dụng ngẫu nhiên trong các chức năng nhập. Tuy nhiên, tôi đang xem xét sử dụng tính ngẫu nhiên để đặt giá trị, không phải để phân nhánh mã. Sử dụng tính ngẫu nhiên trong một chức năng công cộng theo cách này có ổn không?
- Move CLI
- Move
Câu trả lời
1Không nhất thiết. Nếu bạn định nghĩa một hàm công khaifoo(Random, SharedObj, ...)
, một kẻ tấn công có thể khai thác điều này bằng cách tạo một hàm, ví attack(Random, SharedObj, ...)
dụ, gọi hàm của bạn. Sau đó, kẻ tấn công có thể kiểm tra các sửa đổi đối tượng được chia sẻ, quyết định có nên hủy giao dịch dựa trên trạng thái mới của nó hay không. Điều này tương tự như một cuộc tấn công được mô tả trong tài liệu Sui về tính ngẫu nhiên, nhưng liên quan đến trạng thái chung. Ngay cả khi các trường nhạy cảm không được hiển thị, kẻ tấn công có thể nối tiếp và phân tích trạng thái của đối tượng. Do đó, họ luôn có thể “thắng” hoặc “hủy bỏ” nhưng không bao giờ “thua”. Nếu điều này được chấp nhận cho trường hợp sử dụng của bạn, bạn có thể tiếp tục sử dụng chức năng công khai và ngăn chặn cảnh báo.
Bạn có biết câu trả lời không?
Hãy đăng nhập và chia sẻ nó.
Move is an executable bytecode language used to implement custom transactions and smart contracts.