  We present the main concepts, components, and usage of GASOL, a Gas AnalysiS
and Optimization tooL for Ethereum smart contracts. GASOL offers a wide variety
of cost models that allow inferring the gas consumption associated to selected
types of EVM instructions and/or inferring the number of times that such types
of bytecode instructions are executed. Among others, we have cost models to
measure only storage opcodes, to measure a selected family of gas-consumption
opcodes following the Ethereum's classification, to estimate the cost of a
selected program line, etc. After choosing the desired cost model and the
function of interest, GASOL returns to the user an upper bound of the cost for
this function. As the gas consumption is often dominated by the instructions
that access the storage, GASOL uses the gas analysis to detect under-optimized
storage patterns, and includes an (optional) automatic optimization of the
selected function. Our tool can be used within an Eclipse plugin for Solidity
which displays the gas and instructions bounds and, when applicable, the
gas-optimized Solidity function.
