Decentralized Online Market Prototype.
DCart is a proof of concept for decentralized market, which removes middlewares, authorities and ofcourse scope of curroption. DCart enables buying and selling of product with bare minimum computations and hence lower gas ⛽. Uses IPFS for storing images.
In Web2 based online stores, we have lots of extra charges, plus incentive to buyers and charges for hosting middleware were to be paid by users. Plus, since we are not taking any data, all your purchase history will be yours only. You can always interact with store
Main Page | Adding Store |
---|---|
Store Added | Store Page |
---|---|
Add Item Form | Item Added |
---|---|
Buying from another account | Store after transactions |
---|---|
Development Setup:
(Last 4 things matter, rest is show off)
-` jiren@namek
.o+` -----------
`ooo/ OS: Arch Linux x86_64
`+oooo: Host: X556UF 1.0
`+oooooo: Kernel: 4.20.3-arch1-1-ARCH
-+oooooo+: Uptime: 8 hours, 24 mins
`/:-:++oooo+: Packages: 1220 (pacman), 2 (dpkg)
`/++++/+++++++: Shell: zsh 5.6.2
`/++++++++++++++: Resolution: 1920x1080
`/+++ooooooooooooo/` DE: GNOME 3.30.2
./ooosssso++osssssso+` WM: GNOME Shell
.oossssso-````/ossssss+` WM Theme: Arc-Dark
-osssssso. :ssssssso. Theme: Arc-Dark [GTK2/3]
:osssssss/ osssso+++. Icons: Papirus-Dark [GTK2/3]
/ossssssss/ +ssssooo/- Terminal: gnome-terminal
`/ossssso+/:- -:/+osssso+- CPU: Intel i5-6200U (4) @ 2.800GHz
`+sso+:-` `.-/+oso: GPU: NVIDIA GeForce 930M
`++:. `-/+/ GPU: Intel Skylake GT2 [HD Graphics 520]
.` `/ Memory: 5914MiB / 11869MiB
NodeJS: v8.15.0
npm: v6.7.0
Truffle: v5.0.2
Ganache CLI: v6.2.5
IPFS API: v26.1.2
- Clone the project locally
git clone https://github.com/dev-bootcamp-2019/final-project-aashutoshrathi.git
cd final-project-aashutoshrathi
- Start local development blockchain and copy the mnemonic to be used later
ganache-cli
- Compile contracts and migrate them to the blockchain
npm i
truffle compile
truffle migrate
Frontend is React with Web3 with the help of Truffle boxes.
cd client
npm i
npm run start
truffle test
- Project includes a README.md that explains the project.
- The project is a Truffle project that allows you to easily compile, migrate and test the provided Solidity contracts.
- Project is commented as outline in the documentation.
- At least one contract uses a library or inherits from another contract - Actually 3.
- I can run the app on a dev server locally for testing/grading (connecting to Rinkeby if required).
- I can visit a URL and interact with the app (can be localhost).
- The app displays the current ethereum account.
- I can sign transactions using Metamask (or uPort).
- The app interface reflects updates to to the contract state.
- 7 tests written in Javascript or Solidity (or both).
- Tests are explained with brief code comments.
- Tests are properly structured.
- All tests pass 🎉.
- At least one of the contracts implements a circuit breaker / emergency stop pattern.
- Project includes a file called design_pattern_desicions.md that explains some of the design decisions made by the author.
- design_pattern_desicions.md adequately describes the design patterns implemented in the project.
- Project includes a file called avoiding_common_attacks.md that explains what measures you took to ensure that your contracts are not susceptible to common attacks.
- The avoiding_common_attacks.md covers at least 3 common attacks and how the app mitigates user risk.
- Project includes a file called deployed_addresses.txt that describes where the deployed testnet contracts live (which testnet and address).
- Project uses IPFS to store images for items on sale.
- The project uses and upgradable design pattern for the smart contracts.
- At least one contract is written in Vyper or LLL.
- The app uses uPort for user authentication and/or signing and sending transactions.
- The app uses the Ethereum Name Service to resolve human readable names to Ethereum addresses (in progress).
- The project uses an Oracle service such as Oraclize.
- Add 404 for trash URLs.
- Add Admin Dashboard.
- Add GUI for Freezing Market.
- Add Edit Item option.
- Make My Orders more detailed.
- Store more stuff on IPFS API by Infura.
Freepik from www.flaticon.com is licensed by CC 3.0 BY
Moksha Kudos taken from Gitcoin Kudos
Made with ❤️ by Aashutosh Rathi