  Blockchain received a vast amount of attention in recent years and is still
growing. The second generation of blockchain, such as Ethereum, allows
execution of almost any program in Ethereum Virtual Machine (EVM), making it a
global protocol for distributed applications. The code deployment and each
operation performed in EVM cost the network fee called gas, which price varies
and can be significant. That is why code optimization and well-chosen
algorithms are crucial in programming on the blockchain. This paper evaluates
the gas usage of several exact pattern matching algorithms on the Ethereum
Virtual Machine. We also propose an efficient implementation of the algorithms
in the Solidity/YUL language. We evaluate the gas fees of all the algorithms
for different parameters (such as pattern length, alphabet size, and text
size). We show a significant gas fee and execution time reduction with up to
22-fold lower gas usage and 55-fold speed-up comparing to StringUtils (a
popular Solidity string library).
