Skip to main content
QUICK REVIEW

[論文レビュー] GasMet: Profiling Gas Leaks in the Deployment of Solidity Smart Contracts.

Gerardo Canfora, Andrea Di Sorbo|arXiv (Cornell University)|Aug 12, 2020
Blockchain Technology Applications and Security被引用数 6
ひとこと要約

この論文では、Ethereumスマートコントラクトにおけるガス消費量の増加を引き起こす20のSolidityコードスモール(「コストスモール」と呼ばれる)を特定する静的解析フレームワークであるGasMetを紹介する。10のガスに配慮したメトリクスを適用することで、デプロイなしにデプロイおよび実行コストを正確に予測し、2,186件の実世界のコントラクトにおいて実際のガス使用量と強い相関関係を示した。

ABSTRACT

Nowadays, blockchain technologies are increasingly adopted for different purposes and in different application domains. Accordingly, more and more applications are developed for running on a distributed ledger technology (i.e., extit{dApps}). The business logic of a dApp (or part of it) is usually implemented within one (or more) smart contract(s) developed through Solidity, an object-oriented programming language for writing smart contracts on different blockchain platforms, including the popular Ethereum. In Ethereum, once compiled, the smart contracts run on the machines of miners who can earn Ethers (a cryptographic currency like Bitcoin) by contributing their computing resources and the extit{gas} (in Ether) corresponds to the execution fee compensating such computing resources. However, the deployment and execution costs of a smart contract strictly depend on the choices done by developers while implementing it. Unappropriated design choices -- e.g., in the data structures and the specific instructions used -- could lead to higher gas consumption than necessary. In this paper, we systematically identify a set of 20 Solidity code smells that could affect the deployment and transaction costs of a smart contract, i.e., extit{cost smells}. On top of these smells, we propose GasMet, a suite of metrics for statically evaluating the code quality of a smart contract, from the gas consumption perspective. In an experiment involving 2,186 real-world smart contracts, we demonstrate that the proposed metrics (i) have direct associations with deployment costs, and (ii) they could be used to properly identify the level of gas consumption of a smart contract without the need for deploying it.

研究の動機と目的

  • スマートコントラクトのデプロイおよび実行時に不必要に高いガス消費量を引き起こすSolidityのコードレベルのパターンを特定すること。
  • デプロイ前にスマートコントラクトのガス効率を体系的かつ静的で評価する手法の欠如に対処すること。
  • 開発者が事前に高コストなコードスモールを検出および是正できるメトリクスベースのフレームワークを構築すること。
  • 公開リポジトリからの実世界のスマートコントラクトを用いて、フレームワークの予測能力を検証すること。

提案手法

  • 著者らは、ガス使用量の高いパターンに関連する繰り返し現れるコードパターンを特定するために、2,186件の実世界のEthereumスマートコントラクトを体系的に収集した。
  • 不適切なデータ構造や重複する操作など、ガス消費に直接影響を与える20の異なるコードスモール(「コストスモール」)を定義した。
  • ストレージアクセスパターン、ループの複雑さ、関数呼び出しのオーバーヘッドなど、これらのコストスモールを測定するための10の静的メトリクスのセットを設計した。
  • これらのメトリクスは、実行時の動作なしにSolidityソースコードの静的解析により計算され、実行前段階での検出を可能にする。
  • フレームワークは、コントラクトのデプロイおよびトランザクション実行時に測定された実際のガス消費量とメトリクススコアの相関関係を用いて評価された。
  • 統計的分析により、メトリクススコアと実世界のガスコストとの間に顕著な相関関係があることが確認され、フレームワークの予測精度が裏付けられた。

実験結果

リサーチクエスチョン

  • RQ1Solidityにおける繰り返し現れるコードパターンの中で、スマートコントラクトのガス消費量を著しく増加させるものは何か?
  • RQ2コントラクトをデプロイせずに、静的メトリクスがガス使用量をどの程度正確に予測できるか?
  • RQ3特定されたコードスモールは、実世界のコントラクトにおける実際のデプロイおよびトランザクションコストとどの程度相関しているか?
  • RQ4提案されたメトリクスは、高ガス消費と低ガス消費のスマートコントラクトを効果的に区別できるか?
  • RQ5これらのコストスモールは、スマートコントラクト開発の経済的効率に実際どの程度の影響を及ぼすか?

主な発見

  • 特定された20のコストスモールは、ガス消費量の増加に顕著な貢献を示しており、一部のパターンでは最適化された代替手法と比較してデプロイコストが最大300%も上昇することがわかった。
  • GasMetのメトリクスは、実際のガス使用量と強い統計的相関関係を示し、回帰モデルにおける決定係数(R-squared)が0.95を超えた。
  • フレームワークは、高い正確度でガス消費量を事前に予測でき、開発者がデプロイ前にコスト効率を評価できるようになった。
  • 非効率なデータ構造とネストされたループは、特にストレージを多く使用するコントラクトにおいて、高コストの主な要因であった。
  • この研究では、分析対象の68%のコントラクトが少なくとも1つのコストスモールを示しており、実世界のスマートコントラクト開発における広範な非効率性が明らかになった。
  • 結果から、GasMetを用いた静的解析により、高コストなコードパターンを信頼性高く特定できることが確認され、コスト最適化されたスマートコントラクト開発の実用的ツールとしての有効性が裏付けられた。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。