Question: I am developing a ridesharing Dapp. The ridesharing Dapp is going to have a social media - like features such as friendship, ride posting, transaction
I am developing a ridesharing Dapp. The ridesharing Dapp is going to have a social medialike features such as friendship, ride posting, transaction history, and receipt issuance. So i need human expert to assist writing and adding the following sections to your existing RideSharing smart contract:
Friendship: Users can send, accept, and reject friend requests.
Transaction History and Receipt: Drivers and riders will have their ride history recorded, and receipts can be generated.
Ride Posting: Drivers can post rides, and riders can searchbrowse for rides based on destination, time, and price.
SPDXLicenseIdentifier: MIT
pragma solidity ;
contract RideSharing
struct User
string name;
bool isDriver;
uint rating;
uint rideCount;
struct Ride
address rider;
address driver;
uint fare;
bool isCompleted;
mappingaddress User public users;
mappinguint Ride public rides;
event UserRegisteredaddress user, string name, bool isDriver;
event RideRequestedaddress rider, uint rideId;
event RideOfferedaddress driver, uint rideId;
event RideCompleteduint rideId, address rider, address driver;
event PaymentProcesseduint rideId, address rider, address driver, uint fare;
event RatingSubmittedaddress user, uint rating;
uint public rideCounter ;
function registerUserstring memory name, bool isDriver public
requirebytesnamelength "Name is required";
requireusersmsgsenderrideCount "User already registered";
usersmsgsender User
name: name,
isDriver: isDriver,
rating:
rideCount:
;
emit UserRegisteredmsgsendername, isDriver;
function confirmRideuint rideId public
requireridesrideIdrider msgsender ridesrideIddriver msgsender "Only participants can confirm";
requireridesrideIddriver address "Ride not yet offered";
ridesrideIdisCompleted true;
emit RideCompletedrideId, ridesrideIdrider, ridesrideIddriver;
function processPaymentuint rideId public payable
requireridesrideIdrider msgsender "Only rider can make payment";
requireridesrideIdisCompleted true, "Ride not completed";
address payable driver payableridesrideIddriver;
driver.transfermsgvalue;
emit PaymentProcessedrideId, msgsender driver, msgvalue;
function submitRatingaddress user, uint rating public
requirerating && rating "Rating should be between and ;
requireusersuserrideCount "User must have completed at least one ride";
usersuserrating usersuserrating usersuserrideCount ratingusersuserrideCount ;
usersuserrideCount;
emit RatingSubmitteduser, rating;
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
