Gas! Gas! Gas! ⛽ 가스비를 절약하는 방법

Donguk Seo
Elysia TechBlog
Published in
12 min readApr 2, 2021

--

엘리시아는 “커피 한잔으로 건물주가 될 수 있습니다”를 목표로 시작한 서비스입니다. 거래의 투명성을 위해 블록체인 기술을 도입했고, 2020년 12월에 새로 업그레이드한 Asset Token을 이더리움 메인넷에 배포했습니다. 이더리움의 스마트 컨트랙트를 이용해서, 거래의 투명성을 보장할 수는 있었지만 다른 큰 문제가 있었습니다. 그것은 바로 네트워크 수수료(가스비 = Gas price) 입니다. 개발할 당시만 해도 이더리움의 가격이 200$ 정도 였지만 2021년 들어 이더리움의 가격은 폭발적으로 상승해 현재는 2,000$를 바라보고 있습니다. 이더리움의 가격 상승은 네트워크 수수료에도 큰 영향을 주었습니다. 개발할 당시에는 수수료가 커피 한 잔 값도 안 되었지만, 실제로 상품을 오픈하니 수수료가 커피 10잔의 비용이었습니다. 커피 한잔의 건물주가 되기 위해서는 커피 10잔의 비용을 수수료로 내야 하는 아이러니한 상황이었습니다. 곧바로 엘리시아 개발팀은 네트워크 수수료 문제를 해결하기 위해 여러 솔루션을 찾아보았습니다. 결론으론, Binance Smart Chain(BSC)을 도입했고 수수료를 0.3$로 대폭 낮출 수 있었습니다. 이 글에서는 가스비가 무엇인지, 이더리움의 가스비 문제를 해결할 방법은 무엇들이 있는지, 엘리시아는 가스비를 줄이기 위해 어떤 일을 했는지를 소개합니다.

가스비에 대해서

“이더리움 = 모두가 사용하는 공통의 데이터베이스” 라고 생각해볼 수 있습니다. 모두가 사용하는 공통의 데이터베이스에 기록을 남기기 위해서는 당연히 기록해주는 누군가에게 보상을 주어야 합니다. 이때 기록을 남기면 받는 보상은 이더리움의 기본 화폐이며, 이 기본 화폐는 이더리움 또는 줄여서 이더(ETH)라고 부릅니다. 이더리움은 가스비 도입해서, 기록하는 이에게 보상을 해주는 동시에 네트워크를 마비시키는 과도한 요청을 막았습니다. 많은 요청을 하려면 그만큼 많은 이더리움이 필요하기 때문에 과도한 요청을 할 수 없습니다. 이더리움에서 기록해주는 누군가는 네트워크를 구성하는 노드라고 하며, 이 노드들은 기록을 남기면 네트워크의 기본 보상 + 요청자의 가스비를 받게 됩니다.

가스비 = 트랜잭션 실행 가스의 총량 * 가스의 가격

가스비는 위의 수식으로 계산됩니다. 기록(트랜잭션 실행)하는데 사용하는 컴퓨터 명령어들을 고려해서 필요한 가스의 총량을 구합니다. 많은 연산을 할수록, 가스의 양이 늘어납니다. 가스를 기름으로 생각해보면 더 좋습니다. 서울에서 경기도로 가는 것보다, 서울에서 부산으로 이동할 때 사용하는 기름의 양 많은 것처럼, 더 많은 계산을 할 수록 가스의 양이 늘어납니다. 이 가스 양은 사용하는 컴퓨터 명령어마다 매겨놓은 가스 테이블를 이용해 계산합니다.

가스의 가격은 1 가스당 가격이며, 이더리움의 가격에 비례합니다. 기름의 비유로 다시 설명하면, 기름의 가격이 오를수록 서울에서 경기도로 갈 때 사용하는 주유비가 커지는 것과 동일합니다. 다만 이더리움의 경우 독특한 점은, 네트워크의 혼잡도에 따라 비용이 결정된다는 점입니다. 대기 중인 요청이 많을수록 가스 가격이 더 비싸집니다. 얼마나 비싸지냐면, 시간에 따라 평소보다 20배가 되는 경우도 존재합니다. 이더리움의 가스 가격은 https://ethgasstation.info/ 에서 확인할 수 있습니다.

