이더리움 거래시 발생하는 GAS(GAS Limit, Block GAS Limit, GAS Price, Total fee)개념잡기

in #kr7 years ago (edited)



비탈릭 Twitter에 갔다가, 비탈릭이 칭찬한 글이 있어서 읽어보니 상당히 도움이 되더군요.
ETH를 송금할 때 늘 만나게 되는 가스비.
그냥 수수료이겠거니하고 지불해왔지만 한번 알아보고 지나가려 합니다.






GAS


이더리움은 EVM(Ethereum Virtual Machine)이라는 블록체인환경에서 실행됩니다. 잘 아시다시피 네트워크에 참여하는 모든 노드들이 블록을 확인하는 프로토콜의 일부로서 EVM을 실행하고 있습니다. 이렇게 노드가 서로의 증인이 되기 때문에 안전한 구조인데요. 여러분이 ETH를 보낸다면 네트워크의 모든 노드들이 동일한 계산을 수행하고 동일한 값을 저장해야 하는 일련의 '작업'이 필요해 집니다.
그리고 이런 작업량을 GAS, 혹은 특정금액으로 환산되기 때문에 GAS Value라고 표현합니다.

잘 보시면 작명센스가 아주 좋습니다. 이더는 영어로 Ether이고, 이건 우리가 알고있는 석유화학물질 에테르죠. 에테르는 유기용매로서 에테르추출법을 실행하면 가스가 발생합니다. 그래서 Ether도 거래에 사용하면 가스가 발생합니다. (갑작스런 Trivia)

GAS Limit & Price


모든 ETH거래에는 GAS Limit 와 GAS Price가 포함되어 있어야합니다.
GAS Limit의 개념은 쉽습니다. 지금 사용자가 하려는 거래가 '작업'을 발생시킬텐데 "그 '작업'이 최대 몇 가스를 발생시킨다." 라는 작업량 예상치 입니다. estimated 된 것이라서 송금창에서 수정도 가능합니다.
GAS Price는 자유롭게 호가하는 것이라서 이게 문제인데요. 현재 모든 ETH거래가 마이너들(Miners)에 의해 선택되기 때문에 사용자가 보내려는 GAS Price는 거래가 걸리는 시간에 영향을 미칩니다.
이게 대체 무슨 말인지 알아보겠습니다.

먼저 알아야할 개념은 Block Gas Limit 입니다.
사실 마이너들에게나 중요한 개념이지만 최근 다시 문제시 되고 있으므로 한번 알아봅니다.
Block Gas Limit는 한 블록에 담을 수 있는 GAS Limit의 갯수 입니다. 현재 한 블럭은 4,712,357 개의 가스를 포용하도록 되어있습니다. 즉, GAS Limit이 21000 인 Transaction을 약 224개 묶어서 한 블록에 담을 수 있습니다. 이 블록은 약 15~20초 마다 생성이 되고 있는데요.
빈번한 ICO로 이더의 Transaction이 문제시되자 많은 마이닝풀들이 이 Block Gas Limit를 더 크게하는데 동참하고 있습니다. (https://steemit.com/kr/@kanghamin/31zeoh 참고)
그럼 한 블록에 담을 수 있는 가스량이 많아지고 거래는 더 빨라질 수 있습니다.

쉽게 표현하면, 이더를 목적지로 송금하는 것은 기차를 타고 목적지로 가는 것입니다.
기차는 마이너들이 운영합니다.
그런데 손님이 많아져서 기차칸이 10칸(10량)만으론 이제 수용이 안됩니다.
기차칸을 15칸으로 증설하자는 움직임입니다.





그런데
왜 GAS Price가 송금속도와 연관이 있느냐

위에서 언급한 '작업'에 들어가는 비용은 정해져있습니다. 이 비용이 부족하면 아예 거래가 성사되지 않습니다. 그러나 비용이상 지불했다고 하더라도, Block GAS Limit을 초과시키는 GAS Limit은 거부될 수 있습니다.

예를 들어, 각 거래의 GAS Limit이 10, 20, 30, 40, 50 인 5개의 거래가 있다고 가정해 보겠습니다.
Block GAS Limit가 100 인 경우, 처음 4개의 거래가 블록에 맞을 수 있습니다. 마이너들은 블록에 포함할 거래를 "선택"적으로 조합합니다. 그런데 다른 마이너는 블록 (50 + 40)에서 마지막 두 개의 먼저 Transaction에 포함할 수 있으며, 그 경우 남은 공간에 첫 번째 Transaction(10)만 포함할 수 있습니다. 20과 30은 먼저 신청했더라도 Pending 됩니다.

그렇게 현재 Block GAS Limit를 초과시키는 거래는 네트워크에 의해 거부되고 사용자는 "거래가 Block GAS Limit를 초과하였다"라는 메시지를 받게되는 것이죠. 수익을 위해 최적화하는 마이너에게 GAS Price가 많이 낮거나, 0인 거래를 먼저 수락하도록 설득하기는 어려울 것입니다.




이제 송금창을 보시면 GAS Limit와 GAS Price가 무엇을 의미하는지 전보다 감이 오실 듯 합니다.
사실상 마이너에게 지급되는 수수료는 GAS Limit와 GAS Price를 곱한 총액이므로, GAS Price만 속도에 영향을 주진 않습니다. Transaction Fee 전체가 속도에 영향을 미칩니다.


결론


  • GAS Limit : 본 송금 '작업'에서 소비되는 가스량
    (estimated 한 수치라서 변경가능합니다. 하지만 넘 작게하면 거부됨)

  • GAS Price : 내가 가스당 지불할 가격
    (경매처럼 내가 금액을 제안하는 것임)

  • MAX TOTAL : GAS Limit * GAS Price 로 형성된 최종지불금액
    (feat. 수수료없는 EOS짱짱맨)


※ 원문 : http://hudsonjameson.com/2017-06-27-accounts-transactions-gas-ethereum/

Sort:  

Ether와 Gas 천재의 작명 센스가 돋보입니다. ^.^

Please translate to english looks like a great post!

You can find the original post. Pls click the url at the end. Thanks for ur reply :)

