Create Publication

We are looking for publications that demonstrate building dApps or smart contracts!
See the full list of Gitcoin bounties that are eligible for rewards.

Article Thumbnail

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:
EditorImages/2021/04/05 19:39/flows.png

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.

EditorImages/2021/04/05 19:39/blocks.png

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

  1. 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 ).

  2. Lack of transparency: Corruption, tax evasion, and money laundering.

  3. 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.

  4. 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


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.

EditorImages/2021/04/05 19:41/msig-graph.png

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


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


Manage assets 

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 

-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 ""

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 "" --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 . ( )

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


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!