Initialize global configuration (one-time).
Parameters:
contract_admin: global admin address (must sign).default_issuer_did: default issuer DID metadata (string).fn initialize(
env: soroban_sdk::Env,
contract_admin: soroban_sdk::Address,
default_issuer_did: soroban_sdk::String,
)
Set global contract admin (admin-only).
Parameters:
new_admin: new admin address.fn set_contract_admin(env: soroban_sdk::Env, new_admin: soroban_sdk::Address)
Configure global fee (admin-only).
Parameters:
token_contract: Soroban token contract address used for charging.fee_dest: destination address to receive fees.fee_amount: amount to transfer on each issuance/store (i128).fn set_fee_config(
env: soroban_sdk::Env,
token_contract: soroban_sdk::Address,
fee_dest: soroban_sdk::Address,
fee_amount: i128,
)
Enable/disable fee charging (admin-only).
Parameters:
enabled: true to charge fees on issuance, false otherwise.fn set_fee_enabled(env: soroban_sdk::Env, enabled: bool)
Sets fee for admin role (admin-only).
Parameters:
fee_amount: fee amount in i128 (typically 0 for admin).fn set_fee_admin(env: soroban_sdk::Env, fee_amount: i128)
Sets fee for standard role (admin-only).
Parameters:
fee_amount: fee amount in i128 (typically 1 USDC = 1000000 for standard).fn set_fee_standard(env: soroban_sdk::Env, fee_amount: i128)
Sets fee for early role (admin-only).
Parameters:
fee_amount: fee amount in i128 (typically 0.4 USDC = 400000 for early).fn set_fee_early(env: soroban_sdk::Env, fee_amount: i128)
Sets custom fee for a specific issuer address (admin-only).
Parameters:
issuer: issuer address to set custom fee for.fee_amount: fee amount in i128.fn set_fee_custom(
env: soroban_sdk::Env,
issuer: soroban_sdk::Address,
fee_amount: i128,
)
Gets fee for admin role (public read-only).
fn get_fee_admin(env: soroban_sdk::Env) -> i128
Gets fee for standard role (public read-only).
fn get_fee_standard(env: soroban_sdk::Env) -> i128
Gets fee for early role (public read-only).
fn get_fee_early(env: soroban_sdk::Env) -> i128
Gets custom fee for a specific issuer address (public read-only).
fn get_fee_custom(env: soroban_sdk::Env, issuer: soroban_sdk::Address) -> i128
Upgrade contract WASM (admin-only).
Parameters:
new_wasm_hash: hash of the new WASM code.fn upgrade(env: soroban_sdk::Env, new_wasm_hash: soroban_sdk::BytesN<32>)
Return the deployed contract version string.
fn version(env: soroban_sdk::Env) -> soroban_sdk::String
Returns fee configuration status (public read-only, no signature required).
Returns:
enabled: whether fees are enabled.configured: whether fee configuration is set (token_contract, fee_dest, fee_amount are all set).token_contract: token contract address (if configured).fee_dest: fee destination address (if configured).fee_amount: fee amount (if configured).fn fee_config(env: soroban_sdk::Env) -> FeeConfig
Create/initialize a vault for an owner (one-time per owner).
Parameters:
owner: vault owner address (must sign).did_uri: DID URI metadata for the owner.fn create_vault(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
did_uri: soroban_sdk::String,
)
Set the per-vault admin (current vault admin must sign).
Parameters:
owner: vault owner address (selects which vault).new_admin: new admin address for that vault.fn set_vault_admin(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
new_admin: soroban_sdk::Address,
)
Replace the full authorized issuer list for a vault (vault admin-only).
Parameters:
owner: vault owner address.issuers: list of issuer addresses allowed to issue into this vault.fn authorize_issuers(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
issuers: soroban_sdk::Vec,
)
Add a single authorized issuer to a vault (vault admin-only).
Parameters:
owner: vault owner address.issuer_addr: issuer address to authorize.fn authorize_issuer(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
issuer_addr: soroban_sdk::Address,
)
Remove a single issuer from the authorized issuer list (vault admin-only).
Parameters:
owner: vault owner address.issuer_addr: issuer address to revoke.fn revoke_issuer(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
issuer_addr: soroban_sdk::Address,
)
Revoke a vault (vault admin-only). Blocks future writes.
Parameters:
owner: vault owner address.fn revoke_vault(env: soroban_sdk::Env, owner: soroban_sdk::Address)
List VC IDs stored in a vault.
Parameters:
owner: vault owner address.fn list_vc_ids(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
) -> soroban_sdk::Vec
Get a VC payload from a vault (public read).
Parameters:
owner: vault owner address.vc_id: VC identifier.fn get_vc(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
vc_id: soroban_sdk::String,
) -> Option
Verify a VC status via the issuance registry (public read).
Parameters:
owner: vault owner address (used only to check that the VC exists in that vault).vc_id: VC identifier.fn verify_vc(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
vc_id: soroban_sdk::String,
) -> soroban_sdk::Map
Move a VC from one owner's vault to another.
Parameters:
from_owner: origin vault owner (must sign).to_owner: destination vault owner.vc_id: VC identifier to move.issuer_addr: issuer address that must be authorized in from_owner vault (no signature required).fn push(
env: soroban_sdk::Env,
from_owner: soroban_sdk::Address,
to_owner: soroban_sdk::Address,
vc_id: soroban_sdk::String,
issuer_addr: soroban_sdk::Address,
)
Issue a VC: stores payload in vault + writes issuance status = valid.
Parameters:
owner: vault owner that will receive the VC.vc_id: VC identifier (application-defined).vc_data: VC payload (ciphertext only).vault_contract: kept for backwards-compat; must be this contract.issuer_addr: issuer address (must sign and be authorized in owner's vault).issuer_did: issuer DID metadata.fee_override: Fee amount to override default/role-based fee. If 0, uses global fee.
If > 0, uses that amount directly.fn issue(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
vc_id: soroban_sdk::String,
vc_data: soroban_sdk::String,
vault_contract: soroban_sdk::Address,
issuer_addr: soroban_sdk::Address,
issuer_did: soroban_sdk::String,
fee_override: i128,
) -> soroban_sdk::String
Revoke a VC by ID.
Parameters:
vc_id: VC identifier.date: revocation date string (recommended ISO-8601).fn revoke(env: soroban_sdk::Env, vc_id: soroban_sdk::String, date: soroban_sdk::String)
Migrate legacy storage layouts.
Parameters:
owner: Some(owner) migrates that owner's vault legacy VCs; None migrates legacy issuance registry.fn migrate(env: soroban_sdk::Env, owner: Option)