When walking over to the hackathon yesterday morning our team noticed how many parked cars there were on the side of the road not being used. It made us really think about how much cars are actually used and if going further into the 21st Century if we as college students would really need to buy a car in the future.
After all in an age of Uber and Lyft its now a hassle to own your own car. But the problem is everytime we call a car a decent amount of our fare doesn't actually go to the price of the car and gas - but instead to the companies Lyft and Uber. This added price could be the difference between someone buying a car they rarely use for convenience and a world with less cars on the road.
So we thought of a way to almost run this car sharing service with accountability or trust in a way that was decentralized and immutable.
What it does
Essentially we have a pool of autonomous cars (Wall-E's) essentially in waiting scattered through out a community or a city. When someone wants to use a car to get to a place - they simply log onto our WebApp which is tied into the blockchain - and rent out the car. From there the car is now under their control from the WebApp. They have the ability to move it wherever they want - keep in mind though the car is continuously collecting data from sensors (ie Ultrasound, GPS, Sound) - so if you crash the car it will be clearly logged in the Block Chain in a way that cannot be tampered with. When you are done with your car simply tell the Web App and the car is no longer your responsibility.
Now we wanted a system that did not need a centralized body controlling everything - because we believe that in a sharing economy, no one person or entity should be making the lion-share of profits.
How we built it
The server is responsible for handling all the data that is sent from the sensors on the car and saving it to the blockchain. Further, the web server is responsible to serve the web app to show the data and manage the ownership of the car.
Blockchain. All the data is saved on our Ethereum blockchain using Smart Records. One checkout is considered to be one entity in the contract. We save the checkout and return time as well as the sensor data as part of one contract.
We ran a python script with a GPIO Library to access the pins on the raspberry pi for standard time processing, location gathering, sending get requests, etc. We then used an Arduino to run the motors for the car in a way that allowed it to read data from the ultrasound and run autonomously.
Challenges we ran into
Security. The CCI talk made it very clear that things like DDOS attacks were now a reality in a world of IOT. So we needed a solution in order to solve these types of extremely serious attacks and we found our answer in the blockchain. With BlockChain the data is always accessible and distributed meaning if they take down our node the entire system will still function.
Saving data as part of the smart contract was really tricky. I ran into the issue of mining and getting some ethers transferred into the main account. Developing a simple smart contract was easy, however creating all the events - checkout, return and adding sensor data was tricky.
Further, we are assuming that there is only one car, so that took away some complexity from the system.
Getting the Arduino and Raspberry Pi to talk to each other. Troubleshooting and working through the interfacing.
Working with WALL-E and getting him to move and talk the way we wanted him to could be pretty difficult at times.
Accomplishments that we're proud of
In terms of technology we are really proud we built something on the blockchain. It was a lot of fun creating smart contracts on the online IDE - Remix. We are proud of the fact that we have a scalable solution to get cars off the road in a way thats cheaper and more sustainable than the way the world currently runs ride shares. Our team seriously sees this as a mobility solution not only for common people in cities but for the elderly, and disabled who currently have a hard time moving around cities with current public transportation.
What we learned
How to build WALL-E. Developing smart contracts using Solidity. How to get cars off the road while making public transport more available to people who really need it.
What's next for WALL-E By Blockchain
Next steps are spending a little bit more time and creating a mobile application that would work a little bit like a lyft or uber application making it really easy to request cars. We could also add more WALL-E's or actual cars to this system. We also think working with AI we could get these cars running purely autonomous meaning we can lower the price point and make it more affordable to anyone who wants to use this car service.