Skip to main content

Documentation Index

Fetch the complete documentation index at: https://sdk.umbraprivacy.com/llms.txt

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

Compliance grants allow authorized third parties (regulators, compliance tools) to read encrypted data. Grants are stored on-chain and come in two kinds:
  • User grants - Authorized by the user. Grants a third party access to the user’s shared-mode ciphertexts.
  • Network grants - Authorized by the Arcium network. Grants access to MXE-mode or shared-mode ciphertexts without requiring user interaction.

getComplianceGrantIssuerFunction

Import: @umbra-privacy/sdk
function getComplianceGrantIssuerFunction(
  args: GetCreateUserGrantedComplianceGrantFunctionArgs,
  deps?: GetCreateUserGrantedComplianceGrantFunctionDeps,
): CreateUserGrantedComplianceGrantFunction
Creates an on-chain compliance grant signed by the user, authorizing a third-party receiver to re-encrypt and read the user’s shared-mode ciphertexts.

GetCreateUserGrantedComplianceGrantFunctionArgs

  • client: IUmbraClient

GetCreateUserGrantedComplianceGrantFunctionDeps

  • getLatestBlockhash?: GetLatestBlockhash
  • transactionForwarder?: TransactionForwarder
  • masterViewingKeyX25519KeypairGenerator?: MasterViewingKeyX25519KeypairGeneratorFunction

Returns

CreateUserGrantedComplianceGrantFunction
type CreateUserGrantedComplianceGrantFunction = (
  receiver: Address,
  granterX25519: X25519PublicKey,
  receiverX25519: X25519PublicKey,
  nonce: RcEncryptionNonce,
  optionalData?: OptionalData32,
  callbacks?: TransactionCallbacks,
) => Promise<TransactionSignature>
  • receiver: Address - The third-party account that will be authorized to call re-encryption.
  • granterX25519: X25519PublicKey - The granter’s X25519 public key (MVK encrypting key).
  • receiverX25519: X25519PublicKey - The receiver’s X25519 public key (the target re-encryption key).
  • nonce: RcEncryptionNonce - Grant nonce, used to differentiate multiple grants to the same receiver.

Example

import { getComplianceGrantIssuerFunction } from "@umbra-privacy/sdk";

const createGrant = getComplianceGrantIssuerFunction({ client });
const signature = await createGrant(
  receiverAddress,
  granterX25519PublicKey,
  receiverX25519PublicKey,
  grantNonce,
);

getComplianceGrantRevokerFunction

Import: @umbra-privacy/sdk
function getComplianceGrantRevokerFunction(
  args: GetDeleteUserGrantedComplianceGrantFunctionArgs,
  deps?: GetDeleteUserGrantedComplianceGrantFunctionDeps,
): DeleteUserGrantedComplianceGrantFunction
Revokes an existing user-granted compliance grant, removing the third-party’s authorization to re-encrypt.

GetDeleteUserGrantedComplianceGrantFunctionArgs

  • client: IUmbraClient

GetDeleteUserGrantedComplianceGrantFunctionDeps

  • getLatestBlockhash?: GetLatestBlockhash
  • transactionForwarder?: TransactionForwarder
  • masterViewingKeyX25519KeypairGenerator?: MasterViewingKeyX25519KeypairGeneratorFunction

Returns

DeleteUserGrantedComplianceGrantFunction
type DeleteUserGrantedComplianceGrantFunction = (
  receiver: Address,
  granterX25519: X25519PublicKey,
  receiverX25519: X25519PublicKey,
  nonce: RcEncryptionNonce,
  optionalData?: OptionalData32,
  callbacks?: TransactionCallbacks,
) => Promise<TransactionSignature>
Parameters are identical to CreateUserGrantedComplianceGrantFunction - pass the same values used when creating the grant.

getUserComplianceGrantQuerierFunction

Import: @umbra-privacy/sdk
function getUserComplianceGrantQuerierFunction(
  args: GetQueryUserComplianceGrantFunctionArgs,
  deps?: GetQueryUserComplianceGrantFunctionDeps,
): QueryUserComplianceGrantFunction
Checks whether a specific user-granted compliance grant exists on-chain.

GetQueryUserComplianceGrantFunctionArgs

  • client: IUmbraClient

GetQueryUserComplianceGrantFunctionDeps

  • accountInfoProvider?: AccountInfoProviderFunction

Returns

QueryUserComplianceGrantFunction
type QueryUserComplianceGrantFunction = (
  granterX25519: X25519PublicKey,
  nonce: RcEncryptionNonce,
  receiverX25519: X25519PublicKey,
) => Promise<QueryComplianceGrantResult>

getQueryNetworkMxeComplianceGrantFunction

Import: @umbra-privacy/sdk
function getQueryNetworkMxeComplianceGrantFunction(
  args: GetQueryNetworkMxeComplianceGrantFunctionArgs,
  deps?: GetQueryNetworkMxeComplianceGrantFunctionDeps,
): QueryNetworkMxeComplianceGrantFunction
Checks whether a network MXE compliance grant exists for the given nonce and receiver key. Network MXE grants allow the Arcium network to re-encrypt MXE-mode ciphertexts.

Returns

QueryNetworkMxeComplianceGrantFunction
type QueryNetworkMxeComplianceGrantFunction = (
  nonce: RcEncryptionNonce,
  receiverX25519: X25519PublicKey,
) => Promise<QueryComplianceGrantResult>

