What is a Passport?

Passports are program derived addresses (PDAs) whose address is determined by a namespace (e.g. solarplex) and an identifier (e.g. [email protected]).

What does it cost to create a Passport?

Passports are free. Since compressed NFTs do not require a token account, the on-chain account for the Passport does not need to be initialized (no need to pay rent on-chain).

Only when a user wants to transfer or burn assets in their Passport does the Passport need to be activated. We minimize the size of the account to keep the cost as small as possible (~0.001 SOL).

How do you verify that a user owns a Passport?

Users sign in to Passport with OAuth2 (e.g. sign in with Google). Users then sign a transaction to “activate” a Passport, with the wallet signing the transaction becoming the designated signer to transfer & burn assets that Passport owns.

What happens when Passports are activated?

When a Passport is activated, the on-chain account is initialized and stores the wallet address of the designated signer to transfer & burn assets that Passport owns. This requires ~0.001 SOL to cover the on-chain storage cost for the account.

How can I create non-transferable NFTs with Passport?

Since the core compressed NFT program Bubblegum does not have non-transferability built in, you need to use Passport.

By setting delegated: true in the request body when you mint an NFT, the Passport cannot transfer NFTs that are delegated.


Can I activate a user's Passport address on my own application?

We're still building out the ability for applications to own namespaces with their own signer so they can activate passports for their namespace.

For example the namespace “solarplex” could be owned by the engineering team at Solarplex and they can activate Passports within the “solarplex” namespace.