단락

모든 코딩 언어에서 Short-circuiting을 사용하는 기본 의도는 비교 작업 중에 수행되는 계산 수를 줄이는 것입니다. 견고성에서 계산 감소는 가스 감소를 의미합니다.

다음 계약을 고려하십시오.

contract shortCircuit1 {
    bool flag;

    function conditions(int x) external {
        bool isEven = x % 2 == 0;  // computation 1
        bool isNotZero = x != 0;   // computation 2

        if (isEven && isNotZero) { // computation 3
            flag = true;
        } else {
            flag = false;
        }
    }
}


contract shortCircuit2 {
    bool flag;

    function conditions(int x) external {

        if (x % 2 == 0 && x != 0) { // 3 computations only if x % 2 == 0 is true, else only 1 computation
            flag = true;
        } else {
            flag = false;
        }
    }
}


두 계약 모두 동일한 조건을 따르며 함수에 대한 입력은 짝수이고 0보다 커야 합니다. 조건이 참이면 상태 변수flag가 참으로 설정됩니다. 그리고 이전 함수 호출flag이 true이고 다음 호출이 두 조건을 모두 충족하지 않는 경우flag는 false로 설정됩니다.
이제 함수 내부에 작성된 조건에 초점을 맞추겠습니다.

단락1
함수 입력 - 0
두 조건을 모두 계산한 다음 세 번째 계산을 수행하여 두 조건이 모두 참인지 확인합니다.



단락2
함수 입력 - 0
첫 번째 조건이 참인 경우에만 두 번째 조건을 계산합니다(단락). 따라서 계산 비용을 절약할 수 있습니다.



참고: 위에 주어진 예에서 가스의 차이는 매우 적습니다. 긴 비교 계산(예: 문자열 또는 배열)을 상상해 보십시오. 이러한 경우 가스 차이가 상당할 것입니다.

좋은 웹페이지 즐겨찾기