Inscriptions Marketplace Standard

Pre-Listing

Before putting inscriptions on sale on Cronos, the user needs to transfer the inscriptions to the marketplace custodian account. This can be done by initiating a CRC-20 Inscription transfer with the following data fields:

  • From address: The inscription ownerโ€™s address

  • To address: The marketplace custodianโ€™s address

  • Payload:

data:,{"p":"crc-20","op":"transfer","tick":"cros","amt":"1000"}

After the indexing service has captured such a transfer event, the inscription balance will be deducted from the user's account and credited to the marketplace custodian's account. This pre-listing procedure ensures that the ownership of the inscription is protected against double-spending attacks on inscriptions.

Listing and Unlisting

After sending the inscription to the marketplace custodian account, the user can generate the following payload. They should then sign and send it to the marketplace to express their intent to list the Inscription they own. This data is referred to as "the offer data".

{
	"p":"crc-20",
	"op": "list",
	"nonce": "<nonce data generated by user>",
	"timestamp": 1702891000, // current time in unix timestamp
	"tick": "cros",
	"seller": "<EVM address of the seller>",
	"via": "<EVM address of the marketplace custodian>",
	"amount": 1000,
	"price": 100000000000, // price in basecro, for each unit of Inscription,
	"expired": 1702891983, // offer only valid before this unix timestamp
	"sig": "<signature data>" // signature generated by user's EVM-compatible wallet
}

After receiving the listing data, the marketplace backend will perform a round of validity check, and finally lock up Inscription balance from the userโ€™s available balance.

User can also generate, sign and send this data to the marketplace for unlisting an Inscription

{
	"p":"crc-20",
	"op": "unlist",
	"seller": "<EVM address of the seller>",
	"via": "<EVM address of the marketplace custodian>",
	"nonce": "<nonce of the listing data>",
	"timestamp": 1702891000, // current time in unix timestamp
	"sig": "<signature data>" // signature generated by user's EVM-compatible wallet
}

After receiving the unlisting data, the marketplace backend release balance from the userโ€™s lock-up balance.

Purchasing

Any buyer can send the following text to the marketplace custodian's address and make a sufficient payment along with the Inscription transaction. The transaction value must be equal to or higher than the offered asking amount. The offer data must be attached in the Inscription transaction text using the following payload format. It is important to keep all offer data unchanged, as any modifications will violate the purchasing operation.

Payload:

data:,[{
	"p":"crc-20",
	"op": "list",
	"nonce": "<nonce data generated by user>",
	"timestamp": 1702891000,
	"tick": "cros",
	"seller": "<EVM address of the seller>",
	"via": "<EVM address of the marketplace custodian>",
	"amount": 1000,
	"price": 100000000000, 
	"expired": 1702891983, 
	"sig": "<signature data>"
}]

Once the indexing service has picked up an Inscription transaction, we will proceed with the following steps to settle the trade.

  • Verify if the user's lock-up balance has sufficient funds to fulfill this order.

  • Verify the offer data is still valid and itโ€™s not been cancelled.

  • Verify if the payment made by the buyer is equal to or higher than the offer asking amount. The offer asking amount is calculated as the price multiplied by the amount specified in the offer data.

If all checks pass, we will perform the Inscription transfer and CRO transfer simultaneously. The Inscription transfer is used to transfer the sold Inscription to the new buyer, while the CRO transfer is used to credit the seller's CRO balance. The offer data will be then removed, after all trades are settled.

If any of the checks above failed, we consider this purchase as an invalid operation, and we will refund the entire CRO balance to the user who made the original purchase. However, the offer data will still be considered valid.

This two-step procedure helps us avoid the risk of Inscription double-spending in today's volatile market.

Last updated