The capstone will build upon the knowledge you have gained in the course in order to build a decentralized housing product.
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.
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
To run truffle tests:
truffle test test/TestERC721Mintable.js
truffle test test/TestSquareVerifier.js
truffle test test/TestSolnSquareVerifier.js
truffle migrate --network rinkeby --reset
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)
contract address: 0x06F3f0fe8FC54BA43b3da8595D417Edf3D694D26
Used https://www.myetherwallet.com/ to mint 10 tokens
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