SFT Protocol

The SFT protocol is a set of compliance-oriented smart contracts built on the Ethereum blockchain that allow for the tokenization of debt and equity based securities. It provides a robust, flexible framework allowing issuers and investors to retain regulatory compliance throughout primary issuance and multi-jurisdictional secondary trading.

How it works

SFT expands upon the ERC20 token standard. Tokens are transferred via the transfer and transferFrom functions, however the transfer will only succeed if approved by a series of permissioning modules. A call to checkTransfer returns true if the transfer is possible. The standard configuration includes checking a KYC/AML whitelist, tracking investor counts and limits, and restrictions on countries and accredited status. By implementing other modules a variety of additional functionality is possible so as to allow compliance to laws in the countries of the issuer and investors.


  1. Security Token

    1. ERC20 compliant tokens intended to represent a claim to ownership of securities
    2. Modules may be applied to each security token to add additional permissioning or functionality
  2. Issuing Entity

    1. Central owner contract for tokens created by the same issuer
    2. Modules may be applied at this level that introduce permissioning / functionality to all associated security token contracts
  3. KYC Registrar

    1. Whitelists that provide identity, region, and accreditation information of investors based on off-chain KYC/AML verification
  4. Custodian

    1. Contracts that represent an entity approved to hold tokens for multiple investors
    2. Base interface that allows for wide customisation depending on the needs of the owner
  5. Modules
    1. Wide range of functionality that modules can hook into allows for many different applications

Testing and Deployment

Unit testing and deployment of this project is performed with brownie.

Third-Party Integration

See Third Party Integration for in-depth details.