  Growing consumer awareness as well as manufacturers' internal quality
requirements lead to novel demands on supply chain traceability. Existing
centralized solutions suffer from isolated data storage and lacking trust when
multiple parties are involved. Decentralized blockchain-based approaches
attempt to overcome these shortcomings by creating digital representations of
physical goods to facilitate tracking across multiple entities. However, they
currently do not capture the transformation of goods in manufacturing
processes. Therefore, the relation between ingredients and product is lost,
limiting the ability to trace a product's provenance. We propose a
blockchain-based supply chain traceability system using smart contracts. In
such contracts, manufacturers define the composition of products in the form of
recipes. Each ingredient of the recipe is a non-fungible token that corresponds
to a batch of physical goods. When the recipe is applied, its ingredients are
consumed and a new token is produced. This mechanism preserves the traceability
of product transformations. The system is implemented for the Ethereum Virtual
Machine and is applicable to any blockchain configuration that supports it. Our
evaluation reveals that the gas costs scale linearly with the number of
products considered in the system. This leads to the conclusion that the
solution can handle complex use cases.
