하나의 contract는 정확히 하나의 이름없는 함수를 갖을 수 있다. 이 함수는 입수데이터를 갖을 수 없고 어떤것도 리턴할 수 없다. 다른함수가 호출되는 함수에 대응하지 못하면 이 함수는 contract를 call하는 것으로 실행된다. 또는 데이터 없이 호출되는 경우 실행된다.
게다가, 이 함수는 데이터없이 ether를 받을 때도 실행된다. 추가적으로, ether를 받기위해서는 fallback 함수는 반드시 payable 로 마킹되어 있어야한다. 만약 그러한 함수가 없다면 contract는 전형적인 transaction을 통해 ether를 받을 수 없다.
않좋은 예가 있는데, fallback함수는 2300 gas만 사용 가능하여, 여러가지 작동을 할 여지가 없다. 다음은 2300gas 이상을 소모하는 작동들이다.
1. storage에 쓰기 작업
2. contract 생성 작업
3. 많은 양의 gas를 소모하는 외부함수를 호출
4. Ether 전송
================================================================
Gas Limit and Loops
storage에 저장되는 값은 loop으로 처리하면 block의 gas limit에 걸리게 된다.
'solidity' 카테고리의 다른 글
SMT 토큰 무한 복사 해킹 발생 (0) | 2018.04.26 |
---|---|
geth loadScript 확인 할 점 (0) | 2018.03.20 |
Contracts (0) | 2018.03.14 |
State variable Local variable (0) | 2018.03.14 |
Creating Contract via "new" keyword (0) | 2018.03.14 |