AWS Marketplace

Increase transparency in real estate transactions using blockchain and Vendia Share

In this blog post, Gowri, Vikrant and I demonstrate how to increase transparency for residential real estate transactions using Vendia Share. Vendia Share is an enterprise blockchain built with AWS Serverless technology. Vendia enables companies to create real-time data applications that are scalable, secure, and offer a shared, single view of truth.

Real estate transaction challenges

Real estate transactions involve a number of different parties, including a buyer, seller, lender, multiple brokers, escrow company, appraisal company, and title companies. Each party has its own fees and required information. This complexity increases transaction time, costs, and the risk of errors. Vendia Share’s blockchain solution facilitates multi-party data interactions and establishes a single, immutable source of truth. Property title information is available to all parties in real time, and only authorized parties can participate.

Terminology

Refer Terms and Definitions for Vendia Share terminology used in this blog post.

Prerequisites

  1. Familiarity with JSON schema and GraphQL are good to have but not necessary.
  2. For demonstration purposes, this blog post uses the PropertyTitle.pdf file to upload into a node. You can use any sample file with a valid name and extension.

Background

A real estate transaction involves a title search, an appraisal, and loan approval.

Title search

In order to trace a property’s chain of title, a title examiner searches the records of the county recorder, county assessor, and other government taxing agencies to locate any and all documents that might affect the title of a given property. The following chart shows the documents required and the parties requiring visibility into each one.

Documents/Fields Type Party – Information Visibility
PreliminaryTitleReport.pdf File ALL, Title Company (Writer)
titleOrderPlaced Yes/No Escrow (Writer), Buyer
preliminaryReportDelivered Yes/No Title Company (Writer), Escrow
reportDeliveredToLender Yes/No Escrow (Writer), Lender
reportDeliveredToBuyer Yes/No Escrow (Writer), Buyer

Appraisal

An independent appraisal company conducts a property valuation and appraisal to determine the market value of the property. The lender consumes this valuation report to determine approval for the buyer’s loan. The following chart shows the documents required for appraisal and the parties requiring visibility into each one.

Documents/Fields Type Party – Information Visibility
AppraisalReport.pdf File Escrow (Writer), Lender, Seller, Buyer
valuationAmount Currency (USD) Lender (Writer), Buyer
valuationComplete Yes/No Appraisal Company (Writer)
appraisalReportDelivered Yes/No Appraisal Company (Writer), Lender, Buyer

Loan approval

For loan approval, a lender reviews data and artifacts, including appraisal report, buyer’s current debts, down payment amount, funds source, credit score, and overall financial responsibility of the buyer. The following chart shows the documents required and the parties requiring visibility into each one.

Documents/Fields Type Party – Information
lenderConditionsFulfilled Yes/No Buyer, Lender (Writer)
appraisalReportReceived Yes/No Lender (Writer)
loanApproved Yes/No Lender (Writer), Buyer
fileMovedtoFunding Yes/No Lender (Writer)
fundsReleased Yes/No Lender (Writer), Escrow

Solution overview: Increase transparency in real estate transactions using blockchain and Vendia Share

Vendia Share orchestrates the three steps from the previous section to improve transparency and provide a comprehensive, real-time view of the process.

In this scenario, there are six nodes, one for each buyer, seller, lender, escrow, appraisal company, and title company. One organization starts the Uni with a single node. It sends out the invite to the other five parties to join the Uni, which adds five more nodes once all parties accept the invite to join the Uni.

Since buyers and sellers are individuals and organizations, in our scenario, an escrow company manages one dedicated node on behalf of all sellers and one node on behalf of all buyers. The appraisal company works through a lender node.

Every node in a Uni gets a full stack of a single-tenant Vendia Share stack. A single-tenant stack is a dedicated AWS account. The individual parties can read and write data to the Uni through the node assigned to them. The assigned node also empowers users to set a differential privacy policy on new information at the record for file level that they store in the Uni.

In this blog post, since you will have access to the free tier of Vendia Share, you can only create one Uni with two nodes. We will show how this model works using two nodes: escrow and buyer. You can extend it to include other parties using the individual or enterprise plan.

Solution walkthrough

Create a Uni

Complete the following steps to create a Uni or refer to Web Quick Start for visual walkthrough on how to set up a Uni.

  1. Create a Vendia Share account and verify your email.
  2. Create a Uni.

