Logo
Search|
Published on

[Part 2] Blockchain development in JavaScript as Gas Fees

Authors
  • avatar
    Name
    Easyoon
    Twitter

예상 외의 관심과 피드백에 이어서 써보는 자바스크립트의 블록체인 개발 - 2부: 가스비

커뮤니티에 올렸던 ethers.js와 web3.js의 비교 글이 예상외로 덧글이 많이 달려서 놀랐고 감사했습니다. 사실 자바스크립트로 블록체인 개발을 할 수 있는 라이브러리에 대한 글을 쓴 것은 처음이었습니다. 이번에는 부정적인 피드백을 받았던 부분에 대해서 좀 더 알아보고자 합니다.

comment-1comment-2

가스비 측면에서의 ethers.js와 web3.js 비교

ethers.js와 web3.js 자체의 사용이 트랜잭션의 가스비에 직접적인 영향을 미치는 것은 아니었습니다. 가스비는 트랜잭션을 실행하는 데 필요한 컴퓨팅 리소스의 양에 따라 결정되며, 이는 주로 스마트 컨트랙트의 코드 복잡성, 데이터 저장량, 네트워크 혼잡도 등에 의해 결정됩니다.

하지만, ethers.js와 web3.js는 트랜잭션을 구성하고 네트워크에 전송하는 방식에서 약간의 차이가 있으며, 아래와 같은 이유에서 간접적으로 가스비에 영향을 줄 수 있었습니다.

  • 추상화 수준: ethers.js는 web3.js보다 더 높은 수준의 추상화를 제공합니다. 즉, 개발자가 더 간결하고 직관적인 코드로 트랜잭션을 처리할 수 있도록 도와줍니다. 이러한 추상화는 개발 편의성을 높이는 장점이 있지만, 때로는 내부적으로 더 많은 연산을 수행하게 되어 약간의 가스 소모를 증가시킬 수 있습니다. 반면, web3.js는 더 낮은 수준의 API를 제공하여 개발자가 트랜잭션을 더 세밀하게 제어할 수 있도록 하지만, 코드 작성이 더 복잡해질 수 있습니다.

  • 기본 가스 추정 방식: ethers.js는 트랜잭션 전송 시 자동으로 가스 리밋(gas limit)과 가스 가격(gas price)을 추정하는 기능을 제공합니다. 이 자동 추정 기능은 편리하지만, 때로는 실제 필요한 가스보다 더 높은 값을 추정하여 약간의 가스 낭비를 초래할 수 있습니다. web3.js는 기본적으로 자동 가스 추정을 제공하지 않으므로(etherscan과 같은 외부 라이브러리를 사용) 개발자가 직접 가스 리밋과 가스 가격을 설정해야 합니다. 따라서 개발자가 가스 사용량을 정확하게 이해하고 최적의 값을 설정할 수 있다면, web3.js를 사용하는 것이 가스비를 약간 절약할 수도 있습니다. 하지만 잘못된 값을 설정하면 트랜잭션이 실패할 수 있다는 위험이 있습니다.

이더리움 가스비 문제와 대안

블록체인 트랜잭션에는 기본적으로 컴퓨팅 자원이 소모되기 때문에 가스비가 발생합니다. 특히 이더리움 네트워크는 범용적인 퍼블릭 네트워크이지만, 높은 가스비가 문제점으로 지적되고 있습니다. web3.js와 ethers.js는 이더리움 네트워크와 상호 작용하기 위한 자바스크립트 라이브러리입니다.

그렇다면 높은 가스비 문제에 대한 대안은 무엇일까요?

1. 다른 블록체인 네트워크 활용 (레이어 1)

ethers.js와 web3.js는 기본적으로 이더리움 네트워크와 호환되지만, 이더리움 가상 머신(EVM)과 호환되는 다른 네트워크에서도 사용할 수 있습니다. 따라서 가스비가 낮은 레이어 1 블록체인을 사용하면 가스비 부담을 줄일 수 있습니다.

다른 네트워크 예시:

  • 바이낸스 스마트 체인 (BSC)
  • 폴리곤 (Polygon - Matic)
  • 클레이튼 (Klaytn)
  • 솔라나 (Solana)
  • 아발란체 (Avalanche)
  • 니어 프로토콜 (NEAR Protocol)
  • 코스모스 (Cosmos)

레이어 1 블록체인 네트워크는 이더리움에 비해 낮은 수수료를 제공하며, ethers.js나 web3.js를 사용하여 이들과 상호 작용할 수 있습니다. 하지만 각 네트워크의 생태계, 보안 수준, 개발 도구 등을 고려하여 적절한 네트워크를 선택해야 합니다.

2. 다른 프로그래밍 언어 및 오프체인 연산 활용

다른 프로그래밍 언어를 사용하여 효율적으로 개발하면 가스비를 간접적으로 줄일 수도 있습니다. 특히 Go와 같은 언어를 사용하여 오프체인 연산을 구현하는 것이 효과적인 방법 중 하나입니다.

오프체인 연산이란?

오프체인 연산은 블록체인 외부에서 데이터를 처리하고 계산하는 방식입니다. 복잡한 계산이나 데이터 처리를 블록체인 외부에서 수행하고, 결과값만 블록체인에 기록함으로써 블록체인에 저장하거나 실행해야 하는 데이터와 연산의 양을 줄여 가스비를 절약할 수 있습니다.

예시

  • 복잡한 알고리즘 계산: 블록체인 외부에서 복잡한 계산을 수행하고, 결과값(예: 계산 결과의 해시값)만 블록체인에 기록합니다.
  • 대량 데이터 처리: 대량의 데이터를 블록체인 외부에 저장하고, 필요한 데이터의 식별자 또는 요약 정보만 블록체인에 기록합니다.

결론

이더리움의 높은 가스비 문제를 해결하기 위해 다른 블록체인 네트워크를 사용하거나, 다른 프로그래밍 언어를 활용한 오프체인 연산을 고려해볼 수 있습니다. 각 방법은 장단점을 가지고 있으므로, 프로젝트의 특성과 요구 사항에 맞춰 적절한 방법을 선택하는 것을 추천합니다.