Skip to content

This is a prototype application for proving the origins of captured digital media.

Notifications You must be signed in to change notification settings

glowkeeper/Provenator

Repository files navigation

Provenator

standard-readme compliant Travis build PRs Welcome License: GPL v3

This is the repository for Provenator, a prototype distributed application for proving the origins of captured digital media. It uses cryptographic tools and blockchain technology; by using the trust mechanisms of blockchains, the application aims to show, beyond doubt, the provenance of any source of digital media.

Provenator is the result of the academic paper called, Fake News - a Technological Approach to Proving Provenance Using Blockchains, by Steve Huckle and Martin White, of the University of Sussex Informatics Department, which was published in a special issue on Computational Propaganda and Political Big Data for Mary Anne Liebert's Big Data Journal. It currently is part of a suite of blockchain-based software that form Steve Huckle's PhD at the University of Sussex.

Table of Contents

Usage

Below describes a demo' of Provenator.

Demo

Before you can see the demo, you must install the demo dependencies.

Provenator runs on dat:// and Ethereum's rinkeby test network. Both dat:// and rinkeby are distributed, peer-to-peer technologies, so by utilising them, Provenator is itself wholly distributed. The demo is available at http://31ce36ba92b26fa274537c5a63a6b895bdaddb6621a675ec616dbc17c01e5ee9.

Demo Dependencies

To use Provenator, you will need to be running Firefox with the Dat P2P Protocol and MetaMask extensions installed. MetaMask should be pointing at the Rinkeby Test Network, and you will need a few test Ether in your MetaMask wallet - you can get those from the Rinkeby Faucet.

Provenator is alpha release software, so please be patient! That said, if you are having problems with the demo, please open an issue or email s dot huckle at sussex dot ac dot uk

Demo Screenshot

Here's a screenshot of a very early prototype of Provenator:

Provenator Screen Grab

The picture above shows that to describe a digital resource, users of Provenator do the following:

  1. Get a hash of the digital media.
  2. Create and submit metadata pertaining to the digital resource.
  3. Sign the transactions created, using MetaMask.

Built Using

Install

The instruction below enable you to run Provenator on a local, private, Ethereum test network (via Ganache). Before following the instructions below, please install the dependencies.

  1. Clone this repository to your local machine
  2. In the repository's home directory, type npm install. That will install everything listed in package.json, which are the components of the React frontend to this application

Publish the contracts to your local blockchain (via Ganache):

  1. Clone the Ganache repository
  2. Change to the home directory of the Ganache repository
  3. Install the dependencies for Ganache by running npm install
  4. Start Ganache by typing npm start.
  5. Ensure Ganache is running on http://localhost:8545 (you may need to change its settings to do so).
  6. Change to the directory blockchain/contracts, and type truffle migrate --network development.

Create the web application:

  1. Edit the source file app/utils/contractHandler.jsx so that the four static variables premisObjectContractAddress, premisEventContractAddress, premisAgentContractAddress and premisRightsContractAddress contain the addresses generated by truffle migrate, above. e.g:
static premisObjectContractAddress = '0xb9bfd8ff77db391a28a45b6c1cb72b0028695219'
static premisEventContractAddress = '0x12dba0b95a32239a5ba3e6bf7d05471d18f30d1f'
static premisAgentContractAddress = '0xc3a182dd01e3d9ffdbe95ce568b9c8d936e2ca9d'
static premisRightsContractAddress = '0xec6a5f11e7865aadc61f27faf8707795c1cda868'
  1. Change to the repository's home directory.
  2. Build the React frontend by typing npm run dev.
  3. Startup an instance of http-server by typing npm run start.

Now load the app' into a MetaMask enabled browser:

  1. Ensure MetaMask is using Localhost 8545
  2. Copy the key of a Ganache account, and import that into MetaMask. That ensures we have some test Ether to submit transactions to the blockchain
  3. Disable any add blocker software in your MetaMask enabled browser
  4. Run Provenator by loading the address http://localhost:8081
  5. Use the links within the app' to create a digital media resource and subsequently, get details about that resource

Dependencies

You must have the following dependencies installed:

Maintainer

Steve Huckle.

Contributing

Contributions welcome - please email Steve Huckle.

License

GNU General Public License v3.0

See COPYING to see the full text.