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
Field | Type | Required | Description |
---|---|---|---|
name | String | X | Name of the contract - stored as a property of the contract on-chain. |
symbol | String | Symbol of the token - stored onchain. The symbol is usually 3 or 4 characters in length. | |
defaultAdmin | String | X | The 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. |
primarySaleRecipient | String | X | The recipient address for first-time sales. |
platformFeeRecipient | String | The 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. | |
platformFeePercent | Float | The 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. | |
contractUri | String | The URL for the marketplace metadata of your contract. This is used on marketplaces like OpenSea. See Contract-level Metadata for more information. | |
trustedForwarders | []String | A 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
Field | Type | Required | Description |
---|---|---|---|
name | String | X | Name of the contract - stored as a property of the contract on-chain. |
symbol | String | Symbol of the token - stored onchain. The symbol is usually 3 or 4 characters in length. | |
defaultAdmin | String | X | The 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. |
primarySaleRecipient | String | X | The recipient address for first-time sales. |
platformFeeRecipient | String | The 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. | |
platformFeePercent | Float | The 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. | |
royaltyRecipient | String | X | The recipient address for all royalties (secondary sales). This allows the contract creator to benefit from further sales of the contract token. |
royaltyPercent | Float | X | The 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. |
contractUri | String | The URL for the marketplace metadata of your contract. This is used on marketplaces like OpenSea. See Contract-level Metadata for more information. | |
trustedForwarders | []String | A 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
, androyaltyRecipient
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
Field | Type | Required | Description |
---|---|---|---|
name | String | X | Name of the contract - stored on-chain. |
symbol | String | Symbol of the token - stored onchain. The symbol is usually 3 or 4 characters in length. | |
defaultAdmin | String | X | The address of the default admin. This address can execute permissioned functions on the contract. |
primarySaleRecipient | String | X | The recipient address for first-time sales. |
platformFeeRecipient | String | The recipient address for all sale fees. | |
platformFeePercent | Float | The 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. | |
royaltyRecipient | String | X | The recipient address for all royalties (secondary sales). This allows the contract creator to benefit from further sales of the contract token. |
royaltyPercent | Float | X | The 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. |
contractUri | String | The URL for the marketplace metadata of your contract. | |
trustedForwarders | []String | A 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
, androyaltyRecipient
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
}
Updated 15 days ago