검수요청.png검수요청.png

가스 (블록체인)

해시넷
14.39.147.2 (토론)님의 2019년 11월 6일 (수) 00:49 판 (가격: 오타 수정)
이동: 둘러보기, 검색
이더리움(Ethereum)

가스(Gas)는 이더리움에서 송금이나 스마트 계약을 실행할 때 수수료를 책정하기 위해 만든 단위이다. 개스라고도 한다. 가스 가격(Gas price)는 이더의 하위 단위인 기가웨이(Gwei)로 계산된다. 중국의 이더리움으로 불리는 네오(NEO)에서 사용하는 수수료를 네오가스(NEO gas)라고 하는데, 간략히 '가스'라고 부르기도 한다.

개요

이더리움을 거래하거나 전송하기 위해서 사람들은 마이이더월렛이나 거래소를 통해 장부를 이더리움 네트워크에 올린다. 거래소에서 코인을 거래하는데 거래 수수료를 지불하듯이 이더리움을 거래할 때도 수수료가 요구된다. 이는 실물처럼 그냥 주고받는 것이 아니라 데이터를 옮기는 것이기 때문에 계산이 필요하고 여기서 계산을 위한 노동의 보상으로 발생하는 것이 이더리움 가스다.

데이터를 옮기기 위해서는 채굴자들의 연산 작업이 필요한데, 이들이 한 계산에 대한 보상으로 이더리움 가스를 제공한다. 즉, 채굴자들은 채굴을 통해 채굴 보상과 연산 작업 보상을 함께 받는 것이다. 채굴자들이 가스 보상과 같은 동인이 없다면 채굴을 열심히 하지 않으려고 할테니 추가적인 보상을 주는 것이다.[1]

특징

단위

이더리움은 계산을 수행하는 소프트웨어 플랫폼인데, 노드라고 불리는 수많은 컴퓨터들이 동시다발적으로 계산을 한다. 채굴자는 공격으로부터 네트워크를 보호하고 계산의 우선순위를 결정하는데 채굴자가 없다면 이더리움도 존재하지 않는다. 따라서 채굴자의 이탈을 막기 위해서는 적절한 보상이 필요하다.

보상을 하기 전에 채굴자들이 일의 우선순위를 정할 수 있도록 이더리움이 하는 일을 수치화해야 한다. 이것을 측정하는 것이 바로 가스 단위(Gas Unit)이다. 가스 단위는 가장 작은 유형의 작업으로 간주된다.[2] 이더리움은 일정 시간 동안 제한된 가스 가격만 처리할 수 있어서 채굴자들은 이더리움에 보내지는 수많은 요청들을 조절해야 한다.[3] 속도를 조절하지 않으면 과도한 사용이나 스팸 트랜잭션들로 네트워크에 과부하가 걸릴 수 있기 때문이다.[4] 채굴자들은 무엇이 먼저 수행되는지 선택하기 위하여 가스 가격과 가스 한도에 의존한다.

가격

각각의 트랜잭션이 많은 가스를 필요로 하지 않아도, 실제로 채굴자에게 지불해야 하는 이더의 양은 알 수 없는데 이를 결정하는 요소가 바로 가스 가격(Gas Price)이다.[5] 암호화폐도 원화와 마찬가지로 액면가로 나누어진다. 원화가 십 원, 천 원으로 나누어지듯이 이더리움 네트워크의 통화인 이더도 많은 액면가로 나누어진다.

1원이 원화의 가장 작은 단위인 것처럼 이더의 가장 작은 단위는 웨이(wei)이다.[6] 1wei가 1이더가 되기 위해서는 무수히 많은 wei가 필요한데, 정확하게는 10^18wei가 필요하다. wei의 상위 단위는 Gwei로 10^9wei가 1Gwei가 된다. Gwei는 가스를 설명할 때 가장 일반적으로 사용되는 이더의 하위 단위로 가스 비용을 0.000000001ETH라고 말하기 보다는 1Gwei라고 간편하게 말한다.

