The smart contracts powering blockimmo

blockimmo is a secure, simple platform for buying, selling, and investing in Swiss 🇨🇭 real-estate. By migrating specific components of the Swiss real-estate market on-chain (the Ethereum blockchain), and integrating seamlessly with the existing processes and systems powering this industry, blockimmo aims to facilitate a more accessible, streamlined market.

The types of listings on blockimmo

blockimmo’s primary use-case is the sale of commercial investment properties and the financing of development projects. These properties are usually owned by multiple parties (investors) in differing stakes (shares). A blockchain-based solution introduces the following 🔑 benefits:

✅ Property ownership can occur in small stakes

A few hundred dollars is all you need to start investing in real-estate.

✅ Investments are liquid

Property can be bought and sold on the scale of minutes.

✅ Fees are reduced by an order of magnitude

Fees are one of the most important determinants of investment performance.

✅ Accessible to the general investor

Prime investments no longer happen behind closed doors in small groups of big-shot investors, and sellers have access to a much larger audience.


Buying, selling, and investing in real-state becomes secure, simple, and transparent with blockimmo.

This is a semi-technical post and assumes the reader has a basic understanding of blockchain and smart contracts. It gives a high-level overview of blockimmo’s core smart contracts and highlights some of the design principles guiding development. Detailed documentation will be released when we open-source our contracts in the coming months. For an introductory post see:

Executive overview

An overview of the smart contracts powering blockimmo

The 🔴 LandRegistry is a simple smart contract living on the Ethereum blockchain. The first step of creating a listing on blockimmo is tokenizing a property for sale (if not already on-chain). This is the process of moving a property to its on-chain representation. A 🍊 TokenizedProperty smart contract is deployed (completely independent of LandRegistry and other properties that already/will live on-chain) that becomes the official representation of the rights/ownership to this specific property. At this point, blockimmo initiates processes in the background to verify/validate the authenticity of this listing, and append the TokenizedProperty to the LandRegistry if 💯.

A 🌕 ShareholderDAO contract is then deployed (completely independent of TokenizedProperty), and granted control of TokenizedProperty. It enables owners of a property to make major decisions related to the property via a de-centralized voting process.

Lastly, a 🔵 CrowdSale contract is deployed (completely independent of TokenizedProperty and ShareholderDAO), and given access to the tokens to be sold. Multiple investors can now buy tokens of property (through the CrowdSale) with ETH! The seller of the property will receive ETH, and the investors will receive tokens!

blockimmo aims to be flexible and enable an eco-system of on and off-chain services. We will go into more detail about our vision and how our technology enables this in a future post. The important thing to note is that these smart contracts are designed to be modular and plugged into by other contracts/parties. In the following sections we will briefly look into each of these contracts in a bit more detail.

The land registry — ground zero

The on-chain land registry organizes and indexes `TokenizedProperty`s by their Grundstück and E-GRID Number

The Swiss cadastral system (Land Register) is an immutable, append-only, public ledger (sound familiar 🤔?) recording the rights/ownership pertaining to plots of land. Each and every parcel of land in Switzerland is recorded here, indexed by it’s Grundstück Number (by canton) and E-GRID Number (a universally unique identifier). All information relevant to this land is publicly available and attainable with this number. This information is maintained by Swiss land registrars, and is easily accessible to the general public. There is no need to duplicate this information and store it on-chain.

These fundamental characteristics of the Swiss land registry make it a perfect fit for blockchain — an extremely simple smart contract can encompass this functionality. This contract has a single public state variable landRegistry, mapping grundstückNumbers ➡️ TokenizedPropertys. Each TokenizedProperty is an independent smart contract that controls and manages that plot of land.

Furthermore, the Swiss land registry is partially decentralized — there is no central land registrar. Rather, the individual cantons are responsible for maintaining their land register, and the cadastral surveying is mostly done by private parties acting as public agents, providing a decentralized service.

