/Real-Estate-Marketplace

Decentralized housing project

Primary LanguageJavaScript

Udacity Blockchain Capstone

The capstone will build upon the knowledge you have gained in the course in order to build a decentralized housing product.

Real Estate Marketplace

At present, property titles are often paper-based, creating opportunities for errors and fraud. Title professionals find defects in 25% of all titles during the transaction process, according to the American Land Title Association.Any identified defect makes it illegal to transfer a property title to a buyer until it is rectified. This means property owners often incur high legal fees to ensure authenticity and accuracy of their property titles.

These title management issues could potentially be mitigated by using blockchain technology to build immutable digital records of land titles and using blockchain for transparent transactions. This approach could simplify property title management, making it more transparent and helping to reduce the risk of title fraud and the need for additional insurance.

In this project you will be minting your own tokens to represent your title to the properties. Before you mint a token, you need to verify you own the property. You will use zk-SNARKs to create a verification system which can prove you have title to the property without revealing that specific information on the property. We covered the basics on zk-SNARKs in Privacy lesson in Course 5

Once the token has been verified you will place it on a blockchain market place (OpenSea) for others to purchase.

Install

This repository contains Smart Contract code in Solidity (using Truffle) and tests (also using Truffle).

To install, download or clone the repo, then:

npm install

In directory eth-contracts/

truffle compile

compile

Truffle Tests

To run truffle tests:

truffle test test/TestERC721Mintable.js

test1

truffle test test/TestSquareVerifier.js

test2

truffle test test/TestSolnSquareVerifier.js

test3

Truffle Migrate

truffle migrate --network rinkeby --reset

Implement Zokrates

Step 1 - Install Docker

Used Docker toolbox to install and instantiate a Zokrates zkSnarks development environment

Step 2 - Run ZoKrates

docker run -v //c/<path to your project folder>/zokrates/code:/home/zokrates/code -ti zokrates/z okrates:0.3.0 /bin/bash

Step 3 - Change directory

cd code/square

Step 4 - Compile the program written in ZoKrates DSL

~/zokrates compile -i square.code

Step 5 - Generate the Trusted Setup

~/zokrates setup

Step 6 - Compute Witness

~/zokrates compute-witness -a 3 9

Step 7 - Generate Proof

~/zokrates generate-proof

Step 8 - Export Verifier

~/zokrates export-verifier

Deploy the contract generated by the Zokrates(verifier.sol)

Deployed Contract Address

contract address: 0x06F3f0fe8FC54BA43b3da8595D417Edf3D694D26

Mint Tokens

Used https://www.myetherwallet.com/ to mint 10 tokens

Generate OpenSea marketplace

https://rinkeby.opensea.io/assets/ge-s-real-estate-marketplace-decentralized

Property - listings

https://rinkeby.opensea.io/assets/0x06F3f0fe8FC54BA43b3da8595D417Edf3D694D26/1 https://rinkeby.opensea.io/assets/0x06F3f0fe8FC54BA43b3da8595D417Edf3D694D26/2 https://rinkeby.opensea.io/assets/0x06F3f0fe8FC54BA43b3da8595D417Edf3D694D26/3 https://rinkeby.opensea.io/assets/0x06F3f0fe8FC54BA43b3da8595D417Edf3D694D26/4 https://rinkeby.opensea.io/assets/0x06F3f0fe8FC54BA43b3da8595D417Edf3D694D26/5 https://rinkeby.opensea.io/assets/0x06f3f0fe8fc54ba43b3da8595d417edf3d694d26/101 https://rinkeby.opensea.io/assets/0x06f3f0fe8fc54ba43b3da8595d417edf3d694d26/102 https://rinkeby.opensea.io/assets/0x06f3f0fe8fc54ba43b3da8595d417edf3d694d26/103 https://rinkeby.opensea.io/assets/0x06f3f0fe8fc54ba43b3da8595d417edf3d694d26/104 https://rinkeby.opensea.io/assets/0x06f3f0fe8fc54ba43b3da8595d417edf3d694d26/105

Sell - TX hash

https://rinkeby.etherscan.io/tx/0x2358db04d551d8be7e7dc41376968a5e3bfe0d95e997ce473dffe05582859aa5 https://rinkeby.etherscan.io/tx/0x04f67703ece9ddf5bb3a3276f00cf487913394762b6d703c728c395a592ea899 https://rinkeby.etherscan.io/tx/0xc4a8554b1200975e4d623b506dc320e0b803eb6ec9a285a02f781f3688093b6d https://rinkeby.etherscan.io/tx/0x283daffd613625a91f6300d6c16df2f404fe75cfd53c1dac1567f6f28efa7ae6 https://rinkeby.etherscan.io/tx/0xba25c936218b0085ebee27af728693d5daf70d8b32f0adebfdcd9c60ac3a090e

Project Resources