본문 바로가기

solidity3

스마트 컨트랙트 시큐리티 패턴 이전 포스팅에서 Checks Effects Interaction, Mutex Pattern 알아보고 재진입 공격에 대해서 포스팅을 하였습니다 이번엔 그밖에 다양한 시큐리티 패턴에 대해 알아보고자 합니다 1. Emergency Stop Pattern - 블록체인에 배포된 스마트컨트랙트는 수정이 불가능합니다 그래서 예기치 못한 버그로 인해서 큰 피해를 줄 수 있는데 Emergency Stop Pattern은 특정 함수들이 실행되지 않도록 제어할 수 있도록 프로그래밍하는 패턴입니다. 쉽습니다 contract EmergencyStop is Owned { bool public contractStopped = false; modifier haltInEmergency { require(contractStopped) .. 2022. 11. 2.
Fallback, Receive 그리고 재진입 공격 Fallback, Receive 함수에 대해 알아보겠습니다 Fallback - 대비책 함수 - 무기명 함수 즉 이름이 없는 함수 - external과 payable이 필수 어떤 경우에 사용이 되는가? - 스마트 컨트랙트가 이더를 받을수 있게함 - 이더를 받고 난 후 어떠한 행동을 취하게 할 수 있음 - Call 함수로 없는 함수가 불려질떄, 어떠한 행동을 취하게 할 수 있음 0.6 이전 버전의 Fallback은 아래와 같이 사용 function() external payable { } 0.6 이후 fallback Fallback은 Recevie와 Fallback 두가지 형태로 나뉨 Receive: 순수하게 이더만 받을때 작동 Fallback : 함수를 실행하면서 이더를 보낼때, 불려진 함수가 없을 때 작.. 2022. 10. 30.
External Call 보안 모든 체인의 Contract는 보안성이 중요하다 순식간에 자본금이 사라질수있기 떄문이다. 시큐리티 코딩은 기본적으로 스마트컨트랙트 개발자라면 알아두어야할 사항이라 생각하여 포스팅을 시작한다 External Call 신뢰성 - External Call 잠재적인 위험에 노출되어있다고 생각해도 무방 하다. - External Call은 해당 계약및 의존하는 다른 계약에서 악성 코드를 실행 할 수 있기 때문이다. - 그래서 모든 External Call은 잠재적인 보안 위험으로 취급되어 최대한 외부호출을 제거하거나 권장 사항을 사용하여 위험을 최소화 해야한다 1. 신뢰할 수 없는 계약의 표시 - 가장 먼저 외부 계약에 관련해서 상호 작용이 잠재적으로 안전하지 않다는 것을 분명히 하자 // bad Bank.wit.. 2022. 10. 28.