Essentials Architecture
This page is for developers integrating with Essentials — building a dApp that wants users to sign in with their Elastos DID, requesting a signature, coordinating a multi-sig transaction, or shipping a fork of the wallet itself.
If you're a user who just wants to install Essentials and hold ELA, you want Essentials Wallet instead.
What it is
Elastos Essentials is a mobile application for Android and iOS built with Ionic, Angular, and TypeScript, wrapped for native devices with Apache Cordova. One codebase ships to both stores; native capabilities (camera, biometrics, secure storage) reach the web stack through Cordova plugins.
How the code is organized
Development is split across three main repositories:
| Repository | Role |
|---|---|
| Elastos.Essentials | Root "orchestrator": Cordova config, submodules, shared SDKs, plugins, and tooling that assemble the full product. |
| Elastos.Essentials.App | The main Ionic/Angular application: screens, services, modules, and translations. |
| Elastos.Essentials.API | A Node.js/Express backend for services that are awkward or unsafe to run only on the phone (multi-sig coordination, price aggregation, etc.). |
The mobile UI stays focused on user experience; the API coordinates multi-party flows and aggregates network data.
Feature modules
The app is divided into roughly 15 feature modules, each covering a major product area:
launcher— home screen and widgetsidentity— DID sessions and credentialswallet— multi-chain assetsdappbrowser— in-app Web3 browsingscanner— QR codescrproposalvoting— Elastos DAO proposalscontactssettingshivemanager— personal Hive vault setupdevelopertools- Plus governance, bridging, and migration modules
They form one coherent super-app rather than a loose bundle of single-purpose tools.
Multi-chain wallet
Essentials supports 22+ blockchain networks from one recovery phrase. Examples:
- Elastos — main chain, ESC (smart contracts), EID (identity)
- Bitcoin (common address types)
- Ethereum and EVM-compatibles — BNB Smart Chain, Polygon, Arbitrum, Avalanche, Fantom, Cronos, HECO, Gnosis, Fuse, IoTeX, Telos, Evmos, Kava, Celo
- Tron and Cosmos (ATOM) — own derivation paths
- Custom EVM networks added by RPC
EVM chains generally follow the standard Ethereum derivation path; Bitcoin uses common address types; Tron and Cosmos use their own paths. Ledger hardware wallets connect over Bluetooth on supported devices for higher assurance on large balances.
dApp browser internals
The dApp experience uses Cordova's InAppBrowser (a WebView). Essentials controls exactly what's injected before the page loads.
Four injected providers
| Provider | Typical use |
|---|---|
window.ethereum | EVM-compatible flows (ESC, Ethereum, BSC, etc.), MetaMask-compatible API. |
window.elastos | Elastos Connectivity flows: credentials, signing, intent-style calls. |
window.unisat | Bitcoin-oriented operations and compatibility shims. |
window.elamain | Elastos main chain addresses and signing. |
A single dApp can work across EVM, Bitcoin-style, and Elastos-native interfaces without forcing every site to commit to one chain's API.
Approval flow
When a dApp requests something sensitive (e.g. eth_sendTransaction), the browser pauses the page flow, Essentials shows a review screen with human-readable details, and only then signs or rejects. The pattern mirrors how desktop wallets intercept sensitive RPC calls — adapted for touch-first UI and mobile OS constraints.
Phishing protection
The browser flags known bad domains using phishing URL detection with community-maintained lists, giving the user an explicit warning instead of letting a scam load silently.
WalletConnect v2
For dApps that run outside the in-app browser, Essentials supports WalletConnect v2. Sessions persist across app restarts.
WalletConnect v1 has reached end-of-life. Do not target it for new integrations.
The Essentials.API backend
The companion Express.js service is organized into modules:
| Module | What it does |
|---|---|
| Multisig coordination | Stores pending transactions, collects signatures until the threshold is met. |
| Price feeds | Aggregated token prices for display in the wallet. |
| Staking data | Information used by staking-related UIs. |
| Chainge swaps | Proxy/integration for cross-chain swap flows. |
| App updates | Version checks and update notifications. |
Coordination and network aggregation stay off the device where appropriate, while the app remains the sole authority for keys and approvals.
Multi-signature coordination protocol
Multi-sig wallets (e.g. 2-of-3 or 3-of-5) need a way for several people to sign the same transaction. The flow:
- Record — initiator submits the pending transaction to the API.
- Sign — each signer adds their signature when ready, in any order.
- Finalize — once the threshold is reached, the assembled transaction is ready to broadcast.
- Broadcast — the final signer (or any participant) submits the assembled transaction to the chain.
The API's job is coordination — keys never leave the signers' devices.
Connectivity SDK (Elastos Connectivity SDK)
Third-party apps integrate via the Elastos Connectivity SDK, which exposes an IConnector-style abstraction. A dApp requests actions such as:
- Prove identity with DID credentials
- Sign a transaction or message
- Access Hive through the user's vault
Essentials acts as the implementation the user trusts: it shows the consent screen and uses local keys or vault sessions only after explicit approval.
The same intent-style URLs can be triggered:
- Inside the dApp browser (via injected
window.elastos) - Outside any browser (via deep links from another mobile app)
Either way, the approval surface stays familiar to the user.
You do not embed Elastos cryptography in your app. You ask Essentials (or any compatible wallet) to perform the operation the user authorizes — same pattern as MetaMask for EVM, but extended to DID, signing, and Hive.
What this means in practice
- Need to sign a user in with their Elastos DID? Use the Connectivity SDK from your web app; Essentials handles the credential request and consent screen.
- Need to ask a user to sign an EVM transaction on ESC? Use the standard
window.ethereumflow inside the in-app browser, or WalletConnect v2 from outside it. - Need to coordinate a multi-sig on the main chain? Use the multi-sig API endpoints; Essentials surfaces pending signatures in each signer's wallet automatically.
Maintenance status (2026)
The original Elastos Essentials repositories have seen varying levels of activity. Community-led forks under the Elastos DAO umbrella are typically the most actively maintained line for fixes and features as of 2026. Before relying on a build for production, check which organization's release line matches your support and distribution needs.
Related
- Essentials Wallet — user-facing landing for the app itself
- Connectivity SDK — concrete SDK reference for dApp integration
- DID Integration — using DIDs in your application
- DID Login — sign-in flow walkthrough