# Current Landscape

Enigma is a security architecture focused on reducing the observability of digital infrastructure.

Most security models assume that infrastructure is externally visible. Communication paths can be monitored with little effort since they are persistent over long periods of time. Encryption may limit access to payload contents, however endpoints, routing, and timing remain observable. Under realistic adversarial conditions, this information can support[ traffic analysis attacks](https://dl.acm.org/doi/10.1145/3319535.3354215) and long-term correlation.\
\
In practice, many classes of network attack depend on prior observation rather than immediate exploitation.\
\
[Reconnaissance](https://attack.mitre.org/tactics/TA0043/) enables attackers to identify reachable services, infer software stacks, profile usage patterns, and select timing and targets that maximize impact. Even when exploits are delivered later through separate channels, their success is often conditioned on knowledge gained through sustained network visibility.\
\
By reducing what can be seen at the network layer, Enigma limits the early steps attackers usually rely on. Services that are not publicly discoverable are much harder to scan or map. As a result, automated and opportunistic attacks are far less likely to succeed.

<figure><picture><source srcset="/files/eDr1E1fVBAo1F6tMhGTy" media="(prefers-color-scheme: dark)"><img src="/files/cJe4KynE6SaSCB6kyeND" alt=""></picture><figcaption></figcaption></figure>

*<mark style="color:$info;">Example attack timeline assuming stable identity and routing over time.</mark>*


# Where This Approach Applies

In many modern systems, security controls are engaged only after infrastructure becomes visible. Services are brought online, endpoints are established, and communication paths stabilize before access is evaluated. As a result, security often operates within the following sequence:

```
[ Visibility ] → [ Observation ] → [ Profiling ] → [ Access Control ]
```

This ordering is not specific to any single industry or technology. It reflects how long-lived, reachable services are typically deployed and operated. The examples below illustrate environments where this sequence is common:

1. **Financial Infrastructure**\
   Banks, exchanges, and settlement systems often rely on services that must stay online and reachable at all times. Even when access is tightly controlled, the surrounding infrastructure can still reveal how systems are structured and when they are active. This type of[ infrastructure fingerprinting](https://attack.mitre.org/techniques/T1046/) can occur independently of transaction access. Reducing network-level exposure can limit how much of this operational detail is visible without interfering with compliance or auditing requirements.
2. **Trading and Market Operations**\
   Trading systems depend on continuous availability and predictable connectivity. In these environments, observation alone can reveal timing patterns or coordination behavior, even if transaction details are protected. Limiting network discoverability can reduce how much information outside observers can infer from traffic patterns and service behavior.
3. **Cloud Platforms and Public APIs**\
   Many cloud services expose APIs or control endpoints that are intended for limited use but remain publicly reachable. Authentication controls who can use them, but the services themselves can still be scanned and measured over time. Network-layer exposure controls are most useful when services must stay online but should not be easy to discover or map.
4. **Internal and Service-to-Service Systems**\
   Distributed systems often rely on constant communication between internal services. These connections tend to be stable and long-lived, which makes them observable even when encrypted. Reducing exposure at this layer can help limit visibility into internal structure and communication flows without changing how applications function.
5. **Privacy-Sensitive and Regulated Environments**\
   Research systems, regulated platforms, and early-stage deployments may need to remain accessible while avoiding unnecessary exposure. In these cases, the risk comes less from direct misuse and more from gradual information buildup through observation. Limiting visibility can reduce this risk without relying only on policies or procedures.\
   \ <br>


# On-Chain Economics

Enigma uses Ethereum as a settlement and enforcement layer for payments, incentives, staking, and penalties. ENX compensates verifiable work performed off chain, with task completion attested via cryptographic proofs or verifiable signals that Ethereum contracts validate before releasing transaction. Ethereum enforces outcomes, not process: it does not coordinate execution or route traffic, but applies deterministic economic consequences while execution remains off chain to preserve privacy and scalability.

| Layer        | Responsibilities                                                                                                         |
| ------------ | ------------------------------------------------------------------------------------------------------------------------ |
| **Enigma**   | <p>Route traffic<br>Store encrypted data<br>Move workloads<br>Coordinate timing<br>Generate proofs of work performed</p> |
| **Ethereum** | <p>Verify submitted proofs<br>Release payments<br>Provide randomness for timing</p>                                      |

```
// SETTLEMENT PROCESS PSEUDOCODE

function settleWork(node, epochId, workProof):
    // Step 1: Node performs off-chain work
    work = node.performTask(epochId)

    // Step 2: Generate cryptographic proof
    proof = generateProof(work)  // ZK proof, signed receipt, or Merkle proof

    // Step 3: Submit to Ethereum
    tx = ethereumContract.submitProof(epochId, proof, workDescriptor)

    // Step 4: Contract validates
    if contract.verifyProof(proof):
        // Step 5: Release payment
        contract.transferENX(node.address, paymentAmount)
    else:
        // Slash stake for invalid proof
        contract.slash(node.address, stakeAmount)

// SLASHING CONDITIONS
SlashingTriggers = {
    "non_performance":  "Missed heartbeats, timeout",
    "invalid_proof":    "On-chain verification fails",
    "double_signing":   "Equivocation detected",
    "collusion":        "Statistical anomaly detection"
}
```


# Overview

RAVID is not a single algorithm. It is a coordination framework where multiple independent algorithms run concurrently, each governing a different dimension of the system (networking, routing, rotation, placement, storage, proofs), and are synchronized through shared state and timing.\
\
RAVID does not assume infrastructure is fixed or centrally controlled. Network routes, running workloads, and where data is stored are expected to change over time. Coordination focuses on managing identity, access, and movement across these parts without relying on static endpoints or permanent roles. RAVID is designed to layer into existing systems gradually, avoiding full replacements or forcing every participant to adopt the same setup.

RAVID keeps day-to-day coordination separate from verification and settlement. High-volume coordination and execution happen off chain, while verification and economic enforcement are handled by an external trust system. In Ethereum-aligned deployments, Ethereum is used to verify cryptographic results, record commitments, and apply incentives or penalties, without taking part in coordination or execution. This separation allows the system to stay flexible and private, while relying on a stable and neutral layer to enforce outcomes when needed.


# Epochs

**How Synchronized Motion Works**

Several times per minute, Ethereum produces a new block with an unpredictable hash. All RAVID nodes observe the same hash at the same time. From this shared randomness, every node independently computes the same "motion plan" which routes to use, where workloads go, how storage redistributes.

No central coordinator tells anyone what to do. The math is deterministic: same input → same output. Everyone moves together because everyone computes the same answer.<br>

```
EPOCH CYCLE:

  Ethereum Block    All Nodes See      Each Node Computes    System Moves
  ─────────────     ─────────────      ──────────────────    ────────────
  Block #N ──────►  Same blockhash ──► Same motion plan ──►  Synchronized
                    (public)           (deterministic)        motion

  Block #N+B ────►  New blockhash ───► New motion plan ────► Next epoch
  
```

### Technical: DETSA Mathematical Framework

**DETSA** = Deterministic Execution with Time-Domain Security Amplification

{% code overflow="wrap" %}

```angular-ts
EPOCH INDEX
e = ⌊(blockNumber - b₀) / B⌋ where: blockNumber = current block height b₀ = genesis block for RAVID B = blocks per epoch (tunable)
```

{% endcode %}

{% code overflow="wrap" %}

```angular-ts
EPOCH ENTROPY (Critical Formula)
Rand_e = H(blockhash(boundary(e)) ‖ PolCommit_e ‖ e) where: blockhash = unpredictable until mined, immutable after PolCommit_e = commitment to current policy state H = cryptographic hash (BLAKE2B)
```

{% endcode %}

{% code overflow="wrap" %}

```angular-ts
MOTION PLAN DERIVATION
π_e = F(Σ_e, Rand_e) // Network motion ω_e = G(Ω_e, Rand_e) // Storage motion RAVID_e = (π_e, ω_e) // Complete motion plan
```

{% endcode %}

{% code overflow="wrap" %}

```angular-ts
// EPOCH TRANSITION PSEUDOCODE

function computeEpochMotion(blockNumber, currentState):
    // Calculate epoch index
    epoch = floor((blockNumber - GENESIS_BLOCK) / BLOCKS_PER_EPOCH)

    // Get entropy from blockchain
    boundaryBlock = GENESIS_BLOCK + (epoch * BLOCKS_PER_EPOCH)
    blockhash = ethereum.getBlockHash(boundaryBlock)

    // Derive epoch randomness
    policyCommit = hash(currentState.policies)
    epochEntropy = BLAKE2B(blockhash || policyCommit || epoch)

    // Compute motion plans (deterministic!)
    networkMotion = deriveNetworkRoutes(currentState.network, epochEntropy)
    storageMotion = deriveShardPlacements(currentState.storage, epochEntropy)

    return {
        epoch: epoch,
        entropy: epochEntropy,
        networkPlan: networkMotion,
        storagePlan: storageMotion
    }

// Security Property: All honest nodes compute identical plans
// because they see same blockhash and have same state
```

{% endcode %}

> **Security Amplification Theorem**\
> \
> After k epochs: Pr\[successful attack] ≤ (1/2²⁵⁶)ᵏ\
> \
> Attack difficulty grows EXPONENTIALLY because each epoch requires a new attack vector. Previous reconnaissance becomes stale.


# Architecture

<figure><picture><source srcset="/files/E2xTv3QLaoYQKuapijej" media="(prefers-color-scheme: dark)"><img src="/files/7dYwZesbHbdbj9MtHuuv" alt=""></picture><figcaption></figcaption></figure>

*<mark style="color:$info;">Layered RAVID architecture with a central coordination core.</mark>*

\
RAVID is organized as a layered system with a central coordination core and independently adaptive network, infrastructure, and storage layers:

1. **Network Layer (Dynamic Routing)**\
   RAVID operates over a virtual network layer in which communication paths are established dynamically and rotated over time. Network routes are not intended to be long-lived or addressable through fixed endpoints. This reduces reliance on static network topology. The network layer is responsible only for connectivity and path selection, not identity or policy enforcement.
2. **Infrastructure Layer (Workload Placement)**\
   Compute workloads are deployed across available infrastructure without being bound to specific servers or fixed locations. Workload instances may be created, terminated, or relocated based on availability and operational conditions. This layer does not assume persistent hosts or static service placement.
3. **Storage Layer (Fragmented Data Placement)**\
   Data is stored as encrypted fragments distributed across multiple storage locations. Complete datasets are not persistently stored in a single location. Reassembly occurs only when required for execution or retrieval. Storage placement may change over time without requiring changes to application logic.
4. **RAVID Core (Coordination and Timing)**\
   The RAVID core coordinates timing and state transitions across the network, infrastructure, and storage layers. It does not execute workloads, route traffic, or store data. Its function is to ensure that changes across layers occur in a controlled manner so that independent adaptation does not result in system instability.
5. **External Verification and Enforcement (Optional Integration)** \
   Operational activity occurs off chain. Verification of outcomes and enforcement of economic conditions may be delegated to an external system. In Ethereum-aligned deployments, cryptographic attestations are verified, commitments are recorded, and incentives or penalties are enforced by Ethereum smart contracts. Ethereum does not participate in coordination, routing, or execution.

\
In summary:

| **Layer**      | **Function**       | **Motion Type**             |
| -------------- | ------------------ | --------------------------- |
| Network        | How data travels   | Routes change, paths rotate |
| Infrastructure | Where work happens | Workloads relocate          |
| Storage        | Where data lives   | Shards redistribute         |
| RAVID Core     | Coordination       | Synchronizes all motion     |
| Ethereum       | Enforcement        | Verifies and settles        |

## **Primitive Stack Mapping:**

When we map each RAVID layer to the specific cryptographic, networking, and consensus primitive it uses, we show how the system is built from standard, well-understood components:

| RAVID Layer         | Primitives Used                                                            |
| ------------------- | -------------------------------------------------------------------------- |
| **Stealth Network** | mTLS, ECDH (X25519), ChaCha20-Poly1305, X.509, Overlay Mesh, Dark Services |
| **Infrastructure**  | Virtualization, IaC (DAG, State), HSM, Leader Election (RAFT)              |
| **Storage**         | Shamir SSS (2-of-3), HD Derivation, Merkle Trees, Append-Only Logs         |
| **RAVID Core**      | BFT Consensus (80% threshold), RSM, Threshold Signatures, BLAKE2B          |

{% code overflow="wrap" %}

```angular-ts
NETWORK PRIMITIVES:

mTLS Handshake:
  Client ────── ClientHello ──────► Server
  Client ◄───── ServerHello ─────── Server
  Client ────── Certificate ──────► Server    // Both sides prove identity
  Client ◄───── Verify ───────────── Server

Key Exchange (ECDH/X25519):
  Alice: a = random, A = a·G
  Bob:   b = random, B = b·G
  Shared = a·B = b·A = ab·G   // Same secret, never transmitted

Symmetric Cipher (ChaCha20-Poly1305 AEAD):
  Plaintext + Key + Nonce → Ciphertext + Auth Tag
  Properties: Confidentiality + Integrity + Authentication
```

{% endcode %}


# Tech Stack

| Layer              | Architecture Says     | We Implement With |
| ------------------ | --------------------- | ----------------- |
| **Infrastructure** | Cloud substrate + IaC | Azure + Terraform |
| **Network**        | Zero-trust overlay    | OpenZiti          |
| **Compute**        | BFT consensus         | (Vendor-agnostic) |
| **Storage**        | Shamir secret sharing | Keystore Service  |
| **Settlement**     | Public blockchain     | Ethereum          |

```
Technical: Implementation Stack Details

LAYER 0: INFRASTRUCTURE (Azure + Terraform)
├── Virtualization: Azure VMs, containers
├── Network isolation: VNets, NSGs
├── HSM: Azure Key Vault (FIPS 140-2 Level 3)
├── IaC: Terraform DAG for declarative state
└── Identity: Azure AD, managed identities

LAYER 1: STEALTH NETWORK (OpenZiti)
├── Identity: X.509 certificates, mTLS
├── Dark services: No listening ports on underlay
├── Mesh routing: Dijkstra over fabric routers
├── Encryption: ChaCha20-Poly1305 AEAD
└── Key exchange: X25519 ECDH

LAYER 2: BFT COMPUTE (Vendor-agnostic)
├── Consensus: Byzantine fault tolerant (80% threshold)
├── State: Replicated State Machine (RSM)
├── Leader: RAFT-style election
├── Execution: Deterministic contract logic
└── UNL: Unique Node Lists for trust

LAYER 3: KEYSTORE (Shamir + HD)
├── Split custody: 2-of-3 Shamir shares
├── Derivation: BIP-32 HD paths
├── Signatures: Ed25519 (internal), secp256k1 (EVM)
├── Threshold: Sign without reconstructing key
└── Recovery: Social recovery with timelock

EXTERNAL: ETHEREUM (ERC-20 + Contracts)
├── Token: ENX (ERC-20)
├── Staking: Lock ENX for node roles
├── Settlement: Proof verification
├── Slashing: Penalty for misbehavior
└── Entropy: Blockhash for DETSA

```


# Data Tunnels

Services are reachable only through authenticated channels, preventing unauthenticated scanning and external access.

| Property            | Traditional Network          | Enigma Tunnels                      |
| ------------------- | ---------------------------- | ----------------------------------- |
| **Discoverability** | Services announce themselves | Nothing visible until authenticated |
| **Routing**         | Stable paths, cacheable      | Paths change every epoch            |
| **Endpoints**       | Fixed IPs, known ports       | No exposed endpoints                |

The pseudocode below illustrates the high-level steps used to establish an authenticaed tunnel.

```angular-ts
// TUNNEL ESTABLISHMENT PSEUDOCODE

function establishTunnel(user, targetService):
    // Phase 1: Authentication (BEFORE any network access)
    identity = user.getCertificate()
    if not verifyIdentity(identity):
        return REJECT  // No unauthenticated access

    // Phase 2: Policy Check
    policy = controller.getPolicy(identity, targetService)
    if not policy.allows(identity, targetService):
        return UNAUTHORIZED

    // Phase 3: Route Calculation (epoch-dependent)
    currentEpoch = getCurrentEpoch()
    availableRouters = getRoutersForEpoch(currentEpoch)
    route = calculateRoute(user.location, targetService, availableRouters)

    // Phase 4: Session Key Derivation
    ephemeralKey = generateECDHKeyPair()
    sessionKeys = deriveSessionKeys(ephemeralKey, targetService.publicKey)

    // Phase 5: Encrypted Tunnel
    tunnel = createEncryptedChannel(route, sessionKeys)

    return tunnel

function onEpochBoundary(tunnel, newEpoch):
    // Route rotation without dropping connection
    newRoute = calculateRoute(tunnel.user, tunnel.service, newEpoch)
    tunnel.migrateRoute(newRoute)
    tunnel.rotateSessionKeys()  // Forward secrecy
```


# Identity and Authorization Model

In many traditional systems, network access is granted first and refined later through authentication and authorization. A connection is established based on network location, and identity is used only after access already exists. This creates implicit trust at the network level and increases the surface area exposed before policy checks are applied.

Enigma reverses this order. Identity is verified first, authorization is evaluated next, and network access is created only if those checks succeed. Connectivity does not exist by default and is not tied to location. Network access is established only when it is explicitly permitted, reducing unnecessary exposure and removing assumptions based on network position.

<figure><picture><source srcset="/files/RvkIuSf4DNNK9IGKw9R1" media="(prefers-color-scheme: dark)"><img src="/files/WE499pkCooz1D8V73m3i" alt=""></picture><figcaption></figcaption></figure>

*<mark style="color:$info;">Identity-scoped access prevents visibility and lateral movement.</mark>*

```
TRADITIONAL:
  Network Access → Authentication → Authorization

ENIGMA:
  Authentication → Authorization → Network Access
  (prove identity) → (check policy) → (only then, connect)
```

J1 defines how a user is admitted into the network and issued a constrained, time-bound identity. The protocol covers initial identity verification, enrollment token issuance, and on-device key generation, establishing the cryptographic basis for authenticated access. Because this step anchors all subsequent trust and routing decisions, compromise at this layer would enable impersonation, interception, or unauthorized access, making it one of the system’s highest-risk entry points.

```angular-ts
// J1: USER ENROLLMENT PROTOCOL

// Phase A: Enrollment Token Acquisition
function requestEnrollment(user, enrollmentService):
    claim = user.createIdentityClaim()
    proof = user.proveIdentity()  // External verification

    // Service validates with Controller
    approved = controller.validateClaim(claim, proof)

    if approved:
        token = JWT.create({
            sub: hash(claim),
            iss: enrollmentService.id,
            aud: "ravid_network",
            exp: now() + TOKEN_VALIDITY,
            epoch: currentEpoch,
            constraints: {
                allowed_services: ["service_a", "service_b"],
                max_sessions: 3
            },
            nonce: randomBytes(32)
        })
        return token.signWith(enrollmentService.privateKey)

// Phase B: Key Generation (on user device)
function generateIdentityKeys():
    sk_user = secureRandom(32)           // Private key (secure enclave)
    pk_user = Ed25519.publicKey(sk_user) // Public key

    csr = createCSR({
        subject: identityClaim,
        publicKey: pk_user,
        extensions: {
            keyUsage: ["digital_signature", "key_encipherment"],
            epochBound: currentEpoch,
            tokenHash: hash(enrollmentToken)
        }
    })

    return signCSR(csr, sk_user)

// Phase C: Certificate Issuance
function issueCertificate(enrollmentToken, signedCSR, edgeRouter):
    // Validation checks
    assert verifyTokenSignature(enrollmentToken)
    assert tokenNotExpired(enrollmentToken)
    assert tokenNotRevoked(enrollmentToken)
    assert verifyCSRSignature(signedCSR)
    assert epochIsCurrent(signedCSR.epochBound)

    // Issue X.509 certificate
    cert = CA.issueCertificate({
        version: 3,
        serialNumber: generateUnique128Bit(),
        issuer: "CN=RAVID Intermediate CA, O=Enigma",
        subject: "CN=<identity_id>, O=Enigma Users",
        publicKey: signedCSR.publicKey,
        validity: {notBefore: now(), notAfter: now() + CERT_VALIDITY},
        extensions: {
            subjectAltName: "URI:enigma:identity:<id>",
            ravidEpochBound: currentEpoch,
            ravidServiceBindings: allowedServices,
            crlDistributionPoints: revocationEndpoint
        }
    })

    return CA.sign(cert)

// Phase D: Authenticated Session (mTLS)
function establishSession(userCert, edgeRouter):
    // Full mutual TLS handshake
    clientHello = {versions, cipherSuites, keyShare}
    serverHello = edgeRouter.respond(clientHello)

    // Both sides present certificates
    user.presentCertificate(userCert)
    edgeRouter.presentCertificate(routerCert)

    // Derive session keys
    sharedSecret = ECDH(user.ephemeralKey, router.ephemeralKey)
    sessionKeys = HKDF(sharedSecret, user.pk, router.pk)

    return EncryptedSession(sessionKeys)
```


# Trust Model

This table defines the trust assumptions and failure boundaries of RAVID. Each subsystem is anchored to a distinct trust primitive, with explicit conditions under which that assumption would fail.

| Component            | Trust Anchor        | Failure Mode                 |
| -------------------- | ------------------- | ---------------------------- |
| **Network Identity** | X.509 Certificates  | Requires CA compromise       |
| **Compute**          | BFT Consensus (80%) | Requires 80%+ collusion      |
| **Key Material**     | Shamir (2-of-3)     | Requires 2+ share compromise |
| **Economics**        | Ethereum            | Requires 51% attack          |
| **Randomness**       | Blockhash           | Requires miner collusion     |

Shamir Secret Sharing is a well-established cryptographic primitive. By defining a concrete reconstruction threshold, RAVID avoids reliance on implicit operator trust.

```angular-ts
// SHAMIR SECRET SHARING (2-of-3)

// Problem: Store secret S so that:
//   - No single party holds complete secret
//   - k-of-n parties can reconstruct
//   - k-1 parties learn nothing

function splitSecret(secret, k=2, n=3):
    // Create random polynomial of degree k-1
    // f(x) = secret + a₁x + a₂x² + ... + a_(k-1)x^(k-1)

    coefficients = [secret]
    for i in range(1, k):
        coefficients.append(randomFieldElement())

    // Generate shares: points on the polynomial
    shares = []
    for i in range(1, n+1):
        y = evaluatePolynomial(coefficients, i)
        shares.append((i, y))

    return shares  // [(1, f(1)), (2, f(2)), (3, f(3))]

function reconstructSecret(shares):
    // Lagrange interpolation to find f(0) = secret
    secret = 0
    for (i, y_i) in shares:
        L_i = lagrangeBasis(shares, i, 0)  // Basis polynomial at x=0
        secret += y_i * L_i
    return secret mod p

// Visual: 2-of-3 example (a line)
//     y
//     │      •(3, f(3))
//     │    •(2, f(2))
//     │  •(1, f(1))
//   S─•────────────  ← Secret is y-intercept
//     └────────────x
//
// Any 2 points define the line → can find S
// 1 point alone → infinite lines possible → S unknown
```


# EPN

<figure><picture><source srcset="/files/vyfYGSM5P8EQ5wdTvCJn" media="(prefers-color-scheme: dark)"><img src="/files/BRSLjarrjyY9AWuX3ahi" alt=""></picture><figcaption></figcaption></figure>

*<mark style="color:$info;">Comparison of a traditional VPN architecture and an EPN deployment built on Enigma.</mark>*

The Enigma Private Network (EPN) is an application that provides secure, private connectivity for distributed systems. EPN uses Enigma’s identity layer and dynamic network layer to establish encrypted sessions and manage access without relying on fixed network endpoints. This enables teams and services to connect in environments where traditional static VPNs or centralized gateways are vulnerable. EPN illustrates how scoped identity and coordination can be used to enforce access permissions.\
\
**EPN demonstrates:**

* Identity-scoped access without shared network visibility
* Dynamic routing without long-lived tunnels
* Access enforcement independent of network topology


# Echo

Echo is a messaging application built on Enigma’s core primitives. It provides authenticated, identity-scoped signaling between participants, allowing systems to exchange data over the dynamic network layer. Echo demonstrates how identity and authorization models can support multi-party coordination without requiring centralized message brokers or persistent connections.\
\
**Echo demonstrates:**

* Authenticated signaling across changing network paths
* Coordination without centralized brokers or global trust
* Identity-based authorization for data exchange


# Vault

Vault is a secure storage application that shows how encrypted data can be managed on top of Enigma’s infrastructure. Vault fragments and distributes encrypted data across available storage resources, reassembling it only when needed under authorized access. This model illustrates the storage layer’s ability to handle data without relying on static storage endpoints, while enforcing access control through scoped identities.\
\
**Vault demonstrates:**

* Fragmented, distributed storage without persistent data locality
* Access-controlled reassembly based on identity and policy
* Storage behavior independent of underlying infrastructure ownership


# Tokenomics

ENX is the coordination/governance token used within the Enigma system. It is deployed as an ERC-20 token on Ethereum, which serves as the reference environment for coordination and policy signaling.

```
Ticker: $ENX
Contract Address: 0x0511Df77e420c9c37B065Ddb7973d0f81430a092
Chain: ERC-20 (Ethereum)
```

```
Total Supply: 100,000,000
70% - Circulating supply (Uniswap V2)
10% - Growth fund
10% - Enigma protocol
5%  - Reserves
5%  - Team
```


# Compliance

Enigma is designed to operate within existing legal frameworks. Data sovereignty and compliance controls are built into the architecture.

| Standard         | How Enigma Supports              |
| ---------------- | -------------------------------- |
| **GDPR**         | Network-enforced data residency  |
| **NIST 800-207** | Native zero-trust architecture   |
| **FIPS 140**     | Validated cryptographic controls |

```
DATA SOVEREIGNTY:

• Geo-Bound Compute: Nodes restricted to approved locations
• Policy-Driven Routing: Traffic never touches blocked regions
• Cryptographically Enforced: Residency proven, not promised
```


# Glossary

| TERM             | DEFINITION                                                            |
| ---------------- | --------------------------------------------------------------------- |
| **RAVID**        | Randomized Adaptive Virtual Infrastructure Defense                    |
| **DETSA**        | Deterministic Execution with Time-Domain Security Amplification       |
| **Epoch**        | Time period between motion events, tied to Ethereum blocks            |
| **Shamir SSS**   | Secret sharing scheme where *k-of-n* parties can reconstruct a secret |
| **mTLS**         | Mutual TLS — both client and server present certificates              |
| **BFT**          | Byzantine Fault Tolerant — consensus survives malicious actors        |
| **ENX**          | Enigma’s ERC-20 coordination token                                    |
| **Dark Service** | Service with no exposed ports on the underlay network                 |


