RealBlocks aims to create a robust DAPP built on the Ethereum blockchain by using a decentralized compliance protocol to trade crypto-securities on the blockchain. These crypto-securities will be designed to be compliant with relevant securities regulations.
There are three relevant contracts that are designed to work together to provide a compliant crypto-security:
- A RealBlocksToken contract: Maintains a list of Ethereum wallet addresses with how many tokens belong to each wallet address.
- A Regulator Service contract: Verifies that trading of the token only takes place between accredited investors. Additional rules can be added to this contract (for example, a rule for constraints on the number of token holders across regulation exemption status).
- A Service Registry contract: This contract can update the “Regulator Service contract” if it needs to change in the future.
In this section, we provide insight into how we are using the blockchain, as demonstrated through a hypothetical user interaction.
(Note: Terms in “quotes” are linked directly to Figure 15)
Step 1) Buying a token
After the user has added USD or Ether to their account, they can then “Buy Token”. At this point in the process, nothing has happened on the blockchain. All that has occurred is: “User 1’s Ethereum wallet address: 0x123” has been registered as someone who will receive a token once they are issued.
Step 2) Receiving a token
When tokens are issued, User 1’s Ethereum wallet address gets added to the list of token holders on the “RealBlocksToken” smart contract and thus written into the Ethereum blockchain. There is a verification written into the smart contract which excludes any wallet address beside the original contract deployer from performing this action.
Step 3) Trading a token
If User 1 wants to trade their token to User 2 (Ethereum wallet address 0x456), they will initiate a trade through the “RealBlocksToken” contract. Before this trade can be executed, “RealBlocksToken” contract verifies with the “RegulatorService” contract that User 2 is an approved token holder. This checking process is written into the smart contract (i.e. the user does not initiate the check, it happens automatically). The “RegulatorService” is maintained by RealBlocks - meaning it is up to RealBlocks to verify that the user is an approved token holder, and it is up to RealBlocks to add users to the whitelist. As with the “RealBlocksToken” contract, there is a verification written into the “RegulatorService” smart contract which excludes any wallet address beside the original contract deployer from performing this action.
Step 4) After the trade
When the trade successfully completes, the “RealBlocksToken” contract will update the list of token holders (0x123 now owns 0, 0x456 now owns 100).
Token Issuance and Transfer
Diagram of Contracts Inheritance Structure