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.
Below describes a demo' of Provenator.
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.
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
Here's a screenshot of a very early prototype of Provenator:
The picture above shows that to describe a digital resource, users of Provenator do the following:
- Get a hash of the digital media.
- Create and submit metadata pertaining to the digital resource.
- Sign the transactions created, using MetaMask.
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.
- Clone this repository to your local machine
- 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):
- Clone the Ganache repository
- Change to the home directory of the Ganache repository
- Install the dependencies for Ganache by running
npm install
- Start Ganache by typing
npm start
. - Ensure Ganache is running on http://localhost:8545 (you may need to change its settings to do so).
- Change to the directory blockchain/contracts, and type
truffle migrate --network development
.
Create the web application:
- Edit the source file app/utils/contractHandler.jsx so that the four static variables
premisObjectContractAddress
,premisEventContractAddress
,premisAgentContractAddress
andpremisRightsContractAddress
contain the addresses generated bytruffle migrate
, above. e.g:
static premisObjectContractAddress = '0xb9bfd8ff77db391a28a45b6c1cb72b0028695219'
static premisEventContractAddress = '0x12dba0b95a32239a5ba3e6bf7d05471d18f30d1f'
static premisAgentContractAddress = '0xc3a182dd01e3d9ffdbe95ce568b9c8d936e2ca9d'
static premisRightsContractAddress = '0xec6a5f11e7865aadc61f27faf8707795c1cda868'
- Change to the repository's home directory.
- Build the React frontend by typing
npm run dev
. - Startup an instance of http-server by typing
npm run start
.
Now load the app' into a MetaMask enabled browser:
- Ensure MetaMask is using Localhost 8545
- 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
- Disable any add blocker software in your MetaMask enabled browser
- Run Provenator by loading the address http://localhost:8081
- Use the links within the app' to create a digital media resource and subsequently, get details about that resource
You must have the following dependencies installed:
Contributions welcome - please email Steve Huckle.
GNU General Public License v3.0
See COPYING to see the full text.