Mercury Documentation
  • Get Started with Mercury
    • Pricing
    • Endpoints
    • Authentication
  • The Definitive Guide to Understanding The Mercury's Stack Vision
  • Retroshades
    • Introduction to Retroshades
    • Get Started
      • Importing the Retroshades SDK
      • Writing and Emitting Retroshades
      • Deploying to Mercury Retroshades
      • Querying Retroshades
  • Zephyr: Full Customization
    • Introduction
    • General concepts
      • Zephyr Programs
      • Accessing the Ledger: Contract Entries
      • Accessing the Ledger Meta: Contract Events
      • Database Interactions
      • Create Custom Callable APIs: Serverless Functions
      • Catchups
      • Using Soroban inside Zephyr
    • Quickstart
    • Learn
      • Introduction to Mercury's Cloud and the Zephyr Stack
      • Get Started: Set Up and Manage the Project
        • Create the Project
        • Writing the Program
        • Local Testing
        • Deploy
        • Data catchups/backfill
        • Monitor Execution
        • Querying
      • Database Interactions
        • Zephyr.toml: Define the Tables Structure
        • Understanding Database Interactions
        • Database Operations
      • Accessing the Ledger
      • Accessing Ledger Transition: Soroban Events
      • Working with Contract Custom Types
      • Working with Soroban SDK Types
      • Web Requests, Automation and Alerts.
      • Zephyr.toml Extensions: Indexes And Dashboard
      • Reading From Indexes/External Tables
      • Custom APIs - Serverless Functions
        • General Concepts
        • Custom RPC-alike Endpoints
        • Querying APIs for Composable Data
      • Data Catchups/Backfill
      • Custom Dashboards
        • Creating the Dashboard
        • Plotting: Simple
        • Complex Plotting
    • Support
  • Mercury "Classic"
    • Subscriptions
      • API Definition
    • Queries
      • Contract Events
      • Contract Data Entry Updates
      • Stellar Operations, Balances, and Account Objects
  • TUTORIALS
    • Zephyr
      • Self-hosting Zephyr
      • No-RPC Dapp
      • Indexing a DeFi liquidity pool (Blend)
      • Building a Secure DeFi Real-Time Bot Through Smart Accounts
      • Monitoring Large Deposits with Zephyr and Sending Web Alerts
    • Mercury Classic
      • Index and query contract events
Powered by GitBook
On this page
  1. Zephyr: Full Customization
  2. Learn

Introduction to Mercury's Cloud and the Zephyr Stack

Learn how the Zephyr stack works.

Note that this section is currently minimal and still a work in progress.

As mentioned in the quickstart, the Zephyr virtual machine powers the Mercury cloud execution environment. At its core, Zephyr is a WebAssembly VM like the Soroban VM, but with the focus on working with network data and interacting with databases. At the low level it is therefore structured as a messaging protocol between the guest and the host.

These "messages" are in fact database writes/reads envelopes and requesting ledger reads and web requests. All while the guest environment has the liberty of doing whatever logic is described in the program's code with the data it sends to and receives from the host environment.

The functions on which the guest relies upon to communicate with the host are the so-called host functions. Because working directly with these functions becomes low level and difficult, we have developed the zephyr-sdk crate. It currently exists only in rust, but if we see the potential for other SDKs to bring more value in the ecosystem zephyr programs could potentially be written in any language that compiles to WebAssembly.

PreviousLearnNextGet Started: Set Up and Manage the Project

Last updated 1 year ago