Indexer.abi.json

Overview

This file defines the Application Binary Interface (ABI) of a smart contract named Indexer. The ABI specifies the contract's external interface, including its functions, inputs, outputs, and storage fields. It is used to interact with the contract on-chain by encoding and decoding data during transactions and calls.

The Indexer contract appears to manage ownership verification and wallet association with identity and cryptographic proofs, likely in a decentralized identity or authorization context. It supports complex ownership verification via zero-knowledge proofs and cryptographic keys, updating wallet addresses, querying contract details, and self-destruction.


ABI Structure and Components

ABI Metadata


Fields

The contract stores several internal state variables, some initialized during deployment:

Field Name

Type

Initialization

Description

_pubkey

uint256

true

Public key associated with the contract.

_timestamp

uint64

false

Timestamp of last state change or event.

_constructorFlag

bool

false

Flag to indicate constructor has run.

_name

string

true

Name or identifier for the contract.

_wallet

address

false

Wallet address linked to this indexer.

_root

address

false

Root address for hierarchical structure.

_rootPubkey

uint256

false

Root-level public key for verification.


Functions

1. constructor(wallet, rootPubkey, index, root)


2. isOwner(wallet, zkid, proof, epk, epk_sig, epk_expire_at, jwk_modulus, kid, jwk_modulus_expire_at, index_mod_4, iss_base_64, provider, header_base_64, pub_recovery_key, pub_recovery_key_sig, jwk_update_key, jwk_update_key_sig, root_provider_certificates, owner_pubkey, index)


3. isOwnerRoot(wallet, zkid, proof, epk, epk_sig, epk_expire_at, jwk_modulus, kid, jwk_modulus_expire_at, index_mod_4, iss_base_64, provider, header_base_64, pub_recovery_key, pub_recovery_key_sig, jwk_update_key, jwk_update_key_sig, root_provider_certificates, owner_pubkey, mirror)


4. setNewWallet(wallet)


5. destroyNode()


6. getDetails()


7. getVersion()


Important Implementation Details


Interaction With Other System Components


Visual Diagram

flowchart TD
Constructor["constructor"]
IsOwner["isOwner"]
IsOwnerRoot["isOwnerRoot"]
SetNewWallet["setNewWallet"]
DestroyNode["destroyNode"]
GetDetails["getDetails"]
GetVersion["getVersion"]
Constructor -->|initializes| _pubkey
Constructor -->|initializes| _name
Constructor -->|initializes| _wallet
Constructor -->|initializes| _root
Constructor -->|initializes| _rootPubkey
IsOwner -->|verifies| Wallet[Wallet]
IsOwner -->|uses| Proofs[Proofs & Keys]
IsOwnerRoot -->|verifies root| Mirror[Mirror Address]
SetNewWallet -->|updates| _wallet
DestroyNode -->|self-destruct| Contract[Indexer Contract]
GetDetails -->|returns| NameWallet[Name & Wallet]
GetVersion -->|returns| Version[Version Info]
Wallet -->|linked to| IndexerContract[Indexer Contract]
Proofs -.->|provided by| OffChainServices[Off-chain cryptographic services]
Mirror -.->|syncs with| RelatedContracts[Related contracts]

The diagram illustrates the main functions and their relationships to contract state and external inputs. It highlights the initialization flow, ownership verification complexity, wallet management, and contract lifecycle actions.