Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.lucid.foundation/llms.txt

Use this file to discover all available pages before exploring further.

The lucid_passports program is the on-chain identity registry for all AI assets in the Lucid network. It supports models, datasets, tools, agents, and voice assets, with built-in payment gating via x402. Program ID (devnet): 38yaXUezrbLyLDnAQ5jqFXPiFurr8qhw19gYnE6H9VsW

Instructions

Identity Management

InstructionDescription
register_passportRegister a new AI asset passport
update_passportUpdate metadata CID or status
link_versionCreate a version link between passport revisions
add_attestationAttach a training log, eval report, or audit

Payment Gating

InstructionDescription
set_payment_gateDefine SOL/LUCID price for passport access
pay_for_accessPay for access (creates an on-chain receipt)
withdraw_revenueOwner withdraws collected payments from vault
revoke_accessOwner revokes a user’s access receipt

Asset Types

VariantDescription
ModelLLM or ML model
DatasetTraining or evaluation data
ToolMCP tool or API
AgentAutonomous agent
VoiceVoice model
OtherCustom asset type

Passport Account

PDA seeds: ["passport", owner, asset_type_byte, sha256(slug), version_bytes]
FieldTypeSizeDescription
ownerPubkey32Passport owner
asset_typeAssetType1Asset category
slugString4+64Human-readable identifier (max 64 chars)
versionVersion12Semantic version (major.minor.patch)
content_cidString4+64IPFS CID of asset content
content_hash[u8; 32]32SHA-256 of content
metadata_cidString4+64IPFS CID of metadata
license_codeString4+32SPDX license identifier
policy_flagsu162Bitfield for usage policies
statusPassportStatus1Active, Deprecated, Superseded, Revoked

Policy Flags

FlagBitMeaning
ALLOW_COMMERCIAL0Commercial use permitted
ALLOW_DERIVATIVES1Derivative works permitted
ALLOW_FINETUNE2Fine-tuning permitted
REQUIRE_ATTRIBUTION3Attribution required
SHARE_ALIKE4Share-alike required

Payment Gate

PDA seeds: ["payment_gate", passport] Owners set a price in SOL lamports and/or LUCID tokens. Payments flow to a vault PDA (["vault", passport]). The gate tracks total revenue and access count.
// Set a payment gate
await program.methods
  .setPaymentGate(
    new BN(1_000_000),   // 0.001 SOL
    new BN(0),            // 0 LUCID
    SystemProgram.programId
  )
  .accounts({
    paymentGate: gatePda,
    passport: passportPda,
    vault: vaultPda,
    owner: wallet.publicKey,
  })
  .rpc();

Attestation Types

VariantUse Case
TrainingLogModel training provenance
EvalReportBenchmark or evaluation results
SafetyAuditSafety review documentation
LicenseVerificationLicense compliance check
TEEQuoteTrusted Execution Environment attestation
VendorAttestationThird-party vendor verification

Events

EventEmitted When
PassportRegisteredNew passport created
PassportUpdatedMetadata or status changed
VersionLinkedVersion chain extended
AttestationAddedNew attestation attached
PaymentGateSetPayment gate configured
AccessPurchasedUser paid for access
RevenueWithdrawnOwner withdrew funds
AccessRevokedUser access revoked