Creating DeFi equity tokens

A case study from Switzerland

CrescoFin
CrescoFin
13 min readNov 23, 2020

--

  • First equity token from a regulated entity to be initially offered on Balancer and DODO Exchange.
  • First equity token protected by Swiss law.
  • First major token with no pre-sale, offered at early investor prices.
  • First use of a wrapped equity token.
  • Available in ETH, Dai and USDT.
  • Created using innovative open source software from The C-Layer Standard (MIT License).

Problem

While many Layer 1 tokens are genuinely not securities, most tokens issued by other entities probably are. People buy these tokens with the expectation that they will capture future cashflow benefits in some way or another. The biggest problem with a security token is regulation, which disincentivizes issuance. While regulation protects unwary buyers from scams, it also serves to protect incumbents, particularly in financial services where the regulatory barriers are highest.¹

The end result is a lot of lies, which is unhealthy for everyone.

Companies often lie to themselves and investors that their token design is based on some walled-garden use case or governance rights.² The reality is that most entities provide a service that they expect users to pay for in the future. To build the entity requires capital. People provide capital by buying tokens with the expectation that the success of the entity will be reflected in the token value in the future. By denying this, crypto companies are forced to twist themselves into knots. But, in DeFi, there is little alternative if you want to challenge the entrenched finance industry.

Regulators in some countries are often untruthful in failing to acknowledge that a heavy-handed application of regulation can harm society, not benefit it. (happily not in Switzerland). Almost everyone agrees that scams and money laundering are abhorrent and society should have protections in place, but that isn’t the point with most equity tokens. Particularly in finance, these are regulated mainly to protect the finance guild from competition. Not simply to protect society.

One potential solution might be complete decentralization, perhaps with anonymous teams.³ This has some drawbacks, such as making it hard to build a company in the early days if you need to connect to the real economy, it is unlikely that any institutions would use the products, etc.

Solution

Our solution was to design an equity token that follows the law here in Switzerland.

Here is a summary of Swiss law:

  • Swiss companies are required to maintain a registry of shareholders.
  • It is the obligation of someone who purchases the shares to inform the company that they wish to be included in the shareholder registry.
  • To register with the company, a shareholder must provide their name and address. The company has the right to refuse to register shareholders in certain circumstances, set out in the company’s statutes. There is no requirement for a company to undertake KYC on shareholders, although they may do so if they want.
  • Only those who officially register their shares are considered shareholders, and therefore eligible to vote and receive dividends.
  • Shares in the company may be freely traded on any exchange, without requiring the advance approval of the company.

As an example, anyone can purchase shares in Nestlé on the Swiss Stock Exchange. Some funds purchase the shares with the idea of selling them in the short-term and do not register them with Nestlé. Others wish to vote at the annual meeting and receive dividends, so they register the shares.

Here is what we wanted to achieve:

  1. Full investor protection, under Swiss law.
  2. No arbitrary power for the founders/company.
  3. Set a maximum number of shares that can ever be issued.
  4. Open to traditional and crypto investors.
  5. Set up transition framework to a DAO structure.
  6. Flexibility for future changes in the law.

Here is how we did it:

There is one equity share “unit” in the company, which can be held via two related ERC20 tokens, at the choice of the tokenholder.⁴ This facilitates low-gas-cost trading and reflects Swiss law.

wCRES Represents unregistered equity in the company. It is a simple token designed for easy trading on Balancer and DODO Exchange with low gas usage. A Uniswap pool will be added later.

wCRES address: 0xa0afAA285Ce85974c3C881256cB7F225e3A1178a

CRES Represents an equity shareholder interest registered with the company. This token contains voting and other functionality and uses more gas than the wCRES token.

CRES address: 0x81Df9EFB1E970517fF5B32C2F485f791f3410164

A tokenholder can easily swap wCRES tokens for CRES tokens, and vice versa. To swap to CRES tokens, the tokenholder has to provide basic KYC information to the company.⁵

