JAX-RS (REST API)
This team is looking for
Provenance is information about an entity’s origin. It includes everything from who created it, what information or resources were used for its creation, who is the owner and who are the previous owners – if any. What can we used it for though? Well with all this information we can verify the authenticity of an object – is this the original Mona Lisa? It can also be used ascertain the reliability of an entity – is this data accurate, does it present valid results obtained in a proper manner? And of course we can form an assessment about a product’s quality – does this wine really cost thousands of dollars or was it bought from Tesco? In the context of food and food supply chains provenance can show us the origin and quality of food, whether it’s GMO free or nutritious. Even though such info is so useful, there are a number of problems that come with it: • Availability – it is hard to obtain as people don’t know where to find it, how to access it or if it even exists • Storage - where provenance data does exist it is difficult to preserve and distribute as there is very limited technological support for this • Security - There are no guarantees about the authenticity of provenance data and in the case where fraudulent data would benefit someone it is an obvious target for mischievous actions. • Chain – very important for participants in the supply chain to be able to refer to previous documents – where they got the product from The problem this project addresses is the inability to create, securely store and verify a chain of provenance for food products. The solution to securing provenance data is the Blockchain and most importantly some of the features it provides: • Integrity – once a piece of information is stored in the Blockchain it does not change • Consistency – even though it is distributed all the users of the Blockchain have access to the exact same data • High cost of rewriting transaction history – mining a new block requires a proof-of-work which is computationally heavy. Therefore, re-mining a large number of blocks is difficult. The system that was built is SPROV, which stands for Secure PROV, and provides a RESTful API exposed through a web service. The API uses ProvStore to store the actual PROV documents and Ethereum’s Blockchain to store their checksums. It also provides a View API which server web pages for use in the browser which can be used to access the functionality provided by the SPROV API. So what are the benefits of the system? • It provides security – a document’s content and ownership can be validated at any time using the stored checksum. • Documents can be chained together to form a chain of provenance which provides an easy way for users to reference other documents thus allowing us to follow the full history of an entity. • Since it provides a RESTful API the system is easy to integrate no matter the OS, hardware or the language they are written in.