Skip to content

Deployed Contracts

Summary

The table below lists various Arcana smart contracts based on the contract type and purpose.

Arcana Contract Type/Category Purpose
Arcana.sol [V1 or V2] Beacon Proxy/Core System Main logic contract for Arcana Store operations primarily associated with managing user data privacy and access control.
Factory.sol UUPS Proxy/Core System Smart contract generator per app that registers with Arcana
ArcanaBeacon.sol UUPS Proxy/Core System Smart contract to manage the per app association between the latest Arcana.sol main logic contract and the app
BeaconProxy.sol Beacon Proxy/dApp This is a per app smart contract that stores the data related to the program state. It interacts with ArcanaBeacon.sol smart contract to refer to the latest Arcana Auth product core logic contract.
Forwarder.sol UUPS Proxy/Core System Manages meta transactions for app users. Forwards Gateway proxy calls (on behalf of the app) to Arcana.sol main logic contract
NodeList.sol Core System Keeps track of ADKG nodes and their epochs.

Contract Details

Arcana.sol

Arcana.sol contract is the most important core system contract for the Arcana Auth protocol. It manages the UI configuration that controls the user experience for signing blockchain transactions. In future releases, this contract will also manage the decentralized data store functionality for providing app user data privacy and access control.

It is a beacon proxy type of upgradable smart contract. Arcana.sol shares some metadata with other contracts via pass-through data mechanisms. No app user file data is stored on this smart contract.

Factory.sol

When a new app chooses to register with Arcana, the Arcana factory smart contract is activated. This is a singleton, UUPS proxy type upgradable contract that implements the core system logic for generating per app specific β€˜proxy’ contracts called BeaconProxy.sol.

BeaconProxy.sol

At the time of app registration using the Arcana Developer Dashboard, each app is associated with its own proxy upgradable smart contract called the BeaconProxy. The BeaconProxy is deployed by Arcana Factory.sol contract. Every BeaconProxy contract points to the latest version of Arcana.sol protocol. This is ensured by the ArcanaBeacon.sol contract.

ArcanaBeacon.sol

ArcanaBeacon smart contract points to the latest version of Arcana Auth core system logic contract. It could be V1 or V2 or Vn. It is a UUPS proxy upgradable smart contract. The sole purpose of this contract is to ensure that Arcana Auth Protocol is upgradeable.

Forwarder.sol

This UUPS proxy upgradable smart contract is used to manage the meta transactions. A meta transaction is a regular Ethereum transaction that contains another transaction, the actual transaction. Meta transactions are a means of delegating payment of gas fees to an external entity such as the Arcana Gateway. They are meant to facilitate the onboarding of first-time app users. Arcana Gateway component uses meta-transactions to implement the AArcana Authrelated data and access operations. The Arcana Gateway module handles all the meta transactions.

The forwarder smart contract is used in the context of meta transactions, together with an ERC-2771 compatible contract. It forwards blockchain transaction calls from the Gateway, made on behalf of the app user (proxy blockchain transactions) to the core system contract, `Arcana.sol``.

NodeList.sol

NodeList.sol contract is the key to managing the Arcana Auth DKG protocol. It keeps track of public information related to ADKG nodes and the epoch details. Besides these, it manages the buffer size for controlling the number of β€˜pre-generated’ keys and the information regarding whitelisting of validator nodes.

Contract Flows

The interactions between various Arcana smart contracts to implement the logic for the Arcana Auth protocol is captured by the following two workflows:

  1. Data access flow
  2. New app registration flow

Data Access Flow

Arcana Data Access Flow Arcana Data Access Flow

  • All app user operation-related calls made via the client-side Arcana Auth SDK are intercepted by the Arcana Gateway.

  • The Gateway executes meta transactions with relevant data and signatures.

  • Forwarder forwards the transaction via the per-app BeaconProxy.sol smart contract.

  • The BeaconProxy requests the current Arcana core system contract, Arcana.sol, from the ArcanaBeacon.sol contract.

  • After receiving the address of the latest Arcana core system contract from the ArcanaBeacon contract, the BeaconProxy delegates the forwarded call to the Arcana system contract.

  • Arcana contract actually executes the transaction.

New App Registration Flow

New app Registration Flow New app Registration Flow

  • When a new app is registered at the Arcana Developer Dashboard, it interacts with the Arcana Gateway to initialize the program state of the app.
  • The Factory.sol smart contract is invoked to create a new BeaconProxy.sol contract that is solely associated with this newly registered app. Each app has its own BeaconProxy contract deployed.

  • The BeaconProxy.sol contract stores the per-app data related to the program state.

  • The BeaconProxy communicates with the ArcanaBeacon contract to obtain the address of the latest Arcana core system contract. This ensures that each app contract knows and utilizes the latest supported Arcana Auth protocol.


Last update: April 12, 2024 by shaloo, shaloo