Using Assets and Smart Contracts in Real Estate
The Real Estate industry is the largest asset class in the world with total global valuation around $280 trillion.
Today we will explore some of the basic concepts of blockchain as disruptive innovation and how and why it can be applied to the Real Estate. Later on in this article, we will go more in detail about how to digitize your property and create your first Non-Fungible Asset ( ASA - Algorand Standard Asset ) using Algorand CLI. The Algorand protocol supports the creation of on-chain assets that benefit from the same security, compatibility, speed and ease of use as the Algo. For more info please check the official documentation: Algorand Standard Asset.
What is a Blockchain?
I wanted this article to be as simple as possible, that’s why before I started writing it, I tried to explain the meaning of blockchain to my daughter, but I think she still needs some time to master the concept.
We can define Blockchain as a distributed ledger technology (DLT) of information ( not controlled by a single entity ) collected through a network that sits on top of the internet. It is how this information is recorded that gives blockchain its innovative qualities and potential. In particular, the information is time-stamped and recorded in the ledger as a block of data. This block is verified by thousands or millions of computers distributed across the network ( peer-to-peer ).
After the block is verified, it is added to the chain, creating a unique record with a unique history ( Timestamp ). If someone wants to modify the value of this record, it will mean that they have to alter the entire blockchain in millions of instances which is practically impossible. If you think of a normal Database you will be able to do so just modifying the specific entry in the table.
If we would represent with an image the meaning of blockchain we could define it as follow:
Like I said before, DLT simply means a ledger, a verify ordering of all transaction, stored in multiple locations. Every location stores an identical immutable copy of the same ledger.
Before implementing a DLT you need to figure out if you really need a Blockchain or not. Because I wanted to focus more on hands-on and examples on how to create your first ASA, I will leave to you to read more about why and when you need a distributed ledger.
My favourite is this article with different decision models examples that helps you to understand when you should consider using a DLT for your next project. When do you need blockchain? Decision models. | by Sebastien Meunier
Blockchain Properties
The Blockchain concept, comes with some defined features:
▸ Decentralization: All the data that is stored inside a blockchain is not owned by one single entity.
▸ Transparency: All the data that is stored inside the blockchain can be seen by everyone who is part of the network. Every single piece of data can be traced right to its very origin.
▸ Immutable: All the data that is inside the blockchain cannot be tampered with because of cryptographic hash functions.
▸ Private: Optional a blockchain network can be private which requires an invitation and must be validated by either the network starter or by a set of rules put in place by the network starter.
Problems with the traditional Real Estate Industry
-
Barriers to entry: Real Estate is one of very few assets that manage to provide the same degree of passive income and capital appreciation over time. However, the problem with Real Estate is that it is not open to everyone. There are barriers of entering the real estate market. ( citizenship, international bank accounts, credit score, financing, cash requirements, accreditation ).
-
Lack of transparency: Corruption, tax evasion, and money laundering.
-
Intermediary fees: When you buy a new place ( investment or first home buyer ) there are many fees you will incur to finalise your asset purchase. Exchange fees, transfer fees, broker fees, attorney fees, taxes, investment fees, lawyers, accountants etc.
-
Lack of Liquidity: Liquidity of an asset is directly proportional to the supply of the buyers. If you own a property and you are thinking of selling you might wait sometime until you will be able to convert the asset into cash. First you need to find a buyer and later you will need to deal with multiple third parties involved in the transaction.
Why Blockchain and Smart Contract in Real Estate
The blockchain model can bring several utilities into the real estate ecosystem:
▸ Smart Contracts: They are self-executing automated contracts with specific instructions written on its code which get executed when certain conditions are made ( similar to IFTTT logic).
▸ Tokenization: A token is a digital representation of a real-world asset, value, or function. One of the most exciting use-cases of blockchain technology is that it helps in the tokenization of real-world assets.
The use of blockchain and smart contracts will help to possibly cut off all the middlemen ( brokers, banks and lawyers ) however, will not remove local government regulations. Moreover, Real Estate transactions can be very slow and take months, mainly because of the vast amount of bureaucracy, middlemen, and lack of transparency that you need to go through. Again, in a hypothetical scenario with transactions running over a blockchain network, we will be able to speed up this process.
With smart-contracts it is possible to link the digital ownership of the property, documents, and contracts directly into the blockchain. The owner is protected because once inside the blockchain, it is impossible to be tampered with or altered the data.
Use of Tokenization in Real Estate
The idea is based on the concept of Fractional Ownership
Definition
a method in which several unrelated parties can share in, and mitigate the risk of, ownership of a high-value tangible asset, usually a jet, yacht or piece of resort real estate, via Tokenization. - Wikipedia
In other words, instead of one person owning one property, it can be possible for multiple people to buy tokens of the property and co-own the building.
- Property ownership can be segmented.
- Buyers can micro-invest and own a piece of property.
Let’s give an example: A Sydney beach house would cost something around ~$2.3M, which is out of the budget for most people like me. Let’s suppose that the owner is willing to tokenize the house and initialize the selling on a public exchange so more people can be attracted to invest in his property. Five people have fulfilled the buying orders and each person has $460,000 worth of these tokens. They are now together owning the house signing a multi-signature smart contract which is complete over the blockchain network.
With a multi-signature smart contract the new investors are assured that all future decisions will be taken upon agreement by a majority of the owners.
It sounds unreal, but it is actually something that could be built and help to automate the process of starting investing in Real Estate with a lower cost compared to the traditional approach.
For example in Australia there is already a platform BrickX for fractionalised investing in real estate that allows you to buy parts of shares in property starting from $100. However, blockchain could take this idea a step further.
As we can see, Tokenization can increase liquidity. It allows you to create a better portfolio diversification and possibly exposure to less risk. Instead of investing all your money in one single property, you could use the same money to buy fractions in multiple properties and get a form of dividend if the property is rented out or make some profit once you decide to sell your Tokens.
At the same time, Fractional Ownership decreases barriers of entry in the Real Estate market. You will not need to save and take an expensive loan to buy an expensive house, you could simply buy a fraction of that property you like to invest in.
Create a Non-Fungible ASA
In this section I will explain how to create your first Restricted Non-Fungible Token that could represent the digitalization of your lovely house using the goal CLI Tool . We will also explore the meaning of Algorand Standard Asset properties ( total supply, decimals, unit name and more ) and how to create your genesis transaction in the Algorand network.
An ASA has different properties which you can define based on your use-cases. For a more customizable ASA I suggest creating your asset using the Algorand SDK ( currently for Python, GO, Java, JavaScript ).
Learn More: Algorand Standard Asset
Requirements
Once you have your node and the goal CLI installed in your machine, we are able to start. First thing first let’s ask the helper and see which commands are available. You will find the goal
executable inside the node dir after you installed the node and you can update the $PATH in your machine so you can run the command quickly.
goal asset --help
Output
Manage assets
Usage:
goal asset [flags]
goal asset [command]
Available Commands:
config Configure an asset
create Create an asset
destroy Destroy an asset
freeze Freeze assets
info Look up current parameters for an asset
send Transfer assets
Flags:
-h, --help help for asset
-w, --wallet string Set the wallet to be used for the selected operation
Global Flags:
-d, --datadir stringArray Data directory for the node
-k, --kmddir string Data directory for kmd
Use "goal asset [command] --help" for more information about a command.
We will focus on the goal asset create
command. You can output again the helper with goal asset create --help
but I will go straight to the creation process and will explain the properties we are using in this tutorial.
Learn More
ASA Property: name
--name string
Let’s start with the property name for our asset. This will identify the complete name of the ASA. Asset name strings may contain spaces or symbols and the limit is 32 bytes for [–name].
Let’s say we name our ASA with the
--name "DomainFirstASA"
ASA Property: unitname
--unitname string
The unit name is a symbolic abbreviation of your ASA. There is a limit of 8 bytes for [–unitname]. Let’s think of the unitname as the “AUD” for Australian Dollars. For example, we can recognise our asset with the unitname:
--unitname "DOM1"
ASA Property: decimals
--decimals uint32
With this property we will decide if the ASA is divisible or not. From the helper “The number of digits to use after the decimal point when displaying this asset. If set to 0, the asset is not divisible beyond its base unit. If set to 1, the base asset unit is tenths. If 2, the base asset unit is hundredths, and so on.”
So for example if the ASA you intend to create is supposed to be divisible up to 0.0001, you will need to assign 4 as the value of this flag. Maximum [–decimals] is 19.
For simplicity in this tutorial we will refer to a non-fungible asset that must be not divisible and unique. If we want to create a fungible asset then, it will be not unique, interchangeable, divisible in sub-parts and each of its sub-parts is indistinguishable from another sub-part.
In our example we will use:
--decimals 0
ASA Property: total
--total uint
This flag represents the total amount of tokens ( total supply ) for the created asset. You can follow this simple rule: [–total] flag the value: S * 10^D. Where S is the total integer supply and D the decimals. So for example if you want to create an ASA with 2 decimals and a total supply of 200, you will set: --total 20000
that will generate: 200.00 ASA.
The requirement for our example ( restricted non-fungible token ) is that it is not only indivisible but must be unique. Therefore, we will set:
--total 1
ASA Property: asseturl
--asseturl string
With this property you can set an URL as additional information for your ASA. For this flag, there is a limit of 32 bytes. In our example we will set:
--asseturl "domain.com.au"
ASA Property: creator
--creator string
Now we need to specify the creator of the ASA and therefore the string we are going to use for this specific flag is the public address of the asset creator account. The creator address will be assigned by default to all the ASA management addresses too in the genesis block creation of the ASA.
While the management addresses could be changed, the creator address represents an immutable property of the asset. Set it as the public address of an account you own.
--creator <your_account_address>
Learn more
ASA Create Transaction
At this point we are ready to create our first asset transaction for our ‘DomainFirstASA’. We are able now to set all the required [flags] that I have mentioned in the previous steps. The only flags you need to complete on your own are:
--creator <your_account_address>
And the Global [flags]:
--datadir <name_of_node_data_directory>
Which is the ‘data’ directory that you find in the main node directory after installing the node.
--wallet <name_of_node_wallet>
Which is the name you assign to your wallet during the creation process.
Optionally you can set a note with your first transaction and it will be registered forever on the blockchain. For example in the first transaction for Bitcoin someone left the following message: ‘The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.’
All we have to do now is to group all the properties into an asset create transaction
command.
goal asset create --asseturl "domain.com.au" --creator <your_account_address> --decimals 0 --name "DomainFirstASA" --note "I have completed my tutorial on Domain first ASA creation using goal!" --total 1 --unitname "DOM1" --datadir <name_of_node_data_directory> --wallet <name_of_node_wallet>
Press ENTER to push the asset creation transaction to the MainNet! If everything goes well the output will be:
Once the block containing the genesis transaction of the ASA has been added to the blockchain the asset comes to life returning the genesis transaction ID and its asset ID. Now you can find your ASA among the Algorand Standard Assets listed on a block explorer . ( https://algoexplorer.io/asset/71054280 )
The asset ID is the unique identity for our ASA that we just created. For those familiar with Database architecture, the record’s unique identity in a database is ensured by a primary key which is immutable and different to all the others records. The asset ID works in the same way. Someone else can create ASAs exactly with the same asset name and asset unit name that already exist on the blockchain. However, what really differentiates your ASA from the others is the asset ID.
Remember to load your wallet with some ALGO before trying to run the asset create command otherwise you will get a network error.
You can also try the asset create using TestNet and load your wallet with a free ALGO faucet.
Learn More
Conclusion
If you made it until the end of this article means you are now able to create a unique digital representation of non-fungible assets, like a Real Estate property, collectable cards, digital identity representations, art copyright and more.
As noted earlier, I wanted to keep this first article short and simple to give you an an understanding of what is possible using the Algorand Blockchain. Now that the basic concepts are clear, in the next tutorial I will focus on the Fractional Ownership concept using our ASA and go deeper in building a multi-signature smart-contract in order to define the ownership of our property that we just created. To do that I will be using PyTeal which is a python language binding for Algorand Smart Contracts (ASC) that abstracts away the complexities in writing smart contracts.
Watch this space for the next update!