가스 비용을 75% 최적화한 방법

이더리움 블록체인에서 각 거래는 "가스 수수료"로 일정 금액의 비용이 듭니다. 개발자로서 우리의 목표는 거래 비용을 가능한 한 낮게 유지하는 것입니다.

이 기사에서는 가스 비용을 보고하도록 안전모를 구성하는 방법과 가스 비용을 줄이기 위해 Solidity의 내장 최적화 프로그램을 구성하는 방법에 대해 설명합니다.

곧 출간될 저서 "NFT 컬렉션 출시를 위한 개발자 가이드"에서 샘플 NFT 프로젝트를 최적화할 예정입니다.

가스 리포터



옵티마이저를 켜기 전에 비교할 벤치마크를 제공하기 위해 현재 가스 비용을 측정하는 것부터 시작하겠습니다. 먼저 hardhat-gas-reporter 플러그인을 설치하고 구성해야 합니다.

hardhat-gas-reporter 플러그인은 hardhat의 npx hardhat 테스트 명령을 무시하고 테스트 내에서 호출되는 모든 기능의 평균 가스 가격을 추적합니다.

짐작하셨겠지만 가스 리포터를 사용하려면 프로젝트에 대한 자동 테스트가 필요합니다!
npm install hardhat-gas-reporter를 실행하여 플러그인을 설치합니다.

안전모 구성 파일에서 require("hardhat-gas-reporter")를 추가하여 파일 상단에 있는 플러그인을 가져옵니다.

해당 파일에서 내보낸 설정에 다음 블록을 추가합니다.

gasReporter: {
  outputFile: "gas-report.txt",
  enabled: process.env.REPORT_GAS !== undefined,
  currency: "USD",
  noColors: true,
  coinmarketcap: process.env.COIN_MARKETCAP_API_KEY || "",
  token: "ETH"
}


가스 보고자가 각 거래의 금전적 비용을 제공하려면 웹사이트에서 무료로 얻을 수 있는 CoinMarketCap API 키가 필요합니다.

계속해서 .env 파일에 다음 행을 추가하십시오.

REPORT_GAS=true
COIN_MARKETCAP_API_KEY=[YOUR-API-KEY]


npx hardhat 테스트를 통해 테스트를 다시 실행해 보겠습니다. 가스 리포터 플러그인은 모든 함수 호출에 사용된 가스를 인계받아 기록하고 그 결과를 gas-report-txt 파일에 출력합니다.



이 보고서는 프로덕션에 계약을 배포하는 데 드는 비용과 배포 후 각 트랜잭션의 비용을 추정하는 데 정말 유용합니다.

또한 가스 최적화 노력을 측정하는 데 사용할 수 있는 벤치마크를 제공합니다!

견고성 옵티마이저


hardhat.config.js에서 안전모 구성의 solidity 라인을 조정하여 코드를 최적화하도록 solidity 컴파일러를 구성해 보겠습니다.

solidity: {
    version: "0.8.9",
    settings: {
        optimizer: {
            // Toggles whether the optimizer is on or off. 
            // It's good to keep it off for development 
            // and turn on for when getting ready to launch.
            enabled: true,
            // The number of runs specifies roughly how often 
            // the deployed code will be executed across the 
            // life-time of the contract.
            runs: 300,
        }
    },
}


옵티마이저를 켜는 것 외에 우리가 가진 유일한 구성 옵션은 실행 매개변수입니다.

견고성 문서에서:

The number of runs specifies roughly how often each opcode of the deployed code will be executed across the life-time of the contract. This means it is a trade-off parameter between code size (deploy cost) and code execution cost (cost after deployment).



200회 또는 300회의 실행이 합리적인 기본값이지만 배포 및 트랜잭션 비용에 미치는 영향을 확인하기 위해 다양한 값을 실험하고 프로젝트에 가장 적합한 값을 선택하는 것이 좋습니다.

여기 다시 동일한 보고서가 있지만 옵티마이저가 켜져 있습니다. 가스 가격의 감소를 확인하십시오.



무엇 향후 계획?



더 많은 블록체인 관련 팁과 요령, 그리고 곧 출간될 저의 책 출시에 대한 정보를 얻기 위해: "NFT 컬렉션 출시를 위한 개발자 가이드".

좋은 웹페이지 즐겨찾기