我是这个领域的新手,目前正在学习编写一些智能的合同程序。
我写这封信是为了询问在编写合同时使用这些系统级变量(如BLOCKHASH、TIMESTAMP、COINBASE DIFFICULTY和GASLIMIT )的最佳实践。
我从最佳实践手册中得到的印象是,我们应该尽量避免使用这些变量,因为它们可能被恶意的矿工操纵。但在什么情况下我们需要这样做呢?是否有人会对这些变量的“合法”和“安全”使用大加指责呢?谢谢!
发布于 2019-01-13 17:57:01
建议是谨慎使用它们,并了解它们的局限性。
你得问问自己。对这些参数的操作是否为事务的发送方提供了优势?
例如,使用keccak256(block.timestamp)作为随机性的来源并不好,因为矿工可以操纵它。尽管矿商冒着整块报酬的风险,所以如果利润比报酬小得多,那么矿商操纵它就没有多大意义。
不幸的是,没有任何规则可以覆盖100%的用例。
https://ethereum.stackexchange.com/questions/65438
复制相似问题