Coffee Supply chain & data auditing DApp.
This repository containts an Ethereum DApp that demonstrates a Supply Chain flow between a Seller and Buyer. The user story is similar to any commonly used supply chain process. A Seller can add items to the inventory system stored in the blockchain. A Buyer can purchase such items from the inventory system. Additionally a Seller can mark an item as Shipped, and similarly a Buyer can mark an item as Received.
The DApp User Interface when running should look like...
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
Please make sure you've already installed ganache-cli, Truffle and enabled MetaMask extension in your browser.
A step by step series of examples that tell you have to get a development env running
Clone this repository:
git clone https://github.com/andrescabsi14/colcoffee.git
Install all requisite npm packages (as listed in package.json
):
npm install
Launch contracts server:
npm run start
Launch client app:
cd cient && npm start
Your terminal should look something like this:
In a separate terminal window, Compile smart contracts:
npm run contracts:compile
Your terminal should look something like this:
This will create the smart contract artifacts in folder build\contracts
.
Migrate smart contracts to the locally running blockchain, ganache-cli:
npm run contracts:migrate
Your terminal should look something like this:
Test smart contracts:
npm run test
All 10 tests should pass.
In a separate terminal window, launch the DApp:
npm start
- Ethereum - Ethereum is a decentralized platform that runs smart contracts
- Truffle - Truffle is the most popular development framework for Ethereum with a mission to make your life a whole lot easier.
- Ganache
- React: Handle the UI
- dotenv: Store as environmental variables details to deploy at .env file.
- Scale: 1000 users actives on the network at a time.
- Trust: Participate without knowing all about each other.
- Ammount of data per TX:
- TX Throughput: # of TX/time
- Create and modify data
- Query data
- Arbitrator needed? Yes
- Who validates transactions? All participant involved
- Immutability of the records No need to ammend or cancel transactions
- Storage transactional data: Ethereum Rinkeby testnet
Contract: 0xECb80b2a02886D89A5236c449e3146693bECc50B
SupplyChain: 0x216bb528a956a5432570093fb9353bde24cf015f
FarmerRole: 0x6a045066b2fdba2e7661ccad60216db98c2d5dac
DistributorRole: 0xe1e4a87698ece438bbdf2b6d88ff14e21f6b22cf
RetailerRole: 0xdcbb907ccfe7edc104d070ef900ca6b581561371
ConsumerRole: 0x3bf9a1e925cc827ae21f8262f17f0dc911242a60
Deploy Tx: 0xf1f734509e49e660db72c7a275e4c27ce628e84dfabf8f426fe77a633025003e
- Truffle: v4.1.15 (core: 4.1.15)
- Solidity: v0.4.25 (solc-js)
- NodeJS: v10.13.0
- Web3.js: v1.2.5
- Solidity
- Ganache-cli
- Truffle