multifactor.abi.json

Overview

This file defines the Application Binary Interface (ABI) version 2.4 for a multifactor authentication smart contract. The contract manages cryptographic keys and proofs related to zero-knowledge proof (ZKP) factors, JSON Web Key (JWK) moduli, security cards, recovery phrases, and transaction submission/confirmation. It supports lifecycle management operations such as adding, deleting, cleaning expired keys, updating recovery and seed phrases, and handling complex multi-signature transaction workflows.

The ABI describes the contract's functions, inputs, outputs, and storage fields, enabling interaction with the contract on-chain by clients or other smart contracts.


Detailed Explanation of Functions

The contract exposes a comprehensive set of functions grouped by their main responsibilities:

1. Constructor and Initialization

2. JWK Modulus Management

3. Zero-Knowledge Proof Factors Management

4. Recovery and Seed Phrase Management

5. Security Card Management

6. Transaction Management

7. Token Exchange and Configuration

8. Root Provider Certificates Management

9. Metadata and Utility Accessors


Fields and State Variables

The contract maintains multiple state variables with types and initializations as follows:


Implementation Details and Algorithms


Interaction with Other System Components


Visual Diagram of Contract Structure and Functionality

flowchart TD
A[Contract Initialization] --> B[Add/Update Keys & Factors]
B --> C[JWK Modulus Management]
B --> D[ZKP Factor Management]
B --> E[Security Card Management]
B --> F[Recovery & Seed Phrase Management]
B --> G[Transaction Management]
B --> H[Root Provider Certificates]
B --> I[Configuration & Metadata]
C --> C1[addJwkModulus]
C --> C2[deleteJwkModulus]
C --> C3[cleanAllExpiredJwks]
D --> D1[addZKPfactor]
D --> D2[deleteZKPfactor]
D --> D3[cleanAllExpiredZKPFactors]
E --> E1[addSecurityCard]
E --> E2[turnOnSecurityCards]
E --> E3[turnOffSecurityCards]
E --> E4[deleteSecurityCard]
F --> F1[updateRecoveryPhrase]
F --> F2[updateSeedPhrase]
F --> F3[changeSeedPhrase]
F --> F4[acceptCandidateSeedPhrase]
G --> G1[sendTransaction]
G --> G2[submitTransaction]
G --> G3[confirmTransaction]
G --> G4[getTransaction]
H --> H1[addRootProviderCertificate]
H --> H2[deleteRootProviderCertificate]
H --> H3[cleanRootProviderCertificates]
I --> I1[setWasmHash]
I --> I2[getVersion]
I --> I3[setForceRemoveOldest]

This flowchart highlights the primary functional areas and their related key functions, showing how the contract's features are organized and interlinked.


Usage Examples

Adding a New JWK Modulus

const success = contract.methods.addJwkModulus(
    root_cert_sn,
    lv_kid,
    tls_data
).call();
if (success) {
    console.log('JWK modulus added successfully');
}

Submitting and Confirming a Transaction

const transactionId = await contract.methods.submitTransaction(
    epk_expire_at,
    destinationAddress,
    value,
    ccMap,
    bounceFlag,
    allBalanceFlag,
    payloadCell
).call();

await contract.methods.confirmTransaction(transactionId).send();
console.log('Transaction confirmed');

Updating the Recovery Phrase

await contract.methods.updateRecoveryPhrase(
    newPubRecoveryKey,
    newPubRecoveryKeySig
).send();
console.log('Recovery phrase updated');

Reference

For cryptographic concepts such as zero-knowledge proofs and JSON Web Keys, see Zero-Knowledge Proofs and JSON Web Key (JWK).

For transaction management and smart contract interaction models, refer to Smart Contract Transactions.

For security card authentication and multi-factor authentication concepts, see Multi-Factor Authentication.