가스비 수식을 이해하고 나면, 커피 1잔의 수수료가 커피 10잔의 수수료로 되는 이유를 잘 설명할 수 있습니다. 이더리움의 가격이 10배가 되었기 때문입니다.

가스비 문제를 해결할 방법은 없는가?

가스비를 줄이기 위해서는 첫 번째 연산을 최대한 줄이거나, 두 번째 가스의 가격을 줄이는 것밖에는 없습니다. 첫 번째는 사용하는 코드를 줄여 어느 정도 줄일 수 는 있겠지만, 줄여보아야 명령어 몇 개 덜 사용하는 것일 뿐 절약의 정도가 크지 않습니다. 가스의 가격을 줄이려면 이더리움이 가스 문제를 해결해주기를 마냥 기다리거나, 다른 네트워크를 사용해 볼 수 있습니다. 이더리움의 창시자 비탈릭 부테린은 가스비 문제에 대해 아래의 트윗을 남겼습니다.

https://twitter.com/VitalikButerin/status/1300707752335962113?s=19

비탈릭 부테린은 zksync/loopring/OMG를 사용하는 것을 추천했습니다. 이더리움의 Gas 비용과 트랜잭션의 속도 문제는 꾸준히 제기되어 왔고, 이더리움 재단에서도 이를 해결하기 위해 열심히 개발하는 중입니다. 이더리움 2.0에서는 샤딩을 도입해서 이런 확장성 문제를 해결하려 하고 있고, 현재의 1.0 버전에서는 EIP-1559을 도입해서 가스비 문제를 완화하려 하고 있습니다. EIP-1559의 상세한 내용은 유민호 님의 미디엄 글을 참고하면 좋습니다.

가스비를 줄이는 방법 1: 레이어2 이용하기

비탈릭 부테린이 제시한 3가지 해결책들은 레이어2(오프 체인 또는 사이드 체인)라고 합니다. 레이어2는 이더리움에 기록하기 전에, 여러 개의 트랜잭션을 모아 계산을 합니다. zksync, loopring, OMG 모두 레이어2 솔루션이며 각자의 방법으로 트랜잭션을 정리합니다. 그 후 레이어1(온 체인)인 이더리움에 기록을 남깁니다. 여러 개의 트랜잭션을 하나로 줄이고, 트랜잭션들을 정리하기 때문에 이더리움 네트워크 자체에서 계산하는 양을 줄여 가스비를 크게 줄일 수 있습니다. Mohamed Fouda의 *The State of Ethereum L2*에서 가져온 아래의 그림을 보면 더 이해하기 쉽습니다. 레이어 2에서는 특정 시점마다(체크포인트) 여러 개의 트랜잭션을 합쳐서 이더리움에 기록합니다.

ZK 롤업 : zksync & loopring

zksyncloopring은 모두 영지식 롤업(Zero Knowledge rollups)이라는 롤업 모델을 사용합니다. 모든 상태 변화, 서명 검증, 컨트랙트 실행 등의 모든 계산은 레이어2에서 진행하고, 그 결과 데이터를 이더리움 메인넷에 기록합니다. 이더리움 메인넷은 데이터를 저장하는 용도로만 사용하고, 모든 계산은 레이어 2에서 이루어집니다. zksync 홈페이지에 있는 Rely on math not validators 라는 문장을 보면, ZK 롤업이 무엇을 하는지 느껴볼 수 있습니다. 영지식 롤업에 대해 수학적으로 더 깊게 알고 싶다면, 정현 님의 영지식롤업 글을 참고해주세요.

플라스마: OMG

OMG의 기본 모델은 플라스마 모델입니다. 플라스마 모델은 ZK롤업과 비슷하게 모든 계산은 레이어2에서 진행하지만, 이더리움 메인넷에 기록하는 데이터가 조금 다릅니다. ZK 롤업은 모든 데이터를 이더리움 메인넷에 기록하지만, 플라스마의 경우 저장해야 할 데이터를 트리구조 형태로 만들고, 루트 노드만 이더리움 메인넷에 기록하고 자식 노드 데이터는 모두 플라스마에 기록합니다. 따라서 ZK 롤업보다는 처리할 수 있는 트랜잭션의 양이 더 많지만, 모든 데이터가 이더리움에 저장되는 것이 아니기 때문에 플라스마 체인에 대해 의존성이 발생합니다.

