I was looking at generating some psuedo-random numbers in an Etheresum smart contract and understand that it is possible for miners to manipulate the blockhash and block.timestamp. The Solidity documentation says the following
Do not rely on block.timestamp or blockhash as a source of randomness, unless you know what you are doing.
Both the timestamp and the block hash can be influenced by miners to some degree. Bad actors in the mining community can for example run a casino payout function on a chosen hash and just retry a different hash if they did not receive any money.
The current block timestamp must be strictly larger than the timestamp of the last block, but the only guarantee is that it will be somewhere between the timestamps of two consecutive blocks in the canonical chain.
My question is if this is still possible with PoS, and if there is a way to create a safer pseudo-random number without the use of an oracle (aka paying LINK).
edit: Just found this that explains each block MUST be 12 seconds after the previous one- so I suppose using block.timestamp wouldn't be helpful even if it wasn't manipulatable since it can be predicted.