Solution: Check-Effect-Interaction(CEI) 사용(가스비 저렴), ReentrancyGuard 사용
Dynamic analysis
Fuzzing: 무작위값 대입
Unit test: Edge case(극한값), 예외 상황
Audit
Pause Contract
Front Running
someone observes a pending transaction and quickly submits their transaction with higher gas fees.
Problem: 트랜잭션을 mempool에서 볼 수 있기 때문에 트랜잭션의 순서에 악의적인 행동하는 것.
Solution: Smart contract audit이며 명확한 해결책은 아직까지 없음.
Example: DeFi
100:1의 비율로 토큰과 이더를 교환함. A가 100 토큰을 구입하는 트랜잭션을 실행 → B가 100 토큰을 구입하는 트랜잭션을 더 높은 수수료를 지불하여 구매 → B가 먼저 체결되고 A가 나중에 체결됨. A가 먼저 처리된다면 B는 90:1의 비율로 이더를 획득할 수 있지만, A의 트랜잭션을 미리 확인하여 100:1 비율로 이더를 구입하고 80:1의 이더를 획득할 수 있음. (90:1이면 1.1 이더, 80:1이면 1.25 이더). Because DEXs typically use Automated Market Makers (AMMs), such as the constant product formula used by Uniswap.