솔리디티의 오버플로우와 언더플로우
1570 단어 hacksethereumblockchainsolidity
과다
오버플로는 uint(부호 없는 정수)가 바이트 크기에 도달한 상태이며, 다음에 추가되는 요소는 첫 번째 변수 요소(기본 변수 값)를 반환합니다. uint의 바이트 크기는 255입니다. 즉, 최대값에 도달하면 0으로 재설정됩니다.
아래 그림:
uint16 number = 65535;
return number++;
// this returns 0 because it has gotten to the max
언더플로
오버플로와 유사하게 언더플로는 uint16에서 1을 빼면 0이 되고 65535로 표시됩니다(단위는 견고성에서 부호가 없으므로 음수가 될 수 없음).
아래 그림:
uint16 number ; // number here is equal to 0
return number--;
// this returns 65535 because it has gotten to the Minimum
오버플로는 매우 일반적이며 다음과 같은 제어 문으로 확인해야 합니다.
if(a + c > a) {
a = a + c;
}
이제 오버플로 및 언더플로 개념을 이해하고 코드를 작성하는 동안 주의를 기울여야 하며 스마트 계약이 배포되면 변경할 수 없기 때문에 변수가 보유할 값을 계속 확인해야 합니다.
더 쉬운 대안은 OpenZeppelin의 SafeMath 라이브러리( Docs & Github )를 사용하는 것입니다. 이 라이브러리는 모든 수학 연산자에서 오버플로를 자동으로 확인합니다. 결과 코드는 다음과 같습니다.
a = a.add(c);
오버플로가 있으면 코드가 되돌아갑니다.
이것이 Solidity의 오버플로 및 언더플로에 대한 개요를 얻고 이러한 시나리오에서 더 잘 탐색하는 데 도움이 되었기를 바랍니다.
Reference
이 문제에 관하여(솔리디티의 오버플로우와 언더플로우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/thenuelgeek/overflow-and-underflow-in-solidity-1bj7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
uint16 number = 65535;
return number++;
// this returns 0 because it has gotten to the max
오버플로와 유사하게 언더플로는 uint16에서 1을 빼면 0이 되고 65535로 표시됩니다(단위는 견고성에서 부호가 없으므로 음수가 될 수 없음).
아래 그림:
uint16 number ; // number here is equal to 0
return number--;
// this returns 65535 because it has gotten to the Minimum
오버플로는 매우 일반적이며 다음과 같은 제어 문으로 확인해야 합니다.
if(a + c > a) {
a = a + c;
}
이제 오버플로 및 언더플로 개념을 이해하고 코드를 작성하는 동안 주의를 기울여야 하며 스마트 계약이 배포되면 변경할 수 없기 때문에 변수가 보유할 값을 계속 확인해야 합니다.
더 쉬운 대안은 OpenZeppelin의 SafeMath 라이브러리( Docs & Github )를 사용하는 것입니다. 이 라이브러리는 모든 수학 연산자에서 오버플로를 자동으로 확인합니다. 결과 코드는 다음과 같습니다.
a = a.add(c);
오버플로가 있으면 코드가 되돌아갑니다.
이것이 Solidity의 오버플로 및 언더플로에 대한 개요를 얻고 이러한 시나리오에서 더 잘 탐색하는 데 도움이 되었기를 바랍니다.
Reference
이 문제에 관하여(솔리디티의 오버플로우와 언더플로우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thenuelgeek/overflow-and-underflow-in-solidity-1bj7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)