To launch the wizard, log into in your Vendia Share account, and on the landing page on the right top corner, choose the Create Universal Application button. Choose Create your own and then:

    • In the Uni Settings tab, enter a name for your Uni, prefixing your uni name with test-. In the upper right, choose Next.78
    • In the Node Configuration tab, add two Uni nodes, one at a time. For NodeOne, enter the Node name as escrow and check the check box I acknowledge that the Vendia UI and CLI will use the default API Key to access my Node’s API. To create second node, choose Add Another Node. Enter the Node name buyer and check the check box I acknowledge that the Vendia UI and CLI will use the default API Key to access my Node’s API.
    • In the Uni Schema tab, paste the following JSON schema. It has all the attributes needed to track the three important steps defined in the Background section of this blog post.
{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "http://vendia.net/schemas/sample.schema.json",
    "title": "Real Estate Chain",
    "description": "Residential Real Estate Sales Chain",
    "x-vendia-acls": {
        "SalesTransactionAcl": {
            "type": "SalesTransaction"
        }
    },
    "type": "object",
    "properties": {
        "SchemaOwner": {
            "type": "object",
            "description": "Schema Owner Details Singleton Value Object",
            "properties": {
                "group": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                }
            }
        },
        "SalesTransaction": {
            "description": "Sales Transaction Tracking",
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "escrowAccountNumber": {
                        "description": "Escrow Account Number",
                        "type": "number"
                    },
                    "titleSearch": {
                        "description": "Title Search Tracking",
                        "type": "object",
                        "properties": {
                            "titleSearchPlaced": {
                                "description": "Title Search Placed",
                                "type": "boolean"
                            },
                            "preliminaryReportDelivered": {
                                "description": "Preliminary Report Delivered",
                                "type": "boolean"
                            },
                            "reportDeliveredToLender": {
                                "description": "Report Delivered To Lender",
                                "type": "boolean"
                            },
                            "reportDeliveredToBuyer": {
                                "description": "Report Delivered To Buyer",
                                "type": "boolean"
                            }
                        }
                    },
                    "appraisal": {
                        "description": "Appraisal Tracking",
                        "type": "object",
                        "properties": {
                            "valuationAmount": {
                                "description": "Valuation Amount in US dollars",
                                "type": "number"
                            },
                            "valuationComplete": {
                                "description": "Valuation Complete",
                                "type": "boolean"
                            },
                            "appraisalReportDelivered": {
                                "description": "Appraisal Report Delivered",
                                "type": "boolean"
                            }
                        }
                    },
                    "loanApproval": {
                        "description": "Loan Approval Tracking",
                        "type": "object",
                        "properties": {
                            "lenderConditionsFulfilled": {
                                "description": "Lender Conditions Fulfilled",
                                "type": "boolean"
                            },
                            "appraisalReportReceived": {
                                "description": "Appraisal Report Received",
                                "type": "boolean"
                            },
                            "loanApproved": {
                                "description": "Loan Approved",
                                "type": "boolean"
                            },
                            "fileMovedtoFunding": {
                                "description": "File Moved to Funding",
                                "type": "boolean"
                            },
                            "fundsReleased": {
                                "description": "Funds Released",
                                "type": "boolean"
                            }
                        }
                    }
                },
                "required": [
                    "escrowAccountNumber"
                ]
            }
        }
    }
}
    • In the upper right, choose Create.

If you prefer to use Terminal, use the CLI Quick Start. Use the previous data model and node configuration in the Uni setup through CLI.

It takes about 10 minutes to provision the Uni. Wait for Uni to move to the RUNNING state.

Use the Uni

Now you can submit transactions to the Uni you just created.

Action 1

    1. In the Universal Application list page, choose your Uni. You will notice two nodes, escrow and buyer.
    2. Use the escrow node to upload the PropertyTitle.pdf from Prerequisites #2. To do this, in the escrow node section, choose File Explorer, and then choose Upload File. Select the PropertyTitle.pdf.
    3. Under Write strategy, delete the default value All. To do this, choose All and select escrow node from the drop-down list. Choose Create.

Outcome

To verify the results of Action 1, take the following steps:

    1. On the same page, in the escrow node, confirm that PropertyTitle.pdf is listed under All Files.
    2. Using the navigation menu on the top left, choose Home and then UniversalApplications. To list all the nodes, choose the Uni name. To confirm that PropertyTitle.pdf is listed under All Files, in the buyer node section, choose File Explorer. Vendia Share replicated the file uploaded by escrow node to buyer node in read only mode.
    3. To upload and view files using node’s File Explorer, repeat step 2.
    4. To test read-only permission on PropertyTitle.pdf for buyer node, in the buyer node, navigate to File Explorer. Select PropertyTitle.pdf. In the Action column, chooses the ellipses (…) and choose Delete from the pop-up menu. Because the buyer node has a read-only copy, the Uni will not allow it to delete the file and prompts an error message No permission to remove file.
    5. In the buyer node, navigate to File Explorer and try to upload a different file with the same name, PropertyTitle.pdf. At the bottom, check the A file already exists check box. The error prompt No Write Permissions should appear. Uni will not enable you to upload a different file with the same name as a new version.
    6. Repeat step 5 in the escrow node. Uni will successfully process Upload through the escrow node.
    7. Repeat step 4 in the escrow node. Uni will successfully process Delete through the escrow node.