Our GitHub repository is here: https://github.com/crescofin

These token functionalities have been implemented using v1.2 of The C-Layer Standard framework, an innovative open source software (under the MIT License). This can be seen here: https://github.com/c-layer/contracts

A summary of Swiss law and how this was reflected in the tokens is set out below.

Advantages to investors

  1. The equity tokens are protected under Swiss law.
  2. There are much less frictional costs trading the shares on Balancer and DODO Exchange than on the Swiss Stock Exchange.
  3. The shares (equity tokens) are available globally. (However, US Persons may not purchase the tokens at the moment).
  4. Shareholders may hold their own coins or delegate custody to CrescoFin (e.g. for traditional investors).¹⁰

How does the token protect investors?

  1. No admin keys for wCRES tokens.
  2. Non-custodial.
  3. Automatic swap rights in the wCRES smart contract, unless you are on a Swiss government sanctions list.¹¹ The wCRES token contract itself is the ‘factory’ for creating tokens. It self-contains the CRES tokens. There are no admin rights over this contract.
  4. All voting rights have been moved from the team to the voting contract.¹²
  5. Low governance participation hurdle (only 10 tokens required to propose a voting resolution).
  6. Team can be replaced.¹³

The company is more centralized than we would wish at the moment. For a regulated company that seeks to put real world collateral on-chain, with insurance, it is just a fact of life that this will take some time. We have a roadmap to community governance, including the implementation of a DAO-like voting/decision making structure.¹⁴ We also have Stani from Aave advising us on how to decentralize as much as possible.

The KYC process

The KYC process is simple and common-sense and corresponds to Swiss law. While we do not have to do KYC, we insist on doing so.

  1. A tokenholder contacts the company (community@crescofin.ch) indicating that they wish to register. They need to provide their name, address and a photo ID. For the photo ID, this will be confirmed in a video call with the company; instructions will be communicated to tokenholders. Do not send your photo ID via email.
  2. To prove that they control the Ethereum address, the company will ask the tokenholder to send an email message that contains a hash signed with the user’s key. Instructions will be sent to the tokenholder after they contact the company requesting to be registered.
  3. The company checks that the tokenholder is not on a Swiss government sanctions list. If they are, then they will not be allowed to register. If no, then they will be registered. (Note: US Persons are currently not eligible to register). The company is attempting to operate in as non-arbitrary manner as possible, while still protecting its reputation and respecting its regulatory status.
  4. An anonymous registry of approved addresses is maintained on-chain.
  5. The database of registered users is maintained by the company at our headquarters in Switzerland, in a computer that is not connected to the internet, to protect users’ data.
  6. Once users/addresses are approved and included in the on-chain registry, they are automatically authorized to swap wCRES tokens for CRES tokens via the wCRES smart contract. They can also swap from CRES tokens to wCRES tokens, at their free discretion.
  7. Registered addresses are also automatically eligible to invest in our regulated financial products in the future, if they wish.

Detailed explanation

How to convert from wCRES to CRES tokens?

The wCRES tokens will initially be listed on Balancer and DODO Exchange. A Uniswap pool is planned post the initial listing. Anyone may purchase these tokens, except US Persons.

For tokenholders to exchange to the CRES tokens (and become a registered shareholder in the company), the process is simple:

1. A tokenholder must contact the company (community@crescofin.ch) to register in the shareholder registry. This gives the eligibility to swap from wCRES to CRES tokens.

2. A tokenholder must provide their name, address, and ID. If the tokenholder is on a Swiss government sanctions list or is a US Person, they will not be allowed to register. Otherwise, the tokenholder will be entered in the registry.

3. To prove that the person sending us the email has control over the Ethereum address that holds the wCRES tokens, the sender must sign the email with their private keys using a verifySig tool. The company will provide instructions to those wishing to swap to the CRES token.