Joel Foster의 Plasma vs Optimistic Rollups 글에서 따온 아래 도표를 보면 플라스마가 처리할 수 있는 트랜잭션의 양이 롤업 모델의 2배 정도 되는 것을 확인할 수 있습니다.

다른 레이어2 솔루션?

비탈릭 부테린이 말한 zksync/loopring/OMG에서 사용한 롤업이나 플라스마 말고도 더 많은 모델이 존재합니다. 상태(State)를 도입해서 특정 상태에서만 오프체인에서 트랜잭션을 만드는 모델인 채널(Channel), ZK 롤업과 거의 동일하지만 모든 데이터를 오프체인에만 저장하는 발리디움(Validium), 메인 체인과 병렬적으로 실행되는 사이드체인(Side chain) 등이 있습니다. 더 관심이 있으면, 이더리움 재단의 layer-2-scaling글을 확인하면 좋습니다.

레이어2의 단점

위에서 언급한 레이어 2 솔루션들의 경우 대부분 EVM을 완전히 지원하지는 않기 때문에, 기존에 개발하던 컨트랙트를 그대로 사용할 수 없다는 단점이 있습니다. (EVM이란 이더리움 가상 머신으로 스마트 컨트랙트를 실행할 수 있는 컴퓨터이며, EVM을 완전히 지원하면 Solidity로 만든 컨트랙트를 실행할 수 있습니다) 그리고 대부분의 솔루션들은 단순 전송까지만 롤업이 가능했고, 조금만 다른 기능을 개발하게 될 경우, 바로 사용할 수 없는 단점이 있었습니다. 따라서 레이어2 솔루션을 적용하기 위해서는 컨트랙트나, 서비스 하는 앱에 수정해야 할 것이 많을 것이라 예상할 수 있었습니다.

가스비를 줄이는 방법 2 : 다른 네트워크 이용하기

방법1의 경우 계산은 오프체인에서 진행하고, 기록은 온체인에 진행해서 이더리움 네트워크를 계속 이용하는 것을 확인할 수 있었습니다. EVM을 완전히 지원한다면, 아예 이더리움 네트워크가 아닌 다른 네트워크를 사용해도 되지 않을까? 라는 고민 끝에 이미 잘 알려진 네트워크들을 검토해보았습니다. 검토기준은 EVM 호환성이 있는지, 가스의 가격은 저렴한지, 트랜잭션 생성 시간은 빠른지, 네트워크에 참여하고 있는 서비스들은 많은지였습니다.

바이낸스 스마트 체인