좋은 정보, 잘 보고 갑니다~!

넵~~ 댓글 감사해요~

혹시 이런 문제 때문에 제가 eos ico 에 참여했는데 퍼블릭 키 인증하는 과정에서 엄청 오랫동안 안되고 걸리는 건가요?/

너무 오래 안됐다면 이더스캔에서 전송된건지 확인해보실 필요가 있습니다. Warning 문구가 있고 빨강불이 들어왔으면 실패에요ㅜㅜ

이더스캔에는 아예 로그가 안남아있더라구요.... 퍼블릭키 인증 할 때는요.

지금 이더리움 집어넣어놨는데 그냥 빼고 싶어요. 시간 내에 안될 것 같고 되게 짜증나네요.. 먼가 되어야 하는데 안되니까요...ㅜㅜ

거기다가 퍼블릭키 인증이 안되면 글 보니까 찾지도 못한다니 걍 30~35스팀달러치 날리는거라서.. 걱정이됩니다.

아 이런 체결되지 않았을 가능성이 큰 것 같습니다. GAS limit는 괜히 줄였다가 실제 GAS보다 더 줄이면 거부되니까 되도록 건드리지 마시고, GAS Price만 20정도로 낮춰서 보내면 되긴 할거에요. ㅜㅜ

궁금증이 풀렸습니다.
감사합니다.

읽어주셔서 감사합니다.

번역본으로 본 글에서 가스비라고만 나와있어서 먼가 싶었는데 알아보기 쉽게 설명해주시네요~ 보팅하고 가요~^^

보팅은 사랑이죠^^ 감사드립니다.

설명 쉽게 잘쓰셨네요. 잘봤습니다^^

잘 보고 있습니다. 댓글 감사합니다 ^^

쉬운 설명에 이해하기도 편했습니다.
감사합니다.
저도 보팅하고 갑니다.

읽어주셔서 고맙습니다. ^^

유용한 정보를 쉽게 알려주시니 제가 더 고맙죠...
앞으로도 쉬운 설명 잘 부탁 드립니다.

이런거였군요. ico도 참여해보고 나름 공부도 했는데 이해하기 힘들었는데 가장 쉽게 설명해 주셨네요.
감사의 마음으로 팔로&업봇 하고 갑니다!

읽어주시고 업봇주시고 팔로주셔서 감사합니다~
맞팔하겠습니다^^

쉬운 설명 고맙습니다.

읽어주시고 댓글 달아주셔서 감사합니다 :)