Solidity 솔리디티 강좌 3강 : gas 와 ether 단위

flowing1ife·2023년 7월 6일
0

[ Solidity 깨부수기 ]

목록 보기
3/29
post-thumbnail

Solidity 솔리디티 강좌 3강 : gas 와 ether 단위

이번엔 Solidity의 gas와 ether 단위의 개념에 대해 알아보도록 하자.


Gas와 Ether 단위

📌 Solidity

1 ether = 101810^{18} wei = 10910^9 Gwei
0.000000000000000001 ether = 1181^{-18} ether = 1 wei
0.01 ether = 101610^{16} wei

  • Gwei : 가스를 낼 때 사용하는 비용

스마트 컨트랙트를 사용할 때에는 가스라는 것이 필요하다. 개발자가 스마트 컨트랙트를 길게 짜면 가스비용이 더 많이 나올 가능성이 높다.

이러한 가스비는 'Ethereum Yellow paper'의 27페이지에 어떤 식으로 계산이 되는지 나와있다.

예를 들어 위의 경우, transaction, 즉 ether를 보내는 함수를 사용했을 때 21000Gwei가 가스비로 발생한다는 것을 의미한다.

다행인 것은 ether, wei, Gwei 모두 solidity 내에서 지원을 해주기 때문에 1181^{18} 같은 것을 사용할 필요가 없다.

// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;

contract lec3{
    uint256 public value = 1 ether; //10^18
    uint256 public value1 = 1 wei; // 1
    uint256 public value3 = 1 gwei; // 10^9
}

1 ether, 1 wei, 1 Gwei를 변수에 저장해보았다.


👉 결과

이 때, 콘솔창에 뜬 transaction 결과를 누르면 가스가 소비된 것을 확인할 수 있다.

value3 변수를 call 했을 때, 2451 gas가 소비된 것을 알 수 있다.
이 외에도 contract를 배포할 때에도 가스가 소비된다.

이와 같은 가스비가 발생하는 이유는 이더리움 블록체인과 상호작용, 즉 스마트 컨트랙트를 사용하면 이 정보들이 블록체인 네트워크에 올라가기 때문이다.

가스비는 보안적인 측면에서도 큰 의미를 가진다. 바로 디도스 공격을 방지한다는 점인데, 예를 들어, 어떤 사람이 악의적으로 스마트 컨트랙트를 계속해서 배포를 하거나 어떤 동작을 반복적으로 실행하는 등 블록체인 네트워크를 과부하 시키는 스마트 컨트랙트를 개발하였을 때, 가스비가 요구되면 비용적인 측면에서 부담이 되므로 이를 방지할 수 있다.

이처럼 가스는 스마트 컨트랙트에서 매우 중요한 개념이며, 개발 시 가스비를 적게 소모할 수 있도록 이를 고려하여야 한다.


출처 및 참고 자료

profile
👩🏻‍💻 Backend Engineer, Contract Developer

0개의 댓글