https://github.com/OuailTayarth/TitleChain_Decentralized_Property_Ledger
Smart contract that enables users to record property titles as NFTs, along with their associated metadata. Additionally, it allows users to filter the recorded titles based on their instrument number.
https://github.com/OuailTayarth/TitleChain_Decentralized_Property_Ledger
blockchain-technology daaps ipfs-blockchain metadata nft solidity solidity-contracts
Last synced: 7 months ago
JSON representation
Smart contract that enables users to record property titles as NFTs, along with their associated metadata. Additionally, it allows users to filter the recorded titles based on their instrument number.
- Host: GitHub
- URL: https://github.com/OuailTayarth/TitleChain_Decentralized_Property_Ledger
- Owner: BjornBuug
- Created: 2023-05-09T10:18:35.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-08-02T11:46:04.000Z (almost 2 years ago)
- Last Synced: 2024-12-26T23:06:10.159Z (over 1 year ago)
- Topics: blockchain-technology, daaps, ipfs-blockchain, metadata, nft, solidity, solidity-contracts
- Language: Solidity
- Homepage: https://property-titles-record-dapp.vercel.app/
- Size: 1.64 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TitleChain: The Decentralized Property Ledger
TitleChain is a decentralized application (Dapp) built on the Sepolia blockchain Testnet that enables secure and transparent recording of property titles. Using OpenZeppelin ERC721 Standard, this Dapp allows users to tokenize property titles into NFTs (Non-Fungible Tokens) along with associated metadata. Furthermore, it leverages IPFS for immutable and decentralized storage of essential documents. The Dapp includes a feature to filter titles based on the instrument number. It also implements a role-based access control system, allowing authorized users to approve property titles after verifying associated documents and information.
### Contract Functions:
### Modifiers
- `onlyManager()`
- `onlyOwner()`
### Contract Initialization
- `constructor()`
### Property Functions
- `createProperty(string memory tokenURI, uint256 instrumentNum)`
- `setTokenURI(uint256 tokenId, string memory _tokenURI)`
- `recordProperty(uint256 tokenId, uint256 instrumentNum)`
### Data Retrieval Functions
- `fetchAllPropertiesByManagers()`
- `fetchAllProperties()`
- `fetchPropertiesByNum(uint256 _instrumentNum)`
- `fetchUserProperty()`
### Manager Functions
- `addManager(address _newManager)`
- `approvedPropertyStatus(uint256 tokenId)`
### Contract Address
[View Property Title Recorder Smart Contract on Sepolia Testnet](https://sepolia.etherscan.io/address/0xc495512d4dfeb2ad5ad180af4613b9411eafa467)
## Foundry Test
Follow the [instructions](https://book.getfoundry.sh/getting-started/installation.html) to install [Foundry](https://github.com/foundry-rs/foundry).
Clone and install dependencies: git submodule update --init --recursive
Test Contract: ```forge test --contracts ./src/test/PropertyRecorder.t.sol -vvvv```