4. The tokenholder specifies the number of tokens they wish to convert (i.e. the number of wCRES tokens that they wish to convert to CRES tokens). Then they call the withdraw function from the wCRES contact to their wallet/Ethereum address.

This conversion process is guaranteed and enforced by the smart contract.

How to convert from CRES to wCRES tokens?

1. The tokenholder calls the approve function on the CRES contact for the maximum amount of CRES tokens that can be transferred by the wCRES smart contract.

2. The tokenholder calls the deposit function from the wCRES contract, indicating the number of CRES tokens they wish to convert.

This conversion process is guaranteed and enforced by the smart contract.

Dapp

While users can interact directly with the wCRES Smart Contract if they wish, a Dapp is available on our website to simplify the process:

Traditional shareholders

Traditional shareholders may also hold equity tokens in CrescoFin. We have made it possible for these investors to purchase shares from us. We then create wallets and Ethereum addresses for them. CrescoFin is regulated in Switzerland and authorized to provide custody services.¹⁰

Voting

Voting contract: 0x9fc4e56d4b345f18FfD4866084E8A5097dE5B5c8

Any CRES tokenholder who holds 10 tokens or more may propose a resolution to be voted on.

An agent, called the Quaestor, facilitates the voting process by submitting proposals. The Quaestor is elected by the community and is particularly useful to assist with spam and bad actors trying to block the vote. For example, the Quaestor may add proposals at times where bad actors flood the number of proposals.

Anyone who holds 1 or more CRES tokens may vote.

The voting process is made up of periodic voting sessions.

Each voting sessions is made of the steps set out below.

A voting session is automatically created whenever a new proposal is added either during the last voting session (after the grace period) or at any time afterward. The voting session will then be scheduled for the next voting date available.

The voting session parameters are set out below. The parameters themselves may be modified by the community, if they wish.

The required majority for voting, and quorum, are set out below. These are designed to prevent any one person/group from having undue influence.

These rules can also be adjusted for each contract operation.

The most important functions in the voting contract are set out below.

  • Define a proposal
  • Submit a vote
  • Execute resolution

The statutes of the company have been modified to reflect the voting procedures set out in the voting contract.

Sponsor vote function

At any time, a sponsor may be defined by any participant; this is essentially where a tokenholder delegates their vote to another address. Either the participant or the sponsor will be able to vote in all upcoming sessions.

To activate this functionality, the tokenholder simply needs to call the defineSponsor function of the voting smart contract, passing (entering) as argument the address of the sponsor. This address that will be allowed to vote on their behalf. To revoke the delegation powers, the tokenholder simply calls the defineSponsor function again and passes a null address as the address for a sponsor.

Off-chain voters

Traditional shareholders may vote as well, off-chain, even if they do not manage their own tokens. They may do this through a voting panel on the company’s website, which is synced to the on-chain voting process. By following this online process, the traditional investors agree that CrescoFin, as the custodian, executes their votes on-chain. Access is only available to these users.

Alternatively, shareholders may send a formal letter to the company instructing us on how to vote. We will confirm shareholders’ identity and instructions by video call.

Dividends

The company intends to pay dividends to holders of CRES tokens in the future, after a build-out phase.

At the moment, Swiss law requires that dividends are sent to a physical address or a bank account. However, under proposed legislation, it seems possible that dividends may be paid directly on-chain. When possible, the company will pay all dividends on-chain.

Minting

There is no possibility to mint further tokens. This has been enforced by calling the finishMinting() function. The team has no ability to undue this action.

Dividing tokens

The wCRES token has 18 decimals, meaning effectively that a tokenholder may divide it into 18 separate units. These units may be traded individually.¹⁶

About CrescoFin

