Solidity 솔리디티 강좌 3강 : gas 와 ether 단위
이번엔 Solidity의 gas와 ether 단위의 개념에 대해 알아보도록 하자.
1 ether = wei = Gwei
0.000000000000000001 ether = ether = 1 wei
0.01 ether = wei
스마트 컨트랙트를 사용할 때에는 가스라는 것이 필요하다. 개발자가 스마트 컨트랙트를 길게 짜면 가스비용이 더 많이 나올 가능성이 높다.
이러한 가스비는 'Ethereum Yellow paper'의 27페이지에 어떤 식으로 계산이 되는지 나와있다.
예를 들어 위의 경우, transaction
, 즉 ether를 보내는 함수를 사용했을 때 21000Gwei가 가스비로 발생한다는 것을 의미한다.
다행인 것은 ether, wei, Gwei 모두 solidity 내에서 지원을 해주기 때문에 같은 것을 사용할 필요가 없다.
// 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를 배포할 때에도 가스가 소비된다.
이와 같은 가스비가 발생하는 이유는 이더리움 블록체인과 상호작용, 즉 스마트 컨트랙트를 사용하면 이 정보들이 블록체인 네트워크에 올라가기 때문이다.
가스비는 보안적인 측면에서도 큰 의미를 가진다. 바로 디도스 공격을 방지한다는 점인데, 예를 들어, 어떤 사람이 악의적으로 스마트 컨트랙트를 계속해서 배포를 하거나 어떤 동작을 반복적으로 실행하는 등 블록체인 네트워크를 과부하 시키는 스마트 컨트랙트를 개발하였을 때, 가스비가 요구되면 비용적인 측면에서 부담이 되므로 이를 방지할 수 있다.
이처럼 가스는 스마트 컨트랙트에서 매우 중요한 개념이며, 개발 시 가스비를 적게 소모할 수 있도록 이를 고려하여야 한다.
출처 및 참고 자료