클레이튼 사이프러스

  • EVM 호환
  • 가스비 무료(한시적 이벤트)
  • 이스탄불 BFT 알고리즘을 이용한 지분증명 (블록생성시간 ~1초)
  • 42개의 디앱(https://www.klaytn.com/partners)

아이콘

  • EVM 호환 X(아직 진행중?), Solidity가 아닌 독자적인 Score(파이썬)사용
  • 가스 비 = 0.0019 ICX * 1 ICX price (2021.04.02 기준 $2.77) = $0.004986
  • 프랙티컬 비잔틴 장애 허용 알고리즘을 이용한 합의 (블록생성시간 ~2초)
  • 20개의 디앱(https://icon.community/dapps/)

가스당 가격을 제공하는 바이낸스 스마트 체인의 경우 가스 가격을 계산했고, 아이콘의 경우 따로 찾을 수 없어 최근 트랜잭션을 조회해서 가스비가 얼마인지 계산했습니다. 가스 가격과 가스비는 다르다는 것을 주의해 주세요. 블록당 생성 시간이 짧고, 각 화폐의 가격이 저렴해서 이더리움보다는 확실히 가스비가 저렴한 것을 알 수 있습니다. 아이콘의 경우 특이하게 솔리디티를 지원하지 않았고 Score라는 독자적인 언어를 지원했습니다. 그리고 대부분의 네트워크는 이더리움의 기본 지분증명 방식인 작업증명을 사용하지 않고 확장성에 용이한 알고리즘을 선택했습니다.

엘리시아 개발팀의 선택은?

여러 기준이 있겠지만, 개발팀의 가장 큰 기준은 가스비용을 절감할 수 있는 동시에, 가장 빨리 개발할 수 있는 게 무엇일까였습니다. 따라서 레이어2 도입보다는 완전히 EVM을 지원하는 네트워크를 선택했고, 그중에서도 바이낸스 스마트 체인을 채택했습니다. 클레이튼의 사이프러스도 충분히 매력적이었지만, 시장성을 보고 바이낸스 스마트 체인을 선택했습니다. 바이낸스 스마트 체인의 경우 가상화폐 시장에서 시가총액 순으로 3등이고, 무엇보다도 다른 네트워크에 비해 많은 디앱이 참여하고 있습니다. 또한 바이낸스 스마트 체인의 바이낸스 팀에서 활발하게 개발하고 있어, 기존에 사용하던 Hardhat과 같은 개발도구를 바로 사용할 수 있다는 장점이 있었습니다.

3월부터 약 한 달 동안 스터디와 개발을 진행해서 마침내 지난달 31일에 앱 업데이트 v1.4.3을 진행하였고, 바이낸스 스마트 체인을 이용한 첫 엘리시아의 Asset Token을 배포할 수 있었습니다. 수수료를 대폭 낮출 수 있었고, 트랜잭션의 속도도 많이 증가시킬 수 있었습니다. 아래의 그림을 보면 네트워크 수수료를 비교할 수 있습니다.

이더리움 메인넷의 Asset Token 구매 수수료 : $45

바이넨스 체인의 Asset Token 구매 수수료 : $0.32

바이낸스 스마트 체인은 장점만 있는 걸까?

수수료도 낮추고, 트랜잭션 속도도 낮출 수 있다면 왜 모든 프로젝트가 바이낸스 스마트 체인을 이용하지 않을까? 라는 생각을 해볼 수 있습니다. 알고리즘에서 자주 등장하는 시간과 공간의 트레이드 오프처럼, 당연히 얻는게 있으면 잃는 것도 있기 때문입니다.

바이낸스 스마트 체인을 사용하면서 잃는 것은 탈중앙성입니다. 바이낸스 스마트 체인은 이더리움에 비해 탈중앙화의 정도가 부족합니다. 이더리움은 노드의 개수가 6000여개이며, 바이낸스 스마트 체인은 바이낸스라는 거래소가 만든 체인이며 21개의 검증노드(Validator)로만 구성되어 있습니다. 노드의 개수가 많을 수록 탈중앙화의 정도가 높다고 볼 수 있는데, 확실히 두 네트워크의 노드수의 차이는 매우 큽니다.

잃어버리는 탈중앙화의 정도를 가늠하긴 어렵지만, 이더리움 메인넷에서 커피 10잔의 수수료를 내야하는 불편함 보다는 얻는게 훨씬 크다고 판단을 했고, 바이낸스 스마트 체인을 이용하게 되었습니다. 또한 이더리움과 거의 완전히 동일한 환경이기 때문에 이더리움 메인넷이 샤딩과 같은 기술을 도입하여 가스비 문제를 해결한다면 네트워크를 쉽게 옮길 수 있는 장점도 있었습니다.

결론

이더리움에서 가스비는 트랜잭션을 실행하는데 필요한 가스의 총 양과 가스의 가격의 곱으로 계산됩니다. 이더리움의 가격이 10배 이상 오르면서 가스비 또한 큰 부담이 되는 문제였습니다. 엘리시아 개발팀은 여러 솔루션들을 검토했고 그 중 바이낸스 스마트 체인을 선택했습니다. 도입 결과 수수료를 $45에서 $0.3으로 크게 낮출 수 있었습니다. 이제는 “커피 한잔으로 건물주가 될 수 있습니다”의 서비스에 한 걸음 가까워졌습니다.

https://elysia.land

--

--