Action 2

Now we will show how to update two attributes, titleOrderPlaced and reportDeliveredToBuyer, defined earlier in the Title search of Background section. We will enforce privacy using Vendia Share Access Control Lists (ACLs) on individual fields. This enables us to control information at party level.

Escrow has permission to read, update, and delete titleOrderPlaced. The Buyer will not see the state of the titleOrderPlaced field.

Escrow has permission to read, update, and delete reportDeliveredToBuyer. Buyer will have read-only view on reportDeliveredToBuyer. The buyer node can also generate email and text notifications to buyers using Amazon SNS and Amazon SES.

To update these attributes, navigate to escrow node using the navigation menu on the top left corner and select GraphQL Explorer.

Replace the existing code with the following code in GraphQL query editor. To execute the query, above the query editor, choose the dark blue arrow icon. Make sure to use the node names you defined while create Uni. The following query assumes your nodes are escrow and buyer.

mutation addTitleSearch {
add_SalesTransaction(
input: {escrowAccountNumber: 123456789, titleSearch: {titleSearchPlaced: true, reportDeliveredToBuyer: true}}
aclInput: {acl: [{principal: {nodes: "escrow"}, operations: ALL, path: "escrowAccountNumber"}, {principal: {nodes: "buyer"}, operations: READ, path: "escrowAccountNumber"}, {principal: {nodes: "escrow"}, operations: ALL, path: "titleSearch.titleSearchPlaced"}, {principal: {nodes: "escrow"}, operations: ALL, path: "titleSearch.reportDeliveredToBuyer"}, {principal: {nodes: "buyer"}, operations: READ, path: "titleSearch.reportDeliveredToBuyer"}]}
syncMode: NODE_LEDGERED
) {
transaction {
_id
}
}
}

Outcome

To verify the outcome of Action 2, take the following steps:

    1. Navigate to escrow node and choose Entity Explorer. On the left panel, choose Sales Transaction. Under _id, choose the first transaction.
    2. In the record viewer and editor that opens, verify that the information you added through the GraphQL commands is visible to the escrow node. The escrow node has permission to edit and delete the record.
    3. Navigate to the buyer node, and then choose Entity Explorer. On the left panel, choose Sales Transaction. Under _id, choose the first transaction. You will notice that only escrowAccountNumber and titleSearch.reportDeliveredToBuyer are visible. The buyer node doesn’t have permission to update and delete the record or fields. Choose Edit, change escrowAccountNumber and choose Save. You will get an error prompt Unauthorized.

Verify and audit

To verify and audit your transactions, do the following.

  1. Using the navigation menu on the top left, choose Home and then Universal Applications and choose your Uni name.
  2. Choose Transactions. You can verify and audit all the transactions committed on Vendia Share by multiple parties in the Transactions tab inside the Uni. Block ID 1 is called the Genesis block and is automatically created at the time of Uni creation. Block ID 7 is the last block added to the blockchain. Choosing a specific transaction will list all the transactions initiated in this blog post with details. The blocks added to the chain are tamper-proof. Every change that is made to both attributes and files stored in Uni is recorded on a chain with a timestamp and unique signature. This signature is also called a cryptographic hash.

Conclusion

Vendia Share makes real estate transactions transparent and near real time by creating a single source of truth and the ability to start transactions sooner. Vendia Share also automates communications and helps connect all the parties through a seamless, secure experience.

Unlike other legacy blockchain offerings in the market, Vendia Share is built on AWS Serverless, enabling you to create proof of value in less than a week and time to market in less than three months.

Interested customers can sign up for Vendia Share directly on Vendia Share, or they can purchase it through AWS Marketplace. Should you have any questions, Contact Vendia.

About the authors

Vikrant Kahlir

Vikrant Kahlir is a Senior Solutions Architect focused on enabling customers to develop products and services using the Vendia Share. Prior to Vendia, he worked at AWS as a Principal Solutions Architect. His main interests involve distributed systems and blockchain.

.

.

.

Pawan JanakiramPawan Janakiram is a Sr. Partner Solutions Architect and brings extensive experience in Enterprise Architecture for Telco, Media and Entertainment industry segments.  In a career of nearly 27 years, Pawan has delivered secure, high performance, highly available solutions to cost sensitive business enterprises in positions of ideation, innovation, architecture and delivery.  Containerizing workloads in microservices have been his passion, and Blockchain now his new area of depth.

.

.

Gowri Shankar Dara

Gowri Shankar Dara is a Partner Solutions Architect at AWS. He works with SI Partners to help migrate on-premises workloads into cloud and is passionate about building resilient workloads and Machine Learning. He holds a masters degree in Bioinformatics from Marquette University.