Chuyển đến nội dung chính

Bài đăng

Hiển thị các bài đăng có nhãn Random Numbers

Tự học Solidity bài 36: Random Numbers safely. Tại sao tạo số ngẫu nhiên trong SOLIDITY lại không an toàn?

Random Numbers Safely.  Tự học Solidity bài 36: Tại sao tạo số ngẫu nhiên trong SOLIDITY lại không an toàn? Trong bài học trước chúng ta đã được giới thiệu về việc tạo số ngẫu nhiên trong SOLIDITY, tuy nhiên tôi cũng có ghi chú là việc tạo số ngẫu nhiên như vậy là không an toàn. Trong bài học này chúng ta cùng tìm hiêu tại sao nó lại không an toàn nhé :) Tạo số ngẫu nhiên trong SOLIDITY Nguồn ngẫu nhiên tốt nhất mà chúng ta có trong ngôn ngữ lập trình Solidity là hàm băm keccak256 . Chúng ta có thể làm như sau để tạo một số ngẫu nhiên từ 1 đến 100: uint randNonce = 0 ; uint random = uint ( keccak256 ( abi . encodePacked ( now , msg . sender , randNonce))) % 100 ; randNonce++; uint random2 = uint ( keccak256 ( abi . encodePacked ( now , msg . sender , randNonce))) % 100 ; Đầu vào của chúng ta sẽ lấy: dấu thời gian của now , msg.sender và một biến integer nonce tăng dần (một số chỉ được sử dụng một lần, vì vậy chúng ta không chạy cùng một hàm băm với các tham số đầu vào giống nhau