가스 가격은 이더리움의 최소 단위로 비트코인사토시와 같은 개념이라고 말할 수 있다. 트랜잭션 생성자는 원하는 가스 가격을 지정할 수 있다. 예를 들어 ‘가스 당 5Gwei를 지불할 용의가 있다.’라고 설정했을 때, 트랜잭션이 1,000,000가스를 소비하고 가스 가격을 5Gwei로 설정하면 해당 트랜잭션에 대한 수수료로 3,000,000Gwei를 지불하게 된다.

이때 대부분의 채굴자들은 가스 가격의 내림차순으로 트랜잭션을 분류하고 가스 가격이 높은 트랜잭션을 선택하여 블록에 포함시키기 때문에 설정한 가스 가격이 높을수록 트랜잭션은 더 빨리 처리된다.[5] 가격을 낮게 책정해도 결국 트랜잭션이 블록에 포함되기는 하지만 그 대기 시간이 상당히 길어질 가능성도 있다.[5]

따라서 선착순으로 진행되는 ICO의 경우 빠르게 들어가기 위하여 전송속도를 높이면 되는데, 수수료를 높여 전송 속도를 높일 수 있다. 즉 가스 가격을 높게 측정하면 된다. 이는 아르바이트를 구할 때 같은 일을 한다면 시급이 높은 일을 선택하는 것과 같은 맥락으로 이해하면 된다. 수수료가 높은 거래부터 처리되기 때문에 적당한 금액으로 가스 가격을 측정하는 것이 필요하다.

다만 가스 가격은 일반 사람들에 의하여 무작위로 책정되지는 않고 가스 가격을 측정해주는 사이트가 있다. 이더리움 가스스테이션이라는 사이트인데, 이곳에서 적당한 가스 가격을 선택할 수 있다. 사용되는 가스의 평균값이라고 보면 된다. 빠른 처리를 원할 경우 여기 나온 금액보다 높은 가격을 측정하면 된다.

한도

사용자의 입장에서 아무런 생각 없이 트랜잭션을 전송했다가 수백 달러 어치의 이더를 수수료로 허비하고 싶지는 않을 것이다.[5] 그렇다고 해서 이러한 상황을 방지하기 위해 트랜잭션이 소모하는 가스의 양을 정확하게 파악하는 것도 매우 어려운 일이다. 이때 사용자는 트랜잭션을 실행하기 위해 사용할 가스의 최대 금액을 나타내는 가스 한도(Gas Limit)를 설정할 수 있다.

가스 한도는 요청하는 작업량의 추측이다. 하지만 추측은 쉬운 일이 아니기 때문에 몇몇의 지갑 어플리케이션이 그 한도를 정해준다. 일반적으로 21,000가스의 한도는 대부분의 거래를 만족한다고 알려져 있다. 한도에 따라 발생할 수 있는 문제점이 있는데, 먼저 한도를 너무 낮게 지정하면 작업이 완료되지 않고 거래는 실패하며 그 시점까지 사용된 이더가 손실된다. 즉, 한도가 넘어가게 되어 작업이 중지되고 거래 자체가 성립되지 않으며 수수료만 빠져나가는 상황이 발생한다.

반대로 한도를 너무 높게 설정하여 한도 전에 작업이 끝나더라도 작업에 사용되지 않은 모든 이더는 다시 되돌려 받을 수 있다.[2] 즉, 가스 한도 이내에서 모든 거래가 완료되면 남은 가스는 다시 지갑으로 돌아온다. 가스 한도는 이처럼 작업 중단 시점을 보장함으로써 무제한으로 이더를 사용하는 것을 방지할 수 있다.

이때 가스 한도를 블록 가스 한도(Block Gas Limit)와 혼동하는 경우가 있는데, 블록 가스 한도는 이더리움의 각 블록에 적용되는 최대 캡이다. 이더리움은 누군가가 무한 루프를 실행할 수 없도록 하기 위하여 각 블록에 대해 가스 제한을 두고 있다. 무한 루프가 발생한면 트랜잭션이 완료되지 않고 결국 블록 채굴이 발생하지 않기 때문이다.

측정

