Contract b7b85a40d548ab3c95af5252bd238f33c1b4b8b20abec75fb72470ae57ae904b

← Back to Index 📥 Download WASM

Meta

Description ACTA Unified Contract: Vault + Issuance (VC storage & status registry)
rssdkver 21.7.7#5da789c50b18a4c2be53394138212fed56f0dfc4
rsver 1.89.0

Instances

  • CD5FS4HZDAJMA6UOS7JENUMV7RSYAV7L7VQMU4WLEKO4CYRLUU3QTEMQ

Interface

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)

Imports

WebAssembly Text (WAT) ▶