From fc076c160ced117bc4103de5a83a19d9db3b0810 Mon Sep 17 00:00:00 2001 From: Kali-Decoder Date: Mon, 10 Oct 2022 00:04:13 +0530 Subject: [PATCH 1/3] Making a library for calculator --- std-3/1_CalculatorUsingLib/CalculateDummy.sol | 18 ++++++ .../CalculatorLibrary.sol | 58 +++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 std-3/1_CalculatorUsingLib/CalculateDummy.sol create mode 100644 std-3/1_CalculatorUsingLib/CalculatorLibrary.sol diff --git a/std-3/1_CalculatorUsingLib/CalculateDummy.sol b/std-3/1_CalculatorUsingLib/CalculateDummy.sol new file mode 100644 index 0000000..02f6671 --- /dev/null +++ b/std-3/1_CalculatorUsingLib/CalculateDummy.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.11; +import "./CalculatorLibrary.sol"; +contract Math{ + address public lib ; + constructor(){ + lib=address(CalculatorLibrary);//it gives the address of Calculator Library + } + + uint public sum= CalculatorLibrary.add(2,3); + uint public sub = CalculatorLibrary.sub(3,5); + uint public mul= CalculatorLibrary.mul(10,20); + uint public div = CalculatorLibrary.div(20,10); + uint public max= CalculatorLibrary.max(34,67); + uint public min = CalculatorLibrary.min(12,45); + uint public mod = CalculatorLibrary.mod(10,20); + +} \ No newline at end of file diff --git a/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol b/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol new file mode 100644 index 0000000..e713384 --- /dev/null +++ b/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol @@ -0,0 +1,58 @@ +// SPDX-License-Identifier: GPL-3.0 +pragma solidity >=0.7.0 <0.9.0; + +// We have to implement this functions in our library +// add(uint256 a, uint256 b) → uint256 +// sub(uint256 a, uint256 b) → uint256 +// mul(uint256 a, uint256 b) → uint256 +// div(uint256 a, uint256 b) → uint256 +// mod(uint256 a, uint256 b) → uint256 +// max(uint256 a, uint256 b) → uint256 +// min(uint256 a, uint256 b) → uint256 + +// @Library Is Deployed On Polygon Testnet Address :- "0x84903e57A043d28B5e476dB3cF6F5D9193AF5000"; + +library MathLibrary { + //For Addition + function add(uint256 num1, uint256 num2) external pure returns (uint256) { + return num1 + num2; + } + + // For Substraction + function sub(uint256 num1, uint256 num2) external pure returns (uint256) { + require(num1 - num2 < 0); + return num1 - num2; + } + + //For Multiplication + function mul(uint256 num1, uint256 num2) external pure returns (uint256) { + return num1 * num2; + } + + //For Division + function div(uint256 num1, uint256 num2) external pure returns (uint256) { + require(num1 == 0 || num2 == 0); + // if(num1==0 || num2==0){ + // revert("Undefined");// To Tackle Undefined Error + // } + return num1 / num2; + } + + //For Find Maximum + function max(uint256 num1, uint256 num2) external pure returns (uint256) { + uint256 x = num1 >= num2 ? num1 : num2; + return x; + } + + // For Find Minimum + function min(uint256 num1, uint256 num2) external pure returns (uint256) { + uint256 x = num1 >= num2 ? num2 : num1; + return x; + } + + // For Find Mod + function mod(uint256 num1, uint256 num2) external pure returns (uint256) { + require(num1 == 0 || num2 == 0); + return num1 % num2; + } +} From 7dbfd6e45c1c1869737f9bd273cac1704cf3dff0 Mon Sep 17 00:00:00 2001 From: Kali-Decoder Date: Tue, 11 Oct 2022 18:15:35 +0530 Subject: [PATCH 2/3] Changing Library Defination --- .../CalculatorLibrary.sol | 22 ++----------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol b/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol index e713384..e6326e2 100644 --- a/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol +++ b/std-3/1_CalculatorUsingLib/CalculatorLibrary.sol @@ -6,9 +6,7 @@ pragma solidity >=0.7.0 <0.9.0; // sub(uint256 a, uint256 b) → uint256 // mul(uint256 a, uint256 b) → uint256 // div(uint256 a, uint256 b) → uint256 -// mod(uint256 a, uint256 b) → uint256 -// max(uint256 a, uint256 b) → uint256 -// min(uint256 a, uint256 b) → uint256 + // @Library Is Deployed On Polygon Testnet Address :- "0x84903e57A043d28B5e476dB3cF6F5D9193AF5000"; @@ -38,21 +36,5 @@ library MathLibrary { return num1 / num2; } - //For Find Maximum - function max(uint256 num1, uint256 num2) external pure returns (uint256) { - uint256 x = num1 >= num2 ? num1 : num2; - return x; - } - - // For Find Minimum - function min(uint256 num1, uint256 num2) external pure returns (uint256) { - uint256 x = num1 >= num2 ? num2 : num1; - return x; - } - - // For Find Mod - function mod(uint256 num1, uint256 num2) external pure returns (uint256) { - require(num1 == 0 || num2 == 0); - return num1 % num2; - } + } From 4281f00eee7b7aaa29ad6e2fc2ee4217ae97e907 Mon Sep 17 00:00:00 2001 From: Kali-Decoder Date: Wed, 12 Oct 2022 17:48:07 +0530 Subject: [PATCH 3/3] Tinder Decentralised Application --- std-5/Tinder.sol | 117 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 std-5/Tinder.sol diff --git a/std-5/Tinder.sol b/std-5/Tinder.sol new file mode 100644 index 0000000..2a8b46a --- /dev/null +++ b/std-5/Tinder.sol @@ -0,0 +1,117 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.11; +pragma experimental ABIEncoderV2; +contract DTinder{ + //1. Register User + //2. Matching: swipe right / left + //3. Messaging: send messages to matches + //After Reading All contracts and working on all contracts in std-0 ,std-1,std-2,std-3,std-4 + //This is tinder application based on solidity + enum Gender { + MALE,FEMALE,OTHER + } + enum SwipeStatus{ + UNKNOWN, + LIKE, + DISLIKE + } + struct User{ + string name ; + string city; + Gender gender; + uint age; + string picUrl; + } + + struct SwipeSession{ + uint start; + uint count; + } + + mapping(address=>User) private users; + mapping(bytes32=>mapping(uint=>address[])) private userIdsByCity; + mapping(address=>mapping(address=>SwipeStatus)) private swipes; + mapping(address=>SwipeSession) private swipeSessions; + + event NewMatch(address indexed from ,address indexed to,uint date); + + event NewMessage(address indexed from ,address indexed to , string content,uint date); + // Registering user + function register(string calldata _name,string calldata _city,Gender _gender,uint _age ,string calldata _url) external { + require(users[msg.sender].age==0,"User is Already exist"); + require(!_isEmptyString(_name),"Please enter name "); + require(!_isEmptyString(_city),"Please enter City "); + require(_age>17,"You are not above 17"); + require(!_isEmptyString(_url),"Please enter Pic url "); + users[msg.sender]=User(_name,_city,_gender,_age,_url); + userIdsByCity[keccak256(abi.encodePacked(_city))][uint(_gender)].push(msg.sender); + + } + // Get matchable users for user + function getMatchableUsers() view external userExist(msg.sender) returns(User[] memory){ + User storage user = users[msg.sender]; + uint oppositeGender= user.gender==Gender.MALE ? 1: 0; + address[] storage userIds= userIdsByCity[keccak256(abi.encodePacked(user.city))][oppositeGender]; + uint matchableUsersCount; + + for(uint i=0;i