변수 시퀀스 조직.

견고성 스마트 계약에서 상태 변수를 정의하는 순서는 해당 변수를 사용하는 함수를 호출하는 동안뿐만 아니라 계약을 배포하는 동안 지출하는 가스 요금에 영향을 미칩니다.

Solidity는 상태 변수를 256비트 슬롯에 저장하고 2개(또는 그 이상)의 연속 변수 크기를 더하면 256 이하가 되면 이러한 변수는 동일한 슬롯에 저장됩니다. (바이트와 같은 유형은 최대 2개의 슬롯을 획득할 수 있음)

다음 계약을 사용하여 실험해 보겠습니다.




contract varSequence_1{
    uint128 var1;
    uint256 var2;
    uint128 var3;
    byte

    function set(uint num1, uint128 num2) external {
        var1= num2;
        var2= num1;
        var3= num2;
    }
}



contract varSequence_2{
    uint128 var1;
    uint128 var3;
    uint256 var2;

    function set(uint num1, uint128 num2) external {
        var1= num2;
        var2= num1;
        var3= num2;
    }
}


두 계약은 정확히 동일하며 정의 변수의 순서만 변경됩니다.

결과:



배포 비용
  • varSequence_1


  • varSequence_2



  • 배포에는 아주 작은 차이가 있습니다. 함수 호출을 확인해 보겠습니다.

    함수 호출 비용
  • varSequence_1


  • varSequence_2



  • 관찰



    가변 시퀀스를 최적화한 varSequence_2는 varSequence_1보다 비용이 거의 25% 저렴했습니다.

    좋은 웹페이지 즐겨찾기