Любой, кто хочет вызвать функцию смарт-контракта, обязан приложить к вызову немного денежек (Газа). Обычно эта сумма минимальна.
Каждая строчка кода тратит прикрепленный к транзакции Газ. Если он внезапно кончается — исполнение прекращается и транзакция аннулируется. Если код успешно выполнился, но Газ еще остался, он возвращается отправителю как лишний. Всё честно.