# Why contract upgrading is required

Upgrading a collection contract is required for any studio that wants to integrate external assets through the Interoperable Asset Store. Collections created directly through the Asset Store are already compatible, but third-party collections lack the built-in logic needed to guarantee correct royalty routing, secure parent–child linkage, and reliable verification of asset origin.

To become fully compatible, an external collection must inherit the protocol’s **AbstractGamingStudioAsset** standard. This abstract contract provides the essential functions that enforce protocol rules at the smart contract level.

The most important responsibilities of the abstract standard are:

* **Setting royalties to the correct recipient** after a reuse proposal is approved
* **Ensuring that the royalty percentage inherits from the parent asset** and cannot be modified
* **Providing a mint function** used specifically for integrating assets from another collection
* **Validating the origin of the integrated asset** to confirm that the child asset correctly references the parent asset
* **Enforcing the correct parent–child relationship** so that the lineage remains secure and verifiable on the protocol

Without this upgrade, the collection cannot guarantee immutable royalty behavior or secure parent–child connections. As a result, the protocol does not allow reuse proposals to be submitted when the selected collection is not compatible with the required integration standard.

Upgrading brings third-party collections into full compliance, ensuring:

* royalties are always routed to the correct creator and studio
* child assets are minted with verified origin
* no contract can bypass or manipulate royalty rules
* parent–child relationships remain consistent and secure across the ecosystem

This upgrade requirement protects creators, preserves economic integrity, and ensures that all integrated assets follow the same predictable rules inside the Interoperable Asset Store.


---

# 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://infinity-games.gitbook.io/infinity-games-docs/smart-contract-integration/why-contract-upgrading-is-required.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.