As the blockimmo platform matures, we envision completely decentralizing this system — cadastral surveying will be commissioned and delivered/executed on-chain. This is a next step, and highlights our modular, one-step-at-a-time approach towards moving the Swiss real-estate industry/market on-chain.

Tokenizing real-estate

The on-chain digital asset controlling and representing the rights/ownership to a specific property

Let’s zoom-in on TokenizedProperty. This is an ERC20 compliant token denominated such that ownership can occur across many parties in small stakes. This contract maps the owners (Ethereum addresses) to the numberOfTokens they own. Owning 50% of a property’s tokens correlates to 50% ownership of that property.

Given a property’s Grundstück Number, we can look it up in the LandRegistry to find it’s on-chain representation — TokenizedProperty. We can read it’s state (who owns what, etc…), and call it’s functions to execute additional functionality (to be discussed in a future posts/case-studies). Furthermore, we can view other useful information like a property’s entire transaction history to-date. Useful meta-data (i.e. information surrounding a transaction) is stored off-chain via IPFS and indexed in TokenizedProperty.

Enabling property owners to make decisions through a de-centralized voting process

A decentralized autonomous organization can control a `TokenizedProperty` to allocate and distribute funds

A given property may have multiple owners with varying stakes of ownership. We need a solid mechanism to enable them to effectively make and execute decisions. This is accomplished by a simple ShareholderDAO. Each ShareholderDAO is an independent smart contract that is attached to a TokenizedProperty. Owners of TokenizedProperty can extendProposals and vote in favor or against an open Proposal.

Any property owner can extend a proposal, and if majority consensus is reached, the proposal will be executed. An owner’s votingPower is determined by their stake in the property (a party that owns over 50% of a property has full decision making power). ShareholderDAO determines canExtendProposal/canVote/votingPower by readingTokenizedProperty’s state — TokenizedProperty.balanceOf.call(account).

A decision is usually in the form of sending ETH (goods) to a party for (off-chain) services. We will explain this further in a future post/case-study.

Distributing income

The complete management of an investment property will usually be outsourced to a professional partner active in the region the property is located. This ensures the building stays in good condition, that tenants receive excellent service, and that accounting and finances are done by a trustworthy party. In a future case-study we will demonstrate a property’s owner/ShareholderDAO assigning management of the property to a management company.

Investment properties (both commercial and residential) generate income. In the case a property is under control of a management company, this income is routed (in ETH) to the TokenizedProperty smart contract on a quarterly basis (without a management company tenants would be required to pay the TokenizedProperty smart contract directly, in ETH). This income is used to pay any of the property’s expenses (as determined by ShareholderDAO and/or the management company), and the remaining funds are automatically distributed to the property’s owners (according to their stake). The behavior is similar to dividend payouts.

Crowd-sale

A crowd-sale can be configured and attached to a `TokenizedProperty` to sell a property

An investment property will usually be sold via crowd-sale. A crowd-sale is an ideal mechanism for exchanging tokens of property (or any digital asset) for ETH. A TokenSale is an independent smart contract that a seller attaches to the TokenizedProperty (giving TokenSale access to their tokens). The behavior is then the same as a normal crowd-sale (i.e. an ICO). A TokenSale is configurable by the seller (i.e. startTime, endTime, goal, etc…), but the end result is investors receive rights/ownership of property (tokens), and the seller receives ETH.

Final remarks

In this post we presented a simplified view of the suite of smart contracts powering blockimmo. In future posts/case-studies we will go into more detail — especially when we open source our contracts. These contracts are abstracted from a user’s-perspective with a clean and intuitive UI/UX. A user only needs to sign/verify blockchain transactions (via MetaMask, and uPort for 2FA):

Furthermore, there are legal and regulatory processes/workflows that occur in parallel/asynchronously to our smart contracts/ÐApp. We are partnered with a strong legal company to ensure these are executed correctly and smoothly.