CONTENTS
PROBLEM STATEMENT................................................................................................................................2
Description..............................................................................................................................................2
Need to Resolve......................................................................................................................................2
Solution Derived for that Problem..........................................................................................................2
MODULE 1 (Identity & Access Management).............................................................................................5
1.1 User authentication (citizen, government, agents) using blockchain.............................................5
1.2 Role-based access control..............................................................................................................5
1.3 KYC verification for ownership validation......................................................................................5
MODULE 2 (Land Title Registration)...........................................................................................................6
2.1 Submission of land/property details..............................................................................................6
2.2 Government verification & approval process.................................................................................6
2.3 Smart contract creation for ownership proof................................................................................7
MODULE 3 (Blockchain-Based Record Management)................................................................................7
3.1 Immutable property record storage...............................................................................................7
3.2 Secure document hashing on blockchain.......................................................................................8
3.3 Interacts with Ownership Transfer & Transactions Module for future sales..................................8
PROBLEM STATEMENT
Description
Traditional land registry systems, heavily reliant on paper-based documentation and centralized databases,
are burdened by numerous critical issues. These systems suffer from operational inefficiencies, leading to
prolonged property transfer times and increased costs. Furthermore, their lack of transparency fosters
corruption and facilitates fraudulent transactions, such as forged records and illegal land seizures. The
absence of accessible and accurate data results in frequent disputes and legal complications, while the
vulnerability of physical records compromises data integrity. Additionally, these systems often exclude
marginalized groups, hindering their access to secure land rights, and ultimately impede economic
development by discouraging investment and limiting access to credit.
Need to Resolve
Lack of Transparency: Traditional systems are prone to manipulation, unauthorized
modifications, and corruption.
Fraudulent Activities: Cases of forgery, double selling, and illegal land grabbing are common
due to insecure record-keeping.
Time-Consuming and Costly: The bureaucratic process involves multiple intermediaries,
increasing the time and cost of property transactions.
Inefficient Dispute Resolution: Ownership disputes take years to resolve due to missing or
forged documents.
Security Risks: Centralized databases are vulnerable to cyberattacks and unauthorized access.
Solution Derived for that Problem
A blockchain-based land registry system leverages decentralized, immutable, and transparent technology
to address the issues in the traditional system.
1. Land & Property Registration Module (Siddharth Singh- 22CS002527)
Purpose: Registers land/property and ensures secure identity verification.
Sub-Modules:
I. Identity & Access Management
- User authentication (citizen, government, agents) using blockchain
- Role-based access control
- KYC verification for ownership validation
II. Land Title Registration
- Submission of land/property details
- Government verification & approval process
- Smart contract creation for ownership proof
III. Blockchain-Based Record Management
- Immutable property record storage
- Secure document hashing on blockchain
- Interacts with Ownership Transfer & Transactions Module for future sales
2. Ownership Transfer & Transactions Module (Uma Suthar-22CS002532)
Purpose: Manages ownership transfers, property sales, and transactions.
Sub-Modules:
I. Smart Contract-Based Sale Agreement
- Buyer-seller agreement using blockchain
- Automated verification of ownership from Land & Property Registration Module
- Digital signatures for legal approval
II. Payment & Taxation Processing
- Payment processing via fiat/crypto escrow smart contracts
- Auto tax calculation based on government rules
- Tax verification from *Land Mortgage & Compliance Module*
III. Ownership Record Update
- Smart contract execution upon successful payment
- Blockchain updates new ownership details
- Syncs with Land & Property Registration Module for future verifications
3. Land Mortgage & Compliance Module (Mohit Teli- 22CS0025)
Purpose: Manages property mortgages, leases, tax compliance, and auditing.
Sub-Modules:
I. Mortgage & Lease Management
- Property mortgage requests & loan approvals
- Smart contract-based lease agreements
- Verification from Ownership Transfer & Transactions Module
II. Taxation & Legal Compliance
- Auto tax collection & government revenue tracking
- Compliance monitoring using blockchain audits
- Syncs with Ownership Transfer & Transactions Module for sales tax
III. Fraud Detection & Audit Trail
- Immutable blockchain-based audit records
- Fraudulent transaction alerts
- Verifies historical ownership from Land & Property Registration Module
Here’s an Interdependency Module Table showing how each module interacts with others:
Module Interacts With Purpose of Interaction
Land & Property Ownership Transfer & Provides verified land titles &
Registration Module Transactions Module ownership data for property
sales.
Land Mortgage & Compliance Supplies ownership details for
Module mortgage verification & tax
compliance.
Ownership Transfer & Land & Property Registration Fetches ownership data before
Transactions Module Module executing sales transactions.
Land Mortgage & Compliance Ensures tax & compliance
Module verification before ownership
transfer.
Land Mortgage & Land & Property Registration Validates ownership details
Compliance Module Module before approving mortgages or
leases.
Ownership Transfer & Ensures all property taxes are
Transactions Module paid before ownership transfer.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract LandPropertyRegistry {
MODULE 1 (Identity & Access
Management)
1.1 User authentication (citizen, government, agents) using blockchain
struct User {
address userAddress;
string name;
string role; // Citizen, Government, Agent
bool isVerified;
mapping(address => User) public users;
1.2 Role-based access control
modifier onlyVerified() {
require(users[msg.sender].isVerified, "User not verified");
_;
1.3 KYC verification for ownership validation
event UserVerified(address user, string role);
function registerUser(address _userAddress, string memory _name, string memory _role) public {
users[_userAddress] = User(_userAddress, _name, _role, false);
function verifyUser(address _userAddress) public {
require(keccak256(abi.encodePacked(users[msg.sender].role)) == keccak256("Government"), "Only
government can verify");
users[_userAddress].isVerified = true;
emit UserVerified(_userAddress, users[_userAddress].role);
}
MODULE 2 (Land Title Registration)
2.1 Submission of land/property details
struct Property {
uint256 id;
string description;
address owner;
uint256 registeredDate;
bool isRegistered;
mapping(uint256 => Property) public properties;
2.2 Government verification & approval process
modifier isNotRegistered(uint256 propertyId) {
require(!properties[propertyId].isRegistered, "Property already registered");
_;
event PropertyRegistered(uint256 propertyId, address owner);
function registerProperty(uint256 propertyId, string memory description) public onlyVerified
isNotRegistered(propertyId) {
properties[propertyId] = Property({
id: propertyId,
description: description,
owner: msg.sender,
registeredDate: block.timestamp,
isRegistered: true
});
emit PropertyRegistered(propertyId, msg.sender);
2.3 Smart contract creation for ownership proof
function getPropertyOwnershipProof(uint256 propertyId) public view returns (address) {
require(properties[propertyId].isRegistered, "Property not registered");
return properties[propertyId].owner;
}
MODULE 3 (Blockchain-Based Record
Management)
3.1 Immutable property record storage
function getPropertyDetails(uint256 propertyId) public view returns (uint256, string memory, address,
uint256, bool) {
Property memory property = properties[propertyId];
return (property.id, property.description, property.owner, property.registeredDate,
property.isRegistered);
}
3.2 Secure document hashing on blockchain
event DocumentHashStored(uint256 propertyId, bytes32 documentHash);
modifier onlyOwner(uint256 propertyId) {
require(properties[propertyId].owner == msg.sender, "Caller is not the owner");
_;
function hashAndStoreDocument(uint256 propertyId, bytes32 documentHash) public
onlyOwner(propertyId) {
emit DocumentHashStored(propertyId, documentHash);
3.3 Interacts with Ownership Transfer & Transactions Module for future sales
event OwnershipTransferred(uint256 propertyId, address newOwner);
function transferOwnership(uint256 propertyId, address newOwner) public onlyOwner(propertyId) {
properties[propertyId].owner = newOwner;
emit OwnershipTransferred(propertyId, newOwner);
}
MODULE 4 (Dispute Resolution & Fraud
Prevention)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract LandPropertyRegistry {
/**
* MODULE 4: Dispute Resolution & Fraud Prevention
*/
// Enum to define possible dispute statuses
enum DisputeStatus { Pending, Resolved, Rejected }
// Structure to store dispute details
struct Dispute {
uint256 disputeId; // Unique ID for the dispute
uint256 propertyId; // ID of the disputed property
address complainant; // Address of the user filing the dispute
string reason; // Reason for the dispute
DisputeStatus status; // Current status of the dispute
}
// Mapping of dispute ID to Dispute struct
mapping(uint256 => Dispute) public disputes;
// Counter to generate unique dispute IDs
uint256 public disputeCounter;
// Event emitted when a dispute is filed
event DisputeFiled(uint256 disputeId, uint256 propertyId, address complainant, string reason);
// Event emitted when a dispute is resolved
event DisputeResolved(uint256 disputeId, uint256 propertyId, string resolution);
// Modifier to allow only government officials to resolve disputes
modifier onlyGovernment() {
require(keccak256(abi.encodePacked(users[msg.sender].role)) == keccak256("Government"), "Only
government can manage disputes");
_;
}
4.1 Dispute Filing & Registration
/**
* Sub-Module 4.1: Dispute Filing & Registration
* Allows verified users to submit disputes against a property.
*/
function fileDispute(uint256 propertyId, string memory reason) public onlyVerified {
require(properties[propertyId].isRegistered, "Property not registered"); // Ensure property exists
disputeCounter++; // Increment dispute counter to generate a unique ID
// Create a new dispute entry
disputes[disputeCounter] = Dispute(disputeCounter, propertyId, msg.sender, reason,
DisputeStatus.Pending);
emit DisputeFiled(disputeCounter, propertyId, msg.sender, reason); // Emit event for dispute filing
}
4.2 Government Review & Resolution
/**
* Sub-Module 4.2: Government Review & Resolution
* Allows government officials to review and resolve disputes.
*/
function resolveDispute(uint256 disputeId, bool decision) public onlyGovernment {
require(disputes[disputeId].status == DisputeStatus.Pending, "Dispute already resolved"); // Ensure
dispute is still pending
disputes[disputeId].status = decision ? DisputeStatus.Resolved : DisputeStatus.Rejected; // Update
status based on decision
emit DisputeResolved(disputeId, disputes[disputeId].propertyId, decision ? "Resolved" : "Rejected");
// Emit event for resolution
}
4.3 Fraud Prevention & Transparency
/**
* Sub-Module 4.3: Fraud Prevention & Transparency
* Allows public to view dispute details for transparency.
*/
function getDisputeDetails(uint256 disputeId) public view returns (uint256, uint256, address, string
memory, DisputeStatus) {
Dispute memory dispute = disputes[disputeId]; // Fetch dispute details
return (dispute.disputeId, dispute.propertyId, dispute.complainant, dispute.reason,
dispute.status); // Return dispute data
}
}