This project implements a decentralized web framework for property registration using Ethereum blockchain, IPFS, Node.js, and MongoDB. The solution aims to bring transparency, immutability, and trust to the process of land registration, eliminating fraudulent intermediaries and ensuring secure, tamper-proof records.
Traditional land registration systems in India are prone to corruption, manipulation, and lack of transparency due to heavy dependence on intermediaries and paper-based workflows.
This project proposes a blockchain-based decentralized application (dApp) to overcome these issues.
The platform connects buyers, sellers, and government officials through smart contracts, ensuring every transaction is validated cryptographically and stored on a public Ethereum network.
- Ensure transparency and trust in property transactions
- Remove the need for third-party intermediaries
- Enable secure and immutable digital record-keeping
- Reduce fraud and duplication in property transfers
- Speed up the overall process of land registration
The system has three primary user roles:
- Super Admin: Creates district admins and oversees all operations.
- Admin: Verifies users, validates land details, and approves property sales.
- User (Buyer/Seller): Registers, lists, or buys land through verified blockchain transactions.
- Frontend: React.js web client connected via Web3.js
- Backend: Node.js + Express server handling API calls and event listeners
- Blockchain: Ethereum smart contracts (Solidity + Truffle)
- Database: MongoDB for user and district data
- Storage: IPFS for decentralized file uploads
| Layer | Technology | Purpose |
|---|---|---|
| Smart Contracts | Solidity, Truffle | Core logic for property registration & transactions |
| Blockchain | Ethereum (Ganache local network) | Distributed ledger for tamper-proof records |
| Web3 Integration | web3.js, MetaMask | Connects client with blockchain |
| Backend | Node.js, Express, Mongoose | API services and event subscriptions |
| Database | MongoDB | Stores verified users and metadata |
| File Storage | IPFS | Decentralized document storage |
| Testing | Mocha, Chai | Contract testing and validation |
- Super Admin Creation: The super admin registers admins for each district.
- User Registration: Users register using MetaMask and provide identification documents.
- Admin Verification: Admin verifies user identity and district association.
- Land Registration: Verified users add land details, which are hashed and stored on-chain.
- Land Listing: Sellers mark their land as “available” for sale.
- Buy Request: Buyers request to purchase verified land.
- Verification & Approval: Admin validates the transaction; seller and admin approve.
- Ownership Transfer: The smart contract executes ownership transfer securely on Ethereum.
git clone https://github.com/nishanktiwari17/Land-Registry.git
cd Land-Registry
### Truffle Steps
- `truffle init`
- Add Contracts to "contracts" folder
- `truffle compile`
- Add/Create migrations file
- `truffle migrate --network ganache`
### Change abi at 3 locations within files: index.js, test.js, .env
### Remove public from superAdmin in the solidity contract
### Change network ID in script (5777)
---
## STEPS
cd truffle
Set correct network parameters in "truffle-config.js"
Set the deployer address in the migration file for deploying contracts
run run-ganache.ps1 (it will start the ganache test network)
run dep-mig-copy.ps1 (it will deploy the contract)
`cd web/client`
Create `.env` file by taking the reference of `.env.sample` file (in the same folder where .env.sample is present)
*If you don't want to modify any file in the web folder
`npm start` (it will copy the new ABI and new contract address in the public/contract_details.json file)
\
*If you want to modify files in the web folder
`npm run dev`
### After contract update
`cd web`
Restart web server (it will copy the new ABI and new contract address in public/contract_details.json file)