本文解释了矿工攻击,即验证者如何利用智能合约中的 block.timestamp、随机性和交易排序。文章详细讨论了三种攻击类型:使用 block.timestamp 进行时间敏感操作的风险、使用区块属性生成随机数、以及交易排序敏感性。针对每种攻击,文章都提供了示例代码、漏洞解释、缓解措施以及测试用例,旨在帮助开发者保护智能合约免受这些微妙但潜在破坏性的攻击。