Market Creation

Markets on the Teller protocol can be created through Teller MarketRegistry contract.

Create a market

/**
 * @notice Creates a new market.
 * @param _initialOwner Address who will initially own the market.
 * @param _paymentCycleDuration Length of time in seconds before a bid's next payment is required to be made.
 * @param _paymentDefaultDuration Length of time in seconds before a loan is considered in default for non-payment.
 * @param _bidExpirationTime Length of time in seconds before pending bids expire.
 * @param _requireLenderAttestation Boolean that indicates if lenders require attestation to join market, meaning
            if the market owner wants the lender to be KYC'ed then we enable this as True else it will be False
 * @param _requireBorrowerAttestation Boolean that indicates if borrowers require attestation to join market, meaning
            if the market owner wants the borrower to be KYC'ed then we enable this as True else it will be False
 * @param _uri URI string to get metadata details about the market.
 */
function createMarket(
   address _initialOwner,
   uint32 _paymentCycleDuration,
   uint32 _paymentDefaultDuration,
   uint32 _bidExpirationTime,
   uint16 _feePercent,
   bool _requireLenderAttestation,
   bool _requireBorrowerAttestation,
   string calldata _uri
)

With the _requireLenderAttestation and _requireBorrowerAttestation, market owners have the option to require their users to be verified through an attestation service, before being allowed to interact with the market. It is then up to the market owner's discretion to include them in their market.

Details of the market are defined through the _uri parameter, which should point to a JSON file that follows this schema. The schema contains all the relevant metadata of the market.

The documentation here gives information for markets that are interested to launch with no KYC for lender or borrowers. If the market owner wishes to create a market with KYC then we would suggest you reach out to us via Discord & we will help you get set up in no time.

Example of a Teller Market metadata

Create a JSON file on your computer with the below template.

{
  "type": "public",
  // Name of the market.
  "name": "Example Market",
  // General description of the market's purpose.
  "description": "This market is an example to showcase what a market should look like.",
  // URI link to the market's website.
  "website": "https://example-market.com",
  // If KYC is required, this link will be shown to users that would like to join.
  "inviteLink": "https://example-market.com/invite",
  "branding": {
    // Image to showcase on the Teller Marketplace.
    "logo": "ipfs://ipfs/...",
    "backgroundColor": "#80E3FF",
    "highlightColor": "#292B2C"
  },
  "jurisdiction": {
    // A valid 2-digit ISO country code (ISO 3166-1 alpha-2). Can also be an array of ISO codes.
    "countryCode": "US"
  },
  // Type of asset that the market is for (Auto, Home, etc.)
  "assetClasses": [
    "Consumer Credit - Unsecured"
  ]
}

Below are the valid asset classes that may be used in the market's metadata. If you think the asset class you would like to offer is missing then please don't hesitate to reach out to us.

  • Consumer Credit - Buy Now, Pay Later

  • Consumer Credit - Marketplace Lending

  • Consumer Credit - Auto Loan

  • Consumer Credit - Student Loan

  • Consumer Credit - Secured

  • Consumer Credit - Unsecured

  • Residential - Mortgage

  • Commercial RE - Bridge Loans

  • Commercial - Secured

  • Small Business - Revenue Based Financing

  • Crypto Business - Crypto Investment Loans

The below items are mandatory to create a market schema, the rest are optional.

  • type

  • name

  • description

  • website

  • assetClasses

Save the above JSON file on your computer & check here for an easy way to upload to IPFS.

Market Owner On-Boarding

If the above code is confusing no worries, we are building a GUI that will make things very easy for the market owners to create a market of their own. Sharing screenshots of the front end that we are building for our Market owners.

Setup your Market by choosing:

  • Geography the market place owner would like to operate

  • Asset class the loans would belong to

  • Name & website of your company

Create the broad rules in the market by setting the below variables. If you are not clear what the below terms mean, we suggest you to read the definitions of the variables in the Create Market section, which is at the top of the current page.

Finalize what sort of access you would want to provide to the lender. This would depend on the nature of the market, so pick based on the needs to the market or you can reach out to us on Discord and we will help you out.

Close a market

If a market owner wishes to close their market on the Teller protocol, they can call the closeMarket function on the Teller MarketRegistry contract.

/**
 * @notice Closes a market so new bids cannot be added.
 * @param _marketId The market ID for the market to close.
 */
function closeMarket(uint256 _marketId)

Last updated