You can enhance your CW20 token with rich metadata such as website, social links, full description, images, and legal/audit info β stored off-chain and referenced from marketing_info.project in your smart contract.
Note: Axiome Wallet and Explorer will support rendering this extended metadata in upcoming releases. Stay tuned to official update channels for announcements.
Step 1: Prepare Extended Metadata
The extended metadata must be stored as a JSON file hosted on a publicly accessible URL. The URL will be placed in the CW20 marketing_info.project field with SHA-256 checksum verification to ensure data integrity.
JSON Format Specification
Here is the approved format of the metadata file:
{"version":"1.0","name":"MyToken","symbol":"MTK","website":"https://mytoken.example.com","description": {"format":"markdown","image_url":"https://mytoken.example.com/images/logo-large.png","video_url":"https://www.youtube.com/@axiome_ru","content":"Full token description in markdown or plain text, no more then 60k symbols..." },"socials": {"X (ex. Twitter)":"https://twitter.com/mytoken","Telegram":"https://t.me/mytokenchat","Discord":"https://discord.gg/mytoken","GitHub":"https://github.com/mytoken" },"legal": {"terms_url":"https://mytoken.example.com/terms","privacy_url":"https://mytoken.example.com/privacy" },"audit": [ {"provider":"Certik","url":"https://certik.com/projects/mytoken","date":"2024-12-01" } ],"contacts": {"email":"[email protected]","support_url":"https://mytoken.example.com/support" }}
Notes:
description.format must be either "markdown" or "text"
any fields except version, name, symbol can be set to null if not used
socials can include any keys (e.g., TikTok, Instagram, etc.)
Step 2: Calculate SHA-256
To ensure the metadata has not been tampered with, calculate its SHA-256 checksum (of the raw file content).
On Linux/macOS:
On Windows (PowerShell):
Suppose the result is:
Step 3: Upload Project Info to the Contract
CW20 contracts support setting marketing_info.project with a URL that includes the sha256sum as a query parameter.
Example axmd TX to set the project info:
Replace:
<contract_address> β with the CW20 contract address
<your_wallet_name> β with your wallet (keyring) name
Done!
Once the transaction is confirmed, your token will have a verifiable extended metadata link accessible via marketing_info.project.
Axiome Wallet, Axiome Explorer, and dApps can parse this JSON and render: