# Architecture

### Cross-chain NFT Architecture <a href="#heading-h.rx53l09ug239" id="heading-h.rx53l09ug239"></a>

![](https://2715307666-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8LlgV3MBSGytSM2WhA1g%2Fuploads%2FIJI8fdRR1YKX00yfmBki%2F0.png?alt=media)

Pixelport leverages Analog GMP capabilities to bridge NFTs cross-chain. At the core of Analog GMP lies two functions that facilitate the transfer of NFTs across supported blockchains:

* **`submitMessage()`**`:` This function is called on the IGateway interface to send a cross-chain message from the source contract to the Gateway Smart Contract (GSC) on the source chain. When called, the `submitMessage()` method forwards the cross-chain NFT message to the destination chain.
* **`onGmpReceived()`**: This method is implemented within the IGmpReceiver interface to receive and process the cross-chain NFT message on the destination chain.

Check out [Analog GMP docs](https://docs.analog.one/documentation/developers/analog-gmp) for a detailed overview of the protocol.

The Pixelport’s bridging mechanism consists of the following steps:

**Origin chain:**

* A user creates a bridge request on the Pixelport App.
* The Pixelport App calls the `submitMessage()` function, which burns the NFT on the origin chain.
* A `burn` event is emitted and validated by the shard assigned to that blockchain.

**Messaging:**

* The Timechain executes the transaction and creates a GMP message for the destination shard to process.

**Destination chain:**

* The destination shard randomly selects a Signer. The Signer sends and executes the transaction by calling the `execute()` function, and the GSC emits the `GmpExecuted` event.
* The GSC calls the `onGmpReceived()` function on the destination contract to mint the NFTs on the destination blockchain.
