가스(수수료)를 지불하는 이유

이더리움은 비트코인과는 달리,
스마트 컨트랙트에서 수행되는 모든 연산에 대해 ‘가스(Gas)’라는 수수료를 부과한다

  • 수수료를 부과하는 이유는 이더리움 네트워크 위에서 동작하는 스마트 컨트랙트 작업들이 ‘전체 노드’에 영향을 미치기 때문

  • 이더리움은 튜링 완전 언어 (솔리디티)이기 때문에, 튜링 불완전한 비트코인 ‘스크립트’ 와는 달리 반복문을 지원한다

  • 그러나 반복문의 가장 큰 단점‘무한 루프 🔄 문제’가 일어날 수 있다는 것이다

  • 만약 악의적인👹 사용자가 큰 자원을 소모하는 ‘무한 루프🔄 코드’가 들어있는 트랜잭션을 실행시킨다면,

  • 트랜잭션은 이더리움 네트워크의 엄청난 양의 자원을 소모하게 될 것이고, 심각하게는 이더리움 네트워크 전체가 멈출 수도 있다 🚫

👉 수수료는 이러한 악의적인 공격으로부터 ‘네트워크를 보호’한다

  • ‘각 연산마다’ 수수료를 부과하면 악의적인 사용자라도 수수료를 지불해야 하기 때문에 쉽게 ‘무한 루프 코드’를 실행시킬 수 없습니다.

  • 의도치 않게 ‘무한 루프’를 만든 코드를 실행시키더라도 ‘Gas Limit’ 을 설정해두면 지정해둔 가스를 다 소모하기 전에 실행을 멈출 수 있다

가스 단위(Gas Unit)

‘가스 단위’는 수행해야 하는 작업량의 측정값 ‘Gwei’ 라는 단위를 사용한다

  • 일반적으로 이더리움에서 표준 가스 한도는 21,000가스 이다

  • 1,000,000,000 Gwei = 1ETH

  • 210,000 Gwei는 👉 0.00021ETH 이므로,

  • 0.00021 * 1 ETH를 계산하면,

  • 이더리움 네트워크상에서 트랜잭션을 발생시키기 위해
    얼마의 수수료를 지불해야하는지 알 수 있다

  • 가스비 = 가스 가격(10Gwei) * 가스 한도(21,000) = 210,000Gwei

    1 이더리움 = 10^18 wei 이며 / 1 Gwei = 10^9 wei 이다

  • 트랜잭션 송신자는 ‘Gas Limit’‘Gas Price’ 를 트랜잭션에 지정한다

  • ‘이더리움의 작은 값’으로 단위로 가스 가격(Gas Price)을 측정한다

  • 가스를 더 많이 지불하면 먼저 수행하게 할 수 있다

  • 가스 가격은 먼저 수행하게 만드는 ‘뇌물’ 과도 같다
    👉 ex) 가스 가격을 0으로 설정한다면 처리 순위가 밀려나게 된다

👉 예를 들어
송신자가 ‘Gas Limit’ 을 50,000 으로 지정하고,
‘Gas Price’ 를 20 Gwei로 지정했다고 가정해보면

이것은 송신자가 ‘최대’ 50,000 x 20 Gwei = 10^15 Wei = 0.001 이더트랜잭션을 실행하는 데 지불한다는 것을 의미한다


Gas Limit

  • ‘Gas Limit’ 은 송신자가 지불하고자 하는 ‘가스의 최댓값’을 의미한다

  • 만약 ‘가스 최대치’를 지불하고도 남을 충분한 이더가 들어있다면 트랜잭션은 문제없이 실행될 것이고

  • 송신자는 트랜잭션이 완료된 후, 사용되지 않은 가스를 기존 비율로 ‘환불’받는다

Gas Limit - Use Gas(50) - Use Gas(30) = Remaining Gas