by Steven Huckle - [email protected]
Source: Bitnation
- Your peers
- Introduction to Provenator
- The dApp development ecosystem
- The constituent parts of a dApp
- Deploying the dApp
- Future work (on Provenator)
Source: Forbes
- 25+ years in IT
- Trainee Cobol Programmer
- BSc Computer Science
- Unix Sys' Admin'
- Reuters
- Credit Suisse
- MSc Music Technology
- Audio Programmer in Games
- Sony
- Zoe Mode (here in Brighton)
- MSc Energy and the Environment
- Bitcoin Mining
- PhD in Blockchain Technologies
- Fake News - a Technological Approach to Proving Provenance Using Blockchains
- Towards a post-cash society: An application to convert fiat money into a cryptocurrency
- Socialism and the Blockchain
- Internet of Things, Blockchain and Shared Economy Applications
The Value of Bitcoin:
Blockchain technology's value lies elsewhere from (Bitcoin's) price. Instead, it lies in the technology's flat, open, P2P topology and its demonstration of the digital commons, which creates socially egalitarian goods and services.
Source: Open Clipart
Source: Open Clipart
Provenator is the result of an academic paper that was published recently in a Special Issue of a Mary-Ann Liebert journal, Big Data: Fake News - a Technological Approach to Proving Provenance Using Blockchains.
- Blockchains are, essentially, an immutable database technology with inbuilt trust mechanisms
- That database is comprised of a ledger, in the form of a chain of transactions
- Included are cryptographic algorithms and digital signatures that allow secure electronic collaboration, without requiring any centralised authority
- In other words, no single entity is in control
- Some blockchains, such as Ethereum, have the ability to execute smart contracts, or application code. Think of them as stored procedures with row-level security
PREMIS is a provenance schema which helps identify a resource. Provenator uses PREMIS metadata definitions to record the ownership of digital media items on the (Ethereum) blockchain, using (Solidity) smart contracts.
Source: The PREMIS Data Dictionary Version 3.0
Source: Wikimedia Commons
Source: Berkeley Lab
You are using GitHub, aren't you?
- Fork Provenator
- Clone fork to local machine
- Check out master branch
- Create topic branch
- Write patches
- Stage and Commit patches
- Push the new branch back up to the GitHub fork
- Send a Pull Request
- StackExchange
- Gitter
- Forums etc.
Source: comic.browserling.com
- Blockchain backend smart contracts, built using Solidity
- A Javascript frontend, built using React
- The glue that fits the both together - the Ethereum JavaScript API, web3.js
- Smart contracts, built using Solidity
- A Javascript frontend, built using React
- The Ethereum JavaScript API, web3.js
- The contract address
- The contract ABI
Asynchronous transactions. When you call a smart contract's method, you create a blockchain transaction, and the return value will be a transaction hash, not the result from the method. That's because the method's result is only returned after the transaction has been mined. Hence, you need to poll for the result, using an async/await pattern.
When running the dApp, MetaMask stitches together the javascript frontend and the blockchain backend. It also manages your wallet, and signs the transactions created: Using MetaMask.
Source: abidibo.net
Run and test the dApp locally, before deploying to a public blockchain.
Download and install the dependencies (if you have not already done so):
Run a local Ethereum blockchain via Ganache:
- Change to the Ganache repository's home directory
- Run
npm install
- Run
npm start
- Ensure Ganache is running on http://localhost:8545 (you may need to change its settings)
Install the Provenator repository's dependencies:
- Change to the Provenator repository's home directory
- Run
npm install
Use Truffle to publish the contracts to Ganache, your local blockchain instance:
- Change to the Provenator smart contracts directory blockchain/contracts
- Run
truffle migrate
- Edit the Provenator 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'
Now create the web application:
- In the Provenator repository's home directory, build the React frontend by typing
npm run watch
- Copy some needed resources to the build directory by typing
npm run copy
- Start an instance of http-server by typing
npm run start
- Load a MetaMask enabled browser
- Point MetaMask at your local running instance of the blockchain (http://localhost:8545)
- Import a wallet from Ganache
- In the browser, go to the URL http://localhost:8081
- Create a digital media resource and subsequently, get details about that resource
Use the geth client to instantiate the test Ethereum network, Rinkeby :
geth --testnet
Use Truffle to publish the contracts to Rinkeby:
- Change to the Provenator smart contracts' directory blockchain/contracts
- Run
truffle migrate
.
- Edit the Provenator 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'
Now create the web application:
- In the Provenator repository's home directory, build the React frontend by typing
npm run watch
- Copy some needed resources to the build directory by typing
npm run copy
## Deploy the Frontend to IPFS
- Fire up a MetaMask enabled browser
- Point MetaMask at Rinkeby
- Use the rinkeby faucet to fund your wallet
- In the browser, go to the dApp URL the address here
- Create a digital media resource and subsequently, get details about that resource
Source: Open Clipart
Looking at acquiring funding for a research project based on the ideas presented in Fake News - a Technological Approach to Proving Provenance Using Blockchains and Provenator.
How do you think Provenator can be improved?
Source: Open Clipart
- Provenator
- The dApp development ecosystem
- The constituent parts of a dApp
- Deploying the dApp
- Future work (on Provenator)
Provenator is an open source, free software project on GitHub...
Additionally, this presentation is now public, and available on GitHub.
Steven Huckle - [email protected]
Source: BBC Sport