Skip to main content

Class for interacting with Function Accounts in the SwitchboardAttestationService.sol contract.

// Instantiate an FunctionAccount
const functionAccount = new FunctionAccount(switchboardProgram, '0xYourFunctionAccountAddress');

// Load the data
const function = await functionAccount.loadData();
const name = function.name;

Hierarchy

Index

Constructors

constructor

Properties

readonlyaddress

address: string

address of the FunctionAccount

publicdata

data: any

readonlyswitchboard

switchboard: ISwitchboardProgram

the instance of Switchboard program

Accessors

publicaccount

publicallowAllFnCalls

  • get allowAllFnCalls(): boolean
  • Returns boolean

publicauthority

  • get authority(): string
  • The authority of the function and is permitted to make account changes.


    Returns string

publicbalance

  • get balance(): BigNumber
  • The current balance of the function. Used to reward verifier oracles for fulfilling updates.


    Returns BigNumber

publicconfig

  • get config(): FunctionConfigStructOutput
  • Returns FunctionConfigStructOutput

publicconsecutiveFailures

  • get consecutiveFailures(): number
  • Number of consecutive failures for the function.


    Returns number

publiccontainer

  • get container(): string
  • The name of the container in the registry.


    Returns string

publiccontainerRegistry

  • get containerRegistry(): string
  • The container registry of the function.


    Returns string

publiccreatedAt

  • get createdAt(): number
  • Unix timestamp when the function was created.


    Returns number

publicenclaveId

  • get enclaveId(): string
  • Returns string

publiclastExecutionGasCost

  • get lastExecutionGasCost(): BigNumber
  • The amount of gas consumed in the previous function execution.


    Returns BigNumber

publiclastExecutionTimestamp

  • get lastExecutionTimestamp(): number
  • Unix timestamp when the function was last executed.


    Returns number

publicmrEnclaves

  • get mrEnclaves(): string[]
  • The list of permitted MRENCLAVE measurements that are allowed to be executed for this function. You will need to update this config value each time the container is updated.


    Returns string[]

publicname

  • get name(): string
  • The name of the function.


    Returns string

publicnextAllowedTimestamp

  • get nextAllowedTimestamp(): number
  • Unix timestamp when the function is next allowed to execute.


    Returns number

publicparamsSchema

  • get paramsSchema(): string
  • Returns string

publicpermittedCallers

  • get permittedCallers(): string[]
  • Returns string[]

publicqueueId

  • get queueId(): string
  • The address of the attestation queue that the function belongs to.


    Returns string

publicqueueIdx

  • get queueIdx(): number
  • Current idx of the function on the attestation queue. Used to increment over the queue’s verifier oracles to prevent collusion.


    Returns number

publicschedule

  • get schedule(): string
  • The cron schedule of the function.


    Returns string

publicstate

  • get state(): FunctionStateStructOutput
  • Returns FunctionStateStructOutput

publicstatus

  • get status(): NONE | ACTIVE | NON_EXECUTABLE | EXPIRED | OUT_OF_FUNDS | INVALID_PERMISSIONS | DEACTIVATED
  • The status of the function.


    Returns NONE | ACTIVE | NON_EXECUTABLE | EXPIRED | OUT_OF_FUNDS | INVALID_PERMISSIONS | DEACTIVATED

publictriggerCount

  • get triggerCount(): number
  • Number of active triggers for the function.


    Returns number

publictriggered

  • get triggered(): boolean
  • Whether the function has been triggered for a request.


    Returns boolean

publictriggeredSince

  • get triggeredSince(): number
  • Unix timestamp since the function was triggered and hasn’t been fulfilled yet.


    Returns number

publicuseFnCallEscrow

  • get useFnCallEscrow(): boolean
  • Returns boolean

publicversion

  • get version(): string
  • The version of the container in the registry.


    Returns string

Methods

publicaddMrEnclave

  • addMrEnclave(mrEnclave: RawMrEnclave, options?: any): Promise<ContractTransaction>
  • addMrEnclave


    Parameters

    • mrEnclave: RawMrEnclave

      The mrEnclave to add to the function

    • optionaloptions: any

      (Optional) Transaction options.

    Returns Promise<ContractTransaction>

    • The ContractTransaction.

