OGAL Program Reference
This reference summarizes the live OGAL on-chain program and the Anchor layout used by the current owner_governed_asset_ledger implementation.
Program IDs (mainnet-beta)
| Item | Value |
|---|---|
| Program ID | GwMpopxNkDYsnucBRPf47QSEsEzA3rS1o6ioMX78hgqx |
Token Toss OGAL namespace values (mainnet-beta)
| Item | Value |
|---|---|
| Maintainer authority | nanoNv13vp2NetbjudoCZgc2EvWs54JdtDkrmJpTDNJ |
| Canonical namespace | 3Bc5ARkDGM2ZdAe8EjwHMmNrXvpSzQVcPug7MSp4Qhbw |
| Canonical config PDA | 5bhVoogdhY5VYuLuUuMXaiNrvP4zbmP1wNWstUUvmiF5 |
| Mint-authority PDA | G7skWhSjK6oskMKMuCbVuRQSVvrhc1VN1nQYLHR8ewL5 |
| Collection mint | EhULHuQtpaKUZSdv1kQR7XwYGRfEaU8b1Y7JkbFGQHxW |
The namespace/config PDA/collection mint values above are for the Token Toss UGC Level Data dataset. Other datasets can use the same program ID while pointing at distinct namespaces, derived PDAs, and collection mints.
PDA seed recipes
| PDA | Seeds |
|---|---|
| Config | ['config', namespace_pubkey] |
| Auth | ['auth', config_pubkey] |
| Object Manifest | ['object_manifest', config_pubkey, object_id_le_bytes] |
| Object Mint | ['object_mint', object_manifest_pubkey] |
Account layouts
Config (PDA)
| Field | Type | Notes |
|---|---|---|
| authority | Pubkey | Registry authority |
| config_bump | u8 | PDA bump |
| auth_bump | u8 | Auth PDA bump |
| object_count | u64 | Minted object count |
| namespace | Pubkey | Namespace key |
| paused | bool | Mint pause flag |
Auth (PDA)
| Field | Type | Notes |
|---|---|---|
| config | Pubkey | Owning config |
| bump | u8 | PDA bump |
ObjectManifest (PDA, zero-copy)
| Field | Type | Notes |
|---|---|---|
| config | Pubkey | Owning config |
| object_id | u64 | Stable object identifier |
| mint | Pubkey | Object mint (PDA) |
| bump | u8 | Manifest PDA bump |
| mint_bump | u8 | Mint PDA bump |
| is_active | u8 | Active flag (0/1) |
| minted | u8 | Minted flag (0/1) |
| initialized | u8 | Initialized flag (0/1) |
| manifest_hash | [u8; 32] | Content hash |
| metadata_uri | [u8; 128] | Fixed-size URI buffer |
| metadata_uri_padding | u8 | Padding marker |
| metadata_uri_length | u16 | Actual URI length |
| creator | Pubkey | Recorded creator |
metadata_uriuses a fixed 128-byte buffer; themetadata_uri_lengthfield indicates the actual string length.
Instruction schemas
initialize
Args: namespace: Pubkey
Accounts:
authority(signer)payer(signer)config(PDA:['config', namespace])auth(PDA:['auth', config])system_program
set_authority
Args: new_authority: Pubkey
Accounts:
authority(signer)config(PDA:['config', namespace])
rotate_collection_authority
Args: new_update_authority: Pubkey
Accounts:
authority(signer)config(PDA:['config', namespace])auth(PDA:['auth', config])collection_metadata(Metaplex metadata PDA)collection_minttoken_metadata_program
mint_object_nft
Args:
object_id: u64manifest_uri: Stringmanifest_hash: [u8; 32]metadata_name: Stringmetadata_symbol: Stringseller_fee_basis_points: u16creators: Vec<CreatorInput>
Accounts (base):
authorityconfig(PDA:['config', namespace])auth(PDA:['auth', config])payer(signer)object_manifest(PDA:['object_manifest', config, object_id_le_bytes])object_mint(PDA:['object_mint', object_manifest])recipient_token_account(ATA forrecipient+object_mint)recipienttoken_programassociated_token_programsystem_program
Accounts (metadata):
metadata(Metaplex metadata PDA)master_edition(Metaplex master edition PDA)collection_minttoken_metadata_program
Remaining accounts (ordered):
- Collection metadata PDA (mut)
- Collection master edition PDA (mut)
- Rent sysvar
- Instructions sysvar (optional, required for sized collections)
- Creator public keys (for verified creator checks)
update_object_manifest
Args:
manifest_hash: [u8; 32]metadata_uri: Stringis_active: bool
Accounts:
owner(signer)config(PDA:['config', namespace])auth(PDA:['auth', config])object_manifest(PDA:['object_manifest', config, object_id_le_bytes])object_mintowner_token_accountobject_metadata(Metaplex metadata PDA)metadata_programrent(sysvar)instructions(sysvar, optional)
migrate_config_namespace
Args: new_namespace: Pubkey
Accounts:
authority(signer)old_config(PDA:['config', old_namespace])new_config(PDA:['config', new_namespace])old_auth(PDA:['auth', old_config])new_auth(PDA:['auth', new_config])system_program
set_paused
Args: paused: bool
Accounts:
authority(signer)config(PDA:['config', namespace])
Error codes
| Code | Meaning |
|---|---|
| InvalidAuthority | Authority mismatch for the config |
| UriTooLong | Metadata URI exceeds permitted length |
| ObjectInactive | Object marked inactive |
| ManifestNotInitialized | Manifest not initialized |
| ObjectIdMismatch | Supplied object ID mismatch |
| InvalidConfig | Manifest/config mismatch |
| InvalidManifestAccount | Manifest PDA mismatch |
| ManifestAccountTooSmall | Manifest account data too small |
| InvalidObjectMintAccount | Object mint PDA mismatch |
| MintMismatch | Mint mismatch for owner token account |
| InvalidOwnerTokenAccount | Owner token account mismatch |
| OwnerDoesNotHoldObjectNft | Owner token account balance is zero |
| ManifestMismatch | Manifest mismatch |
| RecipientMismatch | Recipient mismatch |
| UnauthorizedDeployer | Deployer not allowed |
| MintingPaused | Minting is paused |
| MetadataNameTooLong | Metaplex name too long |
| MetadataSymbolTooLong | Metaplex symbol too long |
| InvalidCreatorShareDistribution | Creator shares invalid |
| TooManyCreators | Too many creators |
| InvalidSellerFeeBasisPoints | Seller fee basis points invalid |
| InvalidTokenMetadataProgram | Metaplex program mismatch |
| MissingMintMetadataAccounts | Missing metadata accounts |
| InvalidRentSysvar | Rent sysvar mismatch |
| InvalidMetadataAccount | Metaplex metadata PDA mismatch |
| InvalidMasterEditionAccount | Metaplex master edition PDA mismatch |
| InvalidCollectionMetadataAccount | Collection metadata PDA mismatch |
| InvalidCollectionMasterEditionAccount | Collection master edition PDA mismatch |
| InvalidInstructionsSysvar | Instructions sysvar mismatch |
| MissingManifestCreator | Manifest creator missing from creators list |
| InvalidRecipientTokenAccount | Recipient token account mismatch |
| CreatorMustSign | Verified creator missing signature |