본문 바로가기
블록체인교육/솔리디티

[솔리디티] 3. 이더 단위, 가스와 가스가격

by Danny_Kim 2022. 6. 6.

 

[NEW] 누구나 쉽게 따라하는 솔리디티 강의(솔리디티 버전 0.8.13)

1. Helloworld, 카운터컨트랙트, 데이터타입

2. 변수, 상수, 불변, 상태변수 읽고 쓰기

3. 이더 단위, 가스와 가스가격

4. 조건문, 반복문, 맵핑(mapping)

5. 배열, 열거형(enum), 구조체(calldata,memory) 

6. 데이터 저장공간, 함수(view,pure 속성)

7. 에러(error), 함수수정자(modifier)

8. 이벤트(events), 생성자(constructor), 상속

9. 상속, 섀도잉,super키워드 함수 속성들

10. 인터페이스(interface), payable, 이더전송,받기 관련

11. Fallback, Call, Delegate(솔리디티 업그레이드 기법)

12. 함수 선택자(function selector), 다른 컨트랙트 사용 및 생성기법

13. Try Catch, Import(임포트), Library(라이브러리)

14. ABI 디코드, hash 함수, 서명검증, 가스최적화

 

 

1. 이더 그리고 웨이 (Ether and Wei)

 - 트랜잭션은 이더(ether)가 필요하다.

 - 1 이더(ether)는 10^18 웨이(wei)다.

소스파일

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract EtherUnits {
    uint public oneWei = 1 wei;
    // 1 wei is equal to 1
    bool public isOneWei = 1 wei == 1;

    uint public oneEther = 1 ether;
    // 1 ether is equal to 10^18 wei
    bool public isOneEther = 1 ether == 1e18;
}

 

2. 가스(Gas) 와 가스 가격(Gas price)

 2. 1 트랜잭션(transaction)에 필요한 가스비는 얼마나 필요할까?

 - 사용한 가스(gas spent) * 가스 가격(gas price) 의 이더(ether)로 트랜잭션 비용을 지불한다.

 - 가스는 계산의 단위다.

 - gas spent(가스 사용량)은 트랜잭션에 사용된 가스의 총 양이다.

 - gas price(가스 가격)은 가스(gas)당 지불할 이더의 양이다.

 - 가스 가격이 더 높은 트랜잭션 요청이 먼저 처리된다.

 - 사용되지 않은 가스는 환불된다.

 

 2.2 가스 제한(Gas limit)

 - 사용될 수 있는 가스 비용은 2가지 상한선이 존재한다.

 - Gas limit(가스 제한) : 사용자에 의해서 설정된 최대 가스 사용량에 대한 최대치)

 - block gas limit(블록 가스 제한)  : 블록에 허용된 최대 가스 양 - 네트워크에 의해서 설정됨

 

소스

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract Gas {
    uint public i = 0;

    // Using up all of the gas that you send causes your transaction to fail.
    // State changes are undone.
    // Gas spent are not refunded.
    function forever() public {
        // Here we run a loop until all of the gas are spent
        // and the transaction fails
        while (true) {
            i += 1;
        }
    }
}

 

소스 출처 : https://solidity-by-example.org/

반응형

댓글0