Dividend-bearing security tokens

On March 14th, $DAI 12'000 of dividends were distributed to the owners of Zendo Property via the blockimmo platform

The income a property generates and distributes to its owners is one important factor that gives these ‘hard’-assets a solid, stable price. The distribution (dividends) is a critical feature of the blockimmo platform smart contracts.

https://blockimmo.ch/listing/CH123456789014

The primary offering of Zendo Property successfully closed on March 7th, reaching its hard-cap of 6,000 DAI. The sale was finalized, at which point the funds raised were transferred directly to the seller (minus blockimmo’s 1% fee), and the 11 investors were notified to withdraw their share of tokens (CH-ZG1236d) representing the rights and ownership to this (demo) security/real-estate backed token.

Finalizing the sale: https://etherscan.io/tx/0xe6d7f9e77ff7356a12954d2a01e2326dceef6da300730aca69066279faf50986

The special thing about Zendo is that investors were promised a dividend payout which would result in their initial investment being ~doubled. An investment of 100 DAI would result in that investor receiving a dividend payout of ~200 DAI. After all investors withdrew their tokens from the Zendo TokenSale (primary offering smart contract), a dividend payout of 12,000 $DAI was deposited to the Zendo TokenizedProperty(security token smart contract) to execute our promise. Investors were then notified (by both email and an in-app notification) to collect their dividends!

Paying out dividends: https://etherscan.io/tx/0x7222fb42fbaeace6b06226c91b3a00a06958e18d4f42835e8c993f93818ec56d

Here you can view the CH-ZG1236d token holders. The largest Zendo ‘shareholder’ owned ~50.9% of the tokens from an investment of ~3,059 DAI in the primary offering. This resulted in a dividend payout to this investor of ~6,057 DAI from 12,000 DAI of total dividends — blockimmo receives a 1% fee on dividend payouts which is why the math comes out to be slightly less than double.

Claiming dividends via blockimmo

If you look at these transactions closely you’ll notice that funds stored in blockimmo smart contracts are loaned via the Compound.finance protocol (both primary offering and dividends), accruing interest and capitalizing on the time-value of money. Note: this is currently kept disabled for ‘real’ properties raising large amounts of funds.

Coming Soon

The first dividend payout for a real commercial property will be distributed in the coming months via the blockimmo platform, the same way it was distributed for Zendo. 20% of Hello World was tokenized, and as this property generates income (from both the restaurant on the ground floor and the residential units above), it is distributed (by the property’s management company) to the owners according to their stake.

The mechanics of a dividend-bearing token

Distributing the income generated by a property to its owners (in the form of dividends) is a critical requirement of any real estate platform (and really of any security, primary or secondary market, platform). Implementing this correctly (there are many incorrect ways to do it) requires precision and attention to detail.

One of the major benefits of a platform like blockimmo’s is enabling fractionalized ownership (i.e. a near unlimited number of investors may own small (or large) pieces of a property). Whether there are 4 token holders 10'000, dividend distribution will work perfectly.

Another major benefit of a platform like blockimmo’s is bringing liquidity to a (previously) illiquid asset. Dividend distribution must work perfectly with decentralized exchanges, token swaps, and peer-to-peer transactions. Any limitations here (including lock-up periods) significantly limit the platform’s ability to grow and plug-in to the ecosystem (i.e. collateralized loans backed by property with Maker’s multi-collateral DAI, trade-pairs on uniswap, on-chain insuarance, etc…).

Dividend-bearing tokens were implemented in blockimmo’s TokenizedProperty smart contract meeting the following requirements:

  • automated — the management company simply deposits the income a property generates into the TokenizedProperty smart contract (as bound by the property’s prospectus)
  • transfers never need to be paused. There is no lock-up period whatsoever. Token holders are free to transfer their tokens at any time. Dividends are assigned to the owner of the tokens at the point of time they were distributed, with no expiration time or strings attached
  • nobody can claim your dividends (including blockimmo)
  • sybil attacks and edge-cases are prevented (i.e. a bad-actor can’t 1) claim their dividends 2) transfer their tokens to another account they control 3) claim dividends again from this different account)
  • work seamlessly with exchanges, without the exchanges having to ‘know’ about how or when dividends are distributed
  • no scaling limit to the number of token holders that can receive dividends
  • payable and stored in Ether or any ERC20 (i.e. DAI, TrueUSD, XCHF)

Note that investors must withdraw their tokens from a successful TokenSale, and collect their dividends after a dividend payout is deposited to a TokenizedProperty. This follows the Pull over Push best-practice pattern for Ethereum smart contracts.

Our implementation has been audited by New Alchemy and Chain Security, penetration tested by Hosho, and survived an on-going public bug bounty with HackerOne with no issues or vulnerabilities discovered in our smart contracts to-date.

This post was great inspiration and described the core algorithm/pattern we used to implement dividend functionality in our smart contracts. Special thanks to Nick Johnson