  Smart contracts are full-fledged programs that run on blockchains (e.g.,
Ethereum, one of the most popular blockchains). In Ethereum, gas (in Ether, a
cryptographic currency like Bitcoin) is the execution fee compensating the
computing resources of miners for running smart contracts. However, we find
that under-optimized smart contracts cost more gas than necessary, and
therefore the creators or users will be overcharged. In this work, we conduct
the first investigation on Solidity, the recommended compiler, and reveal that
it fails to optimize gas-costly programming patterns. In particular, we
identify 7 gas-costly patterns and group them to 2 categories. Then, we propose
and develop GASPER, a new tool for automatically locating gas-costly patterns
by analyzing smart contracts' bytecodes. The preliminary results on discovering
3 representative patterns from 4,240 real smart contracts show that 93.5%,
90.1% and 80% contracts suffer from these 3 patterns, respectively.