실제로 가스를 측정하기 위해서는 가스 가격, 가스 한도, 블록 가스 한도의 세 가지 개념이 필요하다. 이 셋 중 가스 가격과 한도는 사용자가 결정하며 블록 가스 한도는 이더리움 채굴자들이 설정할 수 있다. 다음은 가스 사용 측면에서 본 채굴자들의 트랜잭션 처리 과정이다.

  1. 채굴자들이 블록에 담을 트랜잭션들을 TxPool에서 가져온다.
  2. 트랜잭션들을 각 주소 별 넌스와 가스 가격으로 순서를 정한다.
  3. 채굴자들이 트랜잭션에 설정된 값(가스 한도 * 가스 가격)만큼을 발신 주소로부터 가스로 가져온다.
  4. 트랜잭션을 실행하며 명렁어에 따라 가스를 소모한다. 가스 한도보다 남는 가스를 다시 돌려주지만 가스가 모자랄 경우 돌려주지 않고 실행했던 것을 되돌린다.
  5. 실행된 트랜잭션들을 블록에 담는다. 이때 이 트랜잭션들의 개별 가스 한도의 총합은 블록 가스 한도를 넘을 수 없다.

채굴자들의 트랜잭션 처리 과정을 살펴보면 가스 가격은 가스 한도에서 소모되는 1가스 당 가격으로, 처음 정렬에 영향을 끼치는 것을 알 수 있다. 즉 가스의 가격을 높게 설정하면 그만큼 빨리 블록에 포함될 수 있지만, n배만큼 가스비가 늘어난다. 즉, 가스 한도는 가스비의 예측치라고 할 수 있다. 가스 한도를 너무 낮게 설정하면 실제 소모 가스가 가스 한도를 넘어 Out of Gas라고 불리는 비정상 트랜잭션 가스 문제가 발생할 수 있다. 그렇다고 또 너무 높게 설정하면 블록 가스 한도로 인해 트랜잭션이 블록에 담길 수 없는 문제가 발생한다.[7]

종류

이더리움 외에도 네오, 온톨로지가 가스로 수수료를 부과하고 있다. 네오 가스, 온톨로지 가스로 이름은 다르지만 쓰임은 같다. 네오는 중국 최초의 암호화폐로 중국의 다 홍페이(Da Hongfei)가 비트코인과 이더리움의 장점을 결합하여 만들었다. 네오에서는 네오가스가 쓰이며 이더리움과 마찬가지로 네오를 거래할 때 수수료로 이용된다.

다만 이더리움 가스와 네오가스의 차이점은 네오가스가 자체적인 암호화페로 존재한다는 것이다. 네오 플랫폼에서는 네오가스라는 암호화폐를 통해 수수료를 지불하는데 네오가스는 네오와 교환 가능하다. 네오가스는 1억 개로 발행량이 정해져 있고 한 개의 블록 당 가스 8개가 생산되며 200만 블록이 지날 때마다 생산 가스가 한 개씩 감소하는 시스템이다. 발행량인 1억 개의 네오가스가 생산되면 더 이상 가스는 생성되지 않는다. 이더리움과의 또 다른 차이점은 네오를 보유하면 그에 대한 이자로 네오가스를 받을 수 있다는 것이다. 보유하고 있는 네오가 많을수록 보상으로 받게 되는 가스의 양도 늘어난다.[1]

각주

  1. 1.0 1.1 김진배 기자, 〈(What is Block) 가스! 가스! 가스! 블록체인 ‘가스’가 뭘까〉, 《블록미디어》, 2019-02-14
  2. 2.0 2.1 레이더 공식 홈페이지 - https://ethgas.io/kr/
  3. Radar Relay, 〈이더리움 가스 제대로 알아보기, Ethereum Gas란?〉, 《네이버 블로그》, 2018-05-31
  4. 소소대담, 〈이더리움, GAS, ERC20, 샤딩, 세그윗, UTXO〉, 《네이버 블로그》, 2018-06-20
  5. 5.0 5.1 5.2 5.3 블록체인 개발자, 〈블록체인 용어 정리 10/02 2018〉, 《네이버 블로그》, 2018-10-02
  6. teddyhong182, 〈블록체인 용어 사전 ver 0.5〉, 《깃허브》, 2018-07-24
  7. 조상연, 〈이더리움 가스에 대한 이해: Gas Price, Gas Limit, Block Gas Limit〉, 《미디엄》, 2018-07-20

참고자료

같이 보기


  검수요청.png검수요청.png 이 가스 (블록체인) 문서는 블록체인 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.