Founded in 2019, CrescoFin SA is a Financial Services company offering insured Certificates of Deposit to institutional and private clients, by harnessing the security and transparency of blockchain technology in trade finance transactions. Deposits are held in several denominations including US Dollars, Swiss Francs, and Euros, as well as digital currency. The company is incorporated and regulated in Switzerland and its digital equity tokens (wCRES) are listed on the Uniswap exchange.

Website | Discord | Twitter | Telegram | Reddit | LinkedIn | YouTube

Bloomberg: CREFIN |USD ISIN CH0558513484 | CHF ISIN CH0558513468 | EURO ISIN CH0558513476

Advisors

  • Stani Kulechov, Founder of Aave
  • Diane Dai, Co-Founder of the DODO Exchange
  • Damian Horner, Co-Founder, Real Vision
  • The Crypto Dog, Investor
  • Ryan Sean Adams, Co-Founder at Bankless
  • David Hoffman, Co-Founder at Bankless
  • David Gokhshtein, Founder of Gokhshtein Media

In the Media:

Real Vision

The Defiant

Bankless

References

[1] Of course, financial services should be regulated to protect society from money laundering. However, finance mainly has high regulatory barriers because fractional reserve banking causes such volatility in the economy.

[2] Some utility is derived from internal use in some projects, however most token values come from anticipated future cashflows. Governance token value mainly is predicated on the tokenholders voting future cashflows to the tokens.

[3] There are some issues: anonymity is probably hard to achieve in practice if law enforcement is looking for you; it probably isn’t a formula for living your best life; any admin key might mean not considered decentralized, etc.

[4] A CRES is wrapped and unwrapped (meaning, it is minted and burned) at the choice of the tokenholder based on their interaction with the wCRES contract. Tokenholders will possesses two tokens in their wallet: wCRES (for trading) and CRES (for voting and dividends, at least until Swiss law updates to allow us to send dividends automatically to wallets). The exact number of shares owned by a tokenholder will be the sum of the balances for the two tokens. For example, if someone purchases 100 wCRES tokens and then choses to unwrap 20 of them to swap to CRES tokens, their balance will be 80 wCRES and 20 CRES; this balance will always equal 100. More details can be found here: https://github.com/c-layer/contracts/blob/master/distribution/contracts/WrappedERC20.sol

[5] The company has adopted a formulaic approach to KYC, so as to avoid the company having any arbitrary powers. If the tokenholder is on a Swiss government sanctions list, they will not be allowed to register. If not, they will be allowed to register and be eligible to swap wCRES tokens into CRES tokens.

[6] The company statutes have been modified from the standard form to remove any ability for the company to reject a shareholder (unless they are on a Swiss government sanctions list). Note also that US Persons are not currently allowed to purchase the tokens.

[7] These shares will not be eligible for voting until they are allocated to future investors or employees.

[8] The finishMinting function has been called.

[9] The CRES shares could also, in theory, be traded as well. However, as the wCRES tokens optimize the gas costs, it is more efficient to trade them.

[10] Even though we recommend that everyone to do their own custody.

[11] Or a US Person, for the moment.

[12] All key privileges have been transferred from the CrescoFin operator (i.e. the token creator) to the voting contract, to reduce the power of the team. All actions executed by the CrescoFin operator during the token deployment can be verified on Etherscan using this public address: 0x942f023715860d411C5c93Da1bFb00b40576ae11

[13] CrescoFin is the Core Owner. The community has the ability to replace the Core Owner. As the company is regulated under Swiss law, a new Core Owner would also have to be regulated. While this may not be a likely scenario, at least the community has the right to make this change, which may influence team behaviour.

[14] Details of the voting contract can be seen here: 0x9fc4e56d4b345f18FfD4866084E8A5097dE5B5c8

[15] During this period, the voting proposals are “locked” and cannot be modified.

[16] The CRES token cannot currently be divided, under Swiss law. It is possible that this may change in the future.

--

--

CrescoFin
CrescoFin

A fully insured, high-interest savings account. In fiat and crypto. For everyone, anywhere.