Smart Contract Template Glossary

Explore Circle's Comprehensive Templates and Deployment Parameters

Token (ERC-20)

The Token template creates a customized, fully compliant ERC-20 smart contract. An ERC-20 contract keeps track of fungible tokens.

Template ID: a1b74add-23e0-4712-88d1-6b3009e85a86

Template Deployment Parameters

FieldTypeRequiredDescription
nameStringXName of the contract - stored as a property of the contract on-chain. 
symbolStringSymbol of the token - stored onchain. The symbol is usually 3 or 4 characters in length.
defaultAdminStringXThe address of the default admin. This address can execute permissioned functions on the contract. You will lose administrative access to the contract if this is not set to an address you control.
primarySaleRecipientStringXThe recipient address for first-time sales.  
platformFeeRecipientStringThe recipient address for all sale fees. If you are deploying a template on someone else’s behalf, you can set this to your own address.
platformFeePercentFloatThe percentage of sales that go to the platform fee recipient. For example, set as 0.1 if you want 10% of sales fees to go to platformFeeRecipient. 
contractUriStringThe URL for the marketplace metadata of your contract. This is used on marketplaces like OpenSea. See Contract-level Metadata for more information. 
trustedForwarders[]StringA list of addresses that can forward ERC2771 meta-transactions to this contract. See ethereum.org for more information. 

Here is an example of the templateParameters JSON object within the request body to deploy a contract from a template for the Token template.

...
"templateParameters": {
  "name": "My Token Contract",
  "defaultAdmin": "0x4F77E56dfA40990349e1078e97AC3Eb479e0dAc6",
  "primarySaleRecipient": "0x4F77E56dfA40990349e1078e97AC3Eb479e0dAc6"
}

NFT (ERC-721)

The NFT template creates a customized, fully compliant ERC-721 smart contract. Unlike the fungible tokens created by the Token template, NFTs represent ownership of a unique digital asset or collectible - hence, they are non-fungible.

Template ID: 76b83278-50e2-4006-8b63-5b1a2a814533

Template Deployment Parameters

FieldTypeRequiredDescription
nameStringXName of the contract - stored as a property of the contract on-chain. 
symbolStringSymbol of the token - stored onchain. The symbol is usually 3 or 4 characters in length.
defaultAdminStringXThe address of the default admin. This address can execute permissioned functions on the contract. You will lose administrative access to the contract if this is not set to an address you control.
primarySaleRecipientStringXThe recipient address for first-time sales. 
platformFeeRecipientStringThe recipient address for all sale fees. If you are deploying a template on someone else’s behalf, you can set this to your own address.
platformFeePercentFloatThe percentage of sales that go to the platform fee recipient. For example, set it as 0.1 if you want 10% of sales fees to go to platformFeeRecipient. 
royaltyRecipientStringXThe recipient address for all royalties (secondary sales). This allows the contract creator to benefit from further sales of the contract token.
royaltyPercentFloatXThe percentage of secondary sales that go to the royalty recipient. For example, set it as 0.05 if you want royalties to be 5% of secondary sales value.
contractUriStringThe URL for the marketplace metadata of your contract. This is used on marketplaces like OpenSea. See Contract-level Metadata for more information. 
trustedForwarders[]StringA list of addresses that can forward ERC2771 meta-transactions to this contract. See ethereum.org for more information. 

Here is an example of the templateParameters JSON object within the request body to deploy a contract from a template for the NFT template. 

📘

In this example, the defaultAdmin, primarySaleRecipient, and royaltyRecipient are the same address but can be set distinctly based on your use case.

...
"templateParameters": {
  "name": "My NFT Contract",
  "defaultAdmin": "0x4F77E56dfA40990349e1078e97AC3Eb479e0dAc6",
  "primarySaleRecipient": "0x4F77E56dfA40990349e1078e97AC3Eb479e0dAc6",
  "royaltyRecipient": "0x4F77E56dfA40990349e1078e97AC3Eb479e0dAc6",
  "royaltyPercent": 0.05
}

Multi-Token (ERC-1155)

The ERC-1155 Multi-Token template creates a smart contract that can represent and control any number of fungible (ERC-20) and non-fungible (ERC-721) token types. 

Template ID: aea21da6-0aa2-4971-9a1a-5098842b1248

Template Deployment Parameters

FieldTypeRequiredDescription
nameStringXName of the contract - stored on-chain.
symbolStringSymbol of the token - stored onchain. The symbol is usually 3 or 4 characters in length.
defaultAdminStringXThe address of the default admin. This address can execute permissioned functions on the contract.
primarySaleRecipientStringXThe recipient address for first-time sales.
platformFeeRecipientStringThe recipient address for all sale fees. 
platformFeePercentFloatThe percentage of sales that go to the platform fee recipient. For example, set it as 0.1 if you want 10% of sales fees to go to platformFeeRecipient. 
royaltyRecipientStringXThe recipient address for all royalties (secondary sales). This allows the contract creator to benefit from further sales of the contract token.
royaltyPercentFloatXThe percentage of secondary sales that go to the royalty recipient. For example, set it as 0.05 if you want royalties to be 5% of secondary sales.
contractUriStringThe URL for the marketplace metadata of your contract. 
trustedForwarders[]StringA list of addresses that can forward ERC2771 meta-transactions to this contract.

Here is an example of the templateParameters JSON object within the request body to deploy a contract from a template for the Multi-Token template.

📘

In this example, the defaultAdmin, primarySaleRecipient, and royaltyRecipient are the same address but can be set distinctly based on your use case.

...
"templateParameters": {
  "name": "My Multi-Token Contract",
  "defaultAdmin": "0x4F77E56dfA40990349e1078e97AC3Eb479e0dAc6",
  "primarySaleRecipient": "0x4F77E56dfA40990349e1078e97AC3Eb479e0dAc6",
  "royaltyRecipient": "0x4F77E56dfA40990349e1078e97AC3Eb479e0dAc6",
  "royaltyPercent": 0.05
}