publicconfigure

  • configure(configs: { authority?: string; container?: string; containerRegistry?: string; name?: string; paramsSchema?: string; permittedCallers?: string[]; schedule?: string; version?: string }, options?: any): Promise<ContractTransaction>
  • Parameters

    • configs: { authority?: string; container?: string; containerRegistry?: string; name?: string; paramsSchema?: string; permittedCallers?: string[]; schedule?: string; version?: string }
    • optionaloptions: any

    Returns Promise<ContractTransaction>

publicescrowFund

  • escrowFund(fundAmount: BigNumberish, options?: any): Promise<ContractTransaction>
  • Fund the escrow of the Function Account


    Parameters

    • fundAmount: BigNumberish

      The amount of ETH to deposit into a Function’s escrow.

    • optionaloptions: any

      (Optional) Transaction options.

      const tx = await functionAccount.escrowFund(100000);

    Returns Promise<ContractTransaction>

    • The ContractTransaction.

publicescrowWithdraw

  • escrowWithdraw(withdrawAmount: BigNumberish, withdrawAddress: string, options?: any): Promise<ContractTransaction>
  • Withdraw from the escrow of the Function Account

    @parm

    withdrawAmount - The amount of ETH to remove from a Function’s escrow.

    @parm

    withdrawAddress - The account to send the withdrawed funds to.


    Parameters

    • withdrawAmount: BigNumberish
    • withdrawAddress: string
    • optionaloptions: any

      (Optional) Transaction options.

      const tx = await functionAccount.escrowWithdraw(100000, '0xMyWithdrawWallet');

    Returns Promise<ContractTransaction>

    • The ContractTransaction.

publicloadData

  • loadData(): Promise<any>
  • Load Function Account data and update LoadedFunctionAccount state.


    Returns Promise<any>

    Promise that resolves to FunctionData

    const functionData = await functionAccount.loadData();

publicremoveMrEnclave

  • removeMrEnclave(mrEnclave: RawMrEnclave, options?: any): Promise<ContractTransaction>
  • removeMrEnclave


    Parameters

    • mrEnclave: RawMrEnclave

      The mrEnclave to remove from the function

    • optionaloptions: any

      (Optional) Transaction options.

    Returns Promise<ContractTransaction>

    • The ContractTransaction.

publicsetDeactivated

  • setDeactivated(options?: any): Promise<ContractTransaction>
  • setDeactivated


    Parameters

    • optionaloptions: any

      (Optional) Transaction options.

    Returns Promise<ContractTransaction>

    • The ContractTransaction.

publictoJSON

  • toJSON(): { address: string; authority: string; balance: BigNumber; consecutiveFailures: number; container: string; containerRegistry: string; enclaveId: string; lastExecutionGasCost: BigNumber; lastExecutionTimestamp: number; mrEnclaves: string[]; name: string; nextAllowedTimestamp: number; paramsSchema: string; permittedCallers: string[]; queueId: string; queueIdx: number; schedule: string; status: NONE | ACTIVE | NON_EXECUTABLE | EXPIRED | OUT_OF_FUNDS | INVALID_PERMISSIONS | DEACTIVATED; triggerCount: number; triggered: boolean; triggeredSince: number; version: string }
  • Returns { address: string; authority: string; balance: BigNumber; consecutiveFailures: number; container: string; containerRegistry: string; enclaveId: string; lastExecutionGasCost: BigNumber; lastExecutionTimestamp: number; mrEnclaves: string[]; name: string; nextAllowedTimestamp: number; paramsSchema: string; permittedCallers: string[]; queueId: string; queueIdx: number; schedule: string; status: NONE | ACTIVE | NON_EXECUTABLE | EXPIRED | OUT_OF_FUNDS | INVALID_PERMISSIONS | DEACTIVATED; triggerCount: number; triggered: boolean; triggeredSince: number; version: string }

    • address: string
    • authority: string
    • balance: BigNumber
    • consecutiveFailures: number
    • container: string
    • containerRegistry: string
    • enclaveId: string
    • lastExecutionGasCost: BigNumber
    • lastExecutionTimestamp: number
    • mrEnclaves: string[]
    • name: string
    • nextAllowedTimestamp: number
    • paramsSchema: string
    • permittedCallers: string[]
    • queueId: string
    • queueIdx: number
    • schedule: string
    • status: NONE | ACTIVE | NON_EXECUTABLE | EXPIRED | OUT_OF_FUNDS | INVALID_PERMISSIONS | DEACTIVATED
    • triggerCount: number
    • triggered: boolean
    • triggeredSince: number
    • version: string

