-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"_format": "hh-sol-dbg-1", | ||
"buildInfo": "../../build-info/4c768d81f375d9931f76c2b18a5a29bd.json" | ||
} |
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
{ | ||
"_format": "hh-sol-cache-2", | ||
"files": { | ||
"/Users/adithtomalex/Desktop/SmartBites/contracts/smart.sol": { | ||
"lastModificationDate": 1680395093289, | ||
"contentHash": "c305a34a1c29a0b348a924f63e946c81", | ||
"sourceName": "contracts/smart.sol", | ||
"solcConfig": { | ||
"version": "0.8.9", | ||
"settings": { | ||
"optimizer": { | ||
"enabled": false, | ||
"runs": 200 | ||
}, | ||
"outputSelection": { | ||
"*": { | ||
"*": [ | ||
"abi", | ||
"evm.bytecode", | ||
"evm.deployedBytecode", | ||
"evm.methodIdentifiers", | ||
"metadata" | ||
], | ||
"": [ | ||
"ast" | ||
] | ||
} | ||
} | ||
} | ||
}, | ||
"imports": [], | ||
"versionPragmas": [ | ||
">=0.7.0 <0.9.0" | ||
], | ||
"artifacts": [ | ||
"FoodDeliveryContract" | ||
] | ||
} | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
pragma solidity >=0.7.0 <0.9.0; | ||
|
||
contract FoodDeliveryContract { | ||
address public user; | ||
address public restaurant; | ||
address public driver; | ||
uint public foodFee; | ||
uint public deliveryFee; | ||
uint public expirationTime; | ||
bool public isCanceled; | ||
|
||
mapping (address => bool) public registeredDrivers; | ||
mapping (address => uint) public payments; | ||
|
||
constructor(address _restaurant, uint _foodFee, uint _deliveryFee, uint _expirationTime) payable { | ||
user = msg.sender; | ||
restaurant = _restaurant; | ||
foodFee = _foodFee; | ||
deliveryFee = _deliveryFee; | ||
expirationTime = block.timestamp + _expirationTime; | ||
} | ||
|
||
function registerAsDriver() public { | ||
registeredDrivers[msg.sender] = true; | ||
} | ||
|
||
function setDeliveryFee(uint _deliveryFee) public { | ||
require(msg.sender == user, "Only the user can set the delivery fee"); | ||
deliveryFee = _deliveryFee; | ||
} | ||
|
||
function nullifyContract() public { | ||
require(msg.sender == user, "Only the user can nullify the contract"); | ||
require(block.timestamp > expirationTime, "Contract has expired"); | ||
isCanceled = true; | ||
} | ||
|
||
function scanQRCode() public { | ||
require(msg.sender == driver, "Only the driver can scan the QR code"); | ||
require(!isCanceled, "Contract has been nullified"); | ||
uint totalPayment = foodFee + deliveryFee; | ||
require(address(this).balance >= totalPayment, "Not enough funds to complete the payment"); | ||
|
||
// Send payment to the restaurant | ||
(bool success, ) = restaurant.call{value: foodFee}(""); | ||
require(success, "Failed to send payment to the restaurant"); | ||
|
||
// Send payment to the driver | ||
(success, ) = driver.call{value: deliveryFee}(""); | ||
require(success, "Failed to send payment to the driver"); | ||
|
||
// Send any remaining funds back to the user | ||
uint remainingPayment = address(this).balance; | ||
if (remainingPayment > 0) { | ||
(success, ) = user.call{value: remainingPayment}(""); | ||
require(success, "Failed to send remaining payment back to the user"); | ||
} | ||
} | ||
|
||
receive() external payable { | ||
require(msg.sender == user, "Only the user can send funds to this contract"); | ||
payments[msg.sender] += msg.value; | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
require("@nomicfoundation/hardhat-toolbox"); | ||
|
||
// Go to https://alchemy.com, sign up, create a new App in | ||
// its dashboard, and replace "KEY" with its key | ||
const ALCHEMY_API_KEY = "1C3bPKmFmqhV3qV4_iPm2zRT5RNT-gXD"; | ||
|
||
// Replace this private key with your Sepolia account private key | ||
// To export your private key from Metamask, open Metamask and | ||
// go to Account Details > Export Private Key | ||
// Beware: NEVER put real Ether into testing accounts | ||
const SEPOLIA_PRIVATE_KEY = "84fe095f234ebb5c5570109eb1d8650a18cbabaa6ca9a60c2e19b218a03352e8"; | ||
|
||
module.exports = { | ||
solidity: "0.8.9", | ||
networks: { | ||
sepolia: { | ||
url: "https://eth-sepolia.g.alchemy.com/v2/1C3bPKmFmqhV3qV4_iPm2zRT5RNT-gXD", | ||
accounts: [SEPOLIA_PRIVATE_KEY] | ||
} | ||
} | ||
}; |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.