getQueryNetworkSharedComplianceGrantFunction

Import: @umbra-privacy/sdk
function getQueryNetworkSharedComplianceGrantFunction(
  args: GetQueryNetworkSharedComplianceGrantFunctionArgs,
  deps?: GetQueryNetworkSharedComplianceGrantFunctionDeps,
): QueryNetworkSharedComplianceGrantFunction
Checks whether a network shared compliance grant exists. Network shared grants allow the Arcium network to re-encrypt shared-mode ciphertexts.

Returns

QueryNetworkSharedComplianceGrantFunction
type QueryNetworkSharedComplianceGrantFunction = (
  granterX25519: X25519PublicKey,
  nonce: RcEncryptionNonce,
  receiverX25519: X25519PublicKey,
) => Promise<QueryComplianceGrantResult>

QueryComplianceGrantResult

Returned by all three query functions:
  • { state: "exists" } - The grant is present on-chain.
  • { state: "non_existent" } - No grant exists for the given parameters.

getReencryptMxeCiphertextsNetworkGrantFunction

Import: @umbra-privacy/sdk
function getReencryptMxeCiphertextsNetworkGrantFunction(
  args: GetReencryptMxeCiphertextsNetworkGrantFunctionArgs,
  deps?: GetReencryptMxeCiphertextsNetworkGrantFunctionDeps,
): ReencryptMxeCiphertextsNetworkGrantFunction
Re-encrypts MXE-mode ciphertexts under a network grant, making them readable by the grant receiver. Queues an Arcium MPC computation.

GetReencryptMxeCiphertextsNetworkGrantFunctionArgs

  • client: IUmbraClient

GetReencryptMxeCiphertextsNetworkGrantFunctionDeps

  • getLatestBlockhash?: GetLatestBlockhash
  • transactionForwarder?: TransactionForwarder

Returns

ReencryptMxeCiphertextsNetworkGrantFunction
type ReencryptMxeCiphertextsNetworkGrantFunction = (
  receiverX25519Key: X25519PublicKey,
  nonce: RcEncryptionNonce,
  inputEncryptionNonce: RcEncryptionNonce,
  ciphertexts: readonly Uint8Array[],
  optionalData?: OptionalData32,
  callbacks?: TransactionCallbacks,
) => Promise<TransactionSignature>
  • receiverX25519Key: X25519PublicKey - The receiver’s X25519 public key.
  • nonce: RcEncryptionNonce - The grant nonce identifying which network grant to use.
  • inputEncryptionNonce: RcEncryptionNonce - The nonce used when the ciphertexts were originally encrypted.
  • ciphertexts: readonly Uint8Array[] - The MXE-encrypted ciphertexts to re-encrypt. Must contain between 1 and 6 elements.

getSharedCiphertextReencryptorForNetworkGrantFunction

Import: @umbra-privacy/sdk
function getSharedCiphertextReencryptorForNetworkGrantFunction(
  args: GetSharedCiphertextReencryptorForNetworkGrantFunctionArgs,
  deps?: GetSharedCiphertextReencryptorForNetworkGrantFunctionDeps,
): SharedCiphertextReencryptorForNetworkGrantFunction
Re-encrypts shared-mode ciphertexts under a network shared grant.

Returns

ReencryptSharedCiphertextsNetworkGrantFunction
type ReencryptSharedCiphertextsNetworkGrantFunction = (
  granterX25519Key: X25519PublicKey,
  receiverX25519Key: X25519PublicKey,
  nonce: RcEncryptionNonce,
  inputEncryptionNonce: RcEncryptionNonce,
  ciphertexts: readonly Uint8Array[],
  optionalData?: OptionalData32,
  callbacks?: TransactionCallbacks,
) => Promise<TransactionSignature>
  • granterX25519Key: X25519PublicKey - The granter’s X25519 public key.
  • receiverX25519Key: X25519PublicKey - The receiver’s X25519 public key.
  • ciphertexts: readonly Uint8Array[] - Must contain between 1 and 6 elements.

getSharedCiphertextReencryptorForUserGrantFunction

Import: @umbra-privacy/sdk
function getSharedCiphertextReencryptorForUserGrantFunction(
  args: GetReencryptSharedCiphertextsUserGrantFunctionArgs,
  deps?: GetReencryptSharedCiphertextsUserGrantFunctionDeps,
): ReencryptSharedCiphertextsUserGrantFunction
Re-encrypts shared-mode ciphertexts under a user-granted compliance grant.

Returns

ReencryptSharedCiphertextsUserGrantFunction
type ReencryptSharedCiphertextsUserGrantFunction = (
  granterX25519Key: X25519PublicKey,
  receiverX25519Key: X25519PublicKey,
  nonce: RcEncryptionNonce,
  inputEncryptionNonce: RcEncryptionNonce,
  ciphertexts: readonly Uint8Array[],
  optionalData?: OptionalData32,
  callbacks?: TransactionCallbacks,
) => Promise<TransactionSignature>
Identical signature to ReencryptSharedCiphertextsNetworkGrantFunction. The difference is which on-chain grant account is used to authorize the re-encryption.
  • ciphertexts: readonly Uint8Array[] - Must contain between 1 and 6 elements.