publictoObj

  • toObj(): { address: string; authority: string; balance: BigNumber; consecutiveFailures: number; container: string; containerRegistry: string; enclaveId: string; lastExecutionGasCost: BigNumber; lastExecutionTimestamp: number; mrEnclaves: string[]; name: string; nextAllowedTimestamp: number; paramsSchema: string; permittedCallers: string[]; queueId: string; queueIdx: number; schedule: string; status: NONE | ACTIVE | NON_EXECUTABLE | EXPIRED | OUT_OF_FUNDS | INVALID_PERMISSIONS | DEACTIVATED; triggerCount: number; triggered: boolean; triggeredSince: number; version: string }
  • Returns { address: string; authority: string; balance: BigNumber; consecutiveFailures: number; container: string; containerRegistry: string; enclaveId: string; lastExecutionGasCost: BigNumber; lastExecutionTimestamp: number; mrEnclaves: string[]; name: string; nextAllowedTimestamp: number; paramsSchema: string; permittedCallers: string[]; queueId: string; queueIdx: number; schedule: string; status: NONE | ACTIVE | NON_EXECUTABLE | EXPIRED | OUT_OF_FUNDS | INVALID_PERMISSIONS | DEACTIVATED; triggerCount: number; triggered: boolean; triggeredSince: number; version: string }

    • address: string
    • authority: string
    • balance: BigNumber
    • consecutiveFailures: number
    • container: string
    • containerRegistry: string
    • enclaveId: string
    • lastExecutionGasCost: BigNumber
    • lastExecutionTimestamp: number
    • mrEnclaves: string[]
    • name: string
    • nextAllowedTimestamp: number
    • paramsSchema: string
    • permittedCallers: string[]
    • queueId: string
    • queueIdx: number
    • schedule: string
    • status: NONE | ACTIVE | NON_EXECUTABLE | EXPIRED | OUT_OF_FUNDS | INVALID_PERMISSIONS | DEACTIVATED
    • triggerCount: number
    • triggered: boolean
    • triggeredSince: number
    • version: string

publicverify

  • verify(params: FunctionVerifyParams, options?: any): Promise<ContractTransaction>
  • Verify the Function Account


    Parameters

    • params: FunctionVerifyParams
    • optionaloptions: any

      Transaction options

    Returns Promise<ContractTransaction>

    Promise that resolves to a boolean indicating whether the verification was successful

    const isVerified = await functionAccount.verify(options);

publicstaticcreate

  • Static method to initialize a Function Account


    Parameters

    • switchboard: ISwitchboardProgram

      Instance of the Switchboard Program class

    • params: FunctionInitParams & { attestationQueue: string }

      Function initialization params

    • optionaloptions: any

      Transaction options

    Returns Promise<[FunctionAccount, ContractTransaction]>

    Promise that resolves to a tuple containing the FunctionAccount and the ContractTransaction

    const [functionAccount, contractTransaction] = await FunctionAccount.create(switchboard, params, options);

publicstaticload

  • Static method to load and fetch the account data


    Parameters

    • switchboard: ISwitchboardProgram

      Instance of the Switchboard Program class

    • address: string

      Address of the Function Account

    Returns Promise<LoadedFunctionAccount>

    Promise that resolves to a LoadedFunctionAccount class containing the current on-chain state of the function

    const [functionAccount, functionData] = await FunctionAccount.load(switchboard, address);