  Blockchain technologies, such as smart contracts, present a unique interface
for machine-to-machine communication that provides a secure, append-only record
that can be shared without trust and without a central administrator. We study
the possibilities and limitations of using smart contracts for
machine-to-machine communication by designing, implementing, and evaluating
AGasP, an application for automated gasoline purchases. We find that using
smart contracts allows us to directly address the challenges of transparency,
longevity, and trust in IoT applications. However, real-world applications
using smart contracts must address their important trade-offs, such as
performance, privacy, and the challenge of ensuring they are written correctly.
