# 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:

```jsx
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".

```jsx
{
	"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

```jsx
{
	"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:

```jsx
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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.minted.network/minted-help-centre/memeted-and-inscriptions/inscriptions-marketplace-standard.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
