Team name: CryptoCrop
Theme: Agriculture, AI, Cryptocurrency
- Veer Gadodia (Team leader) - github: vgadodia
- Muntaser Syed - github: jemsbhai
- Ebtesam Haque - github: ebtesam25
- Nand Vinchhi - github: NandVinchhi
52.5 percent of all the agricultural households were indebted with an average debt of Rs. 1,07,671. 12,360 farmers took their own lives in the year 2014 alone. Over 70% of these deaths were due to crash in crop prices and inability to pay back debts.
The fact of the matter is, falling crop prices and crop failure due to weather causes tremendous losses to farmers, leading them into grave debt. Farmers in debt cannot take more loans. Sadly, these losses endured by farmers often give rise to psychological disorders, mental illnesses, depression, and suicide, with farmer suicides accounting for 11.2% of all suicides in India.
Furthermore, the current Minimum Support Price system effectuated by the government of India is not sufficient to cover the losses and solve the problem. Take wheat, one of the two most grown crops in India. In 2018-2019, just 12% of the 33.6 million farmers who were growing wheat availed of the government’s MSP. The rest were sold in “mandis”, whose access was usually controlled by middlemen and where market prices are often below government MSPs.
What it does
CryptoCrop is a mobile app, targeted towards farmers in India, for optimising agricultural finances and farming practices. The app uses machine learning to predict crop prices for various different crops – wheat, rice, tomato, urad dal, masoor dal, moong dal, potato and onion – 6 months into the future, factoring in rain and weather conditions, as well as MSP trends into the algorithm. This feature helps farmers decide which crops to grow and how much of the crop to grow during a certain time period.
Furthermore, our app enables farmers to invest in or sell agricultural commodities using cryptocurrency, based on our crop price prediction mechanism. For example, if the prices of wheat are predicted to be high during the next harvest, the farmers can buy stocks in wheat crops, and reap the profits during the successful harvest. Similarly, if the prices are predicted to drop, the farmers can sell their current harvest in exchange for cryptocurrency, which they can convert to rupees. We have implemented different ERC20 tokens (aka coins) for each type of crop. Thus we have ricecoin, wheatcoin, onioncoin, potatocoin, tomatocoin and dalcoin. Each of these tokens are tied to the value of the crop indicated respectively. Our interface allows farmers to trade these tokens at a microtransaction level, with each token having divisibility of upto 18 decimal places. This helps farmers invest in crops that are promising to succeed, and allows them to stay financially secure and happy!
The advantages of using cryptocurrency over regular money for this purpose are as follows:
- Gives the farmer ability to do microtransactions.
- Does not depend on the nation’s economy.
- Eliminates Middlemen from the transaction.
- Makes the transactions more transparent, and beneficial for the farmer.
- Forms a direct link between the investor and the seller.
How We built it
- React Native for mobile app.
- Government of India crop wholesale price dataset, along with historical weather dataset for training the model
- Python Scikit Learn Random Forest Regressor for ML model .(99.76% accuracy score on training data)
- Visual crossing weather API for realtime weather data for predictions.
- Flask for back-end endpoints.
- Sashido and DigitalOcean for serverless hosting
- MongoDB Atlas for user data and login/registration systems.
- Bcrypt for password encryption
- Ethereum for blockchain network.- ERC20 tokens
- Solidity for Contract Code
- Figma for UI design.
Challenges We ran into
- Our main challenge was getting good quality data for training our machine learning model. We needed to combine multiple existing datasets using extensive python code to make an effective dataset.
- Getting our model to a high accuracy was a challenge. We tried over five different approaches such as Linear Regression, Logistic Regression, Lasso Regression and Random Forest Regression before getting the optimal results.
- Web hosting was a challenge, due to lack of prior experience with those frameworks.
- Making a multi-page react native app in such a short time limit.
- Writing Multiple Solidity contracts and wallet management between several tokens
- Learning to use Sashido as it was our teammates' first time using the technology
ERC0 Crypto token list and contract addresses (Ropsten testnet):
- potatocoin - symbol ptc, contract address: 0x8b0c9b4f06c6a8af25e1033143ed39106efea9d6
- tomatocoin - symbol tom, contract address: 0x40197b1c4556345b05b04e154311ab1faee1fa10
- ricecoin - symbol ric, contract address: 0xe187823A153C460a06B7c449538B4401FEF9e343
- wheatcoin - symbol whc, contract address: 0xfBB9CB9b164507b9885B05EC49719A02112F38F7
- dalcoin - symbol dlc, contract address: 0xBCF1Aa48CdDFB19c4f35040faf07c5e0c26fd16c
- onioncoin - symbol onc, contract address: 0xf7c05512e503eb7050c7b159d149e2a629bae898
Accomplishments that We're proud of
- Combining many different datasets into one for our prediction algorithms.
- Creating a machine learning model with over 99.76 % accuracy on the test data.
- Creating a clean UI design, with support for English and Hindi languages.
- Integrating Ethereum with a mobile app
- Getting many different components to work together in a short span of time.
- Deploying all the ERC 20 tokens on the network - Ethereum Ropsten Testnet
- We are proud to have successfully used Sashido to host our serverless backend functions, and succesfully integrating it into our app.
What We learned
- React Native mobile app development
- Digital Ocean Hosting
- MongoDB Atlas
- Generic skills - How to manage our time well and create effective deadlines.
What's next for CryptoCrop
- Support for regional languages such as Tamil, Kannada, Marathi etc.
- Migrating back-end to NodeJs for scalability
- Government support for better quality data
- Releasing the app on google play store
- Creating a more robust SMS client.