---
title: "Account Abstraction Case Study"
canonical: https://wavect.io/case-studies/account-abstraction/
language: en
description: "Boba Network Hybrid Compute lets smart contracts trigger off-chain compute and receive results back on-chain trustlessly, in one transaction."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

[← All case studies](/case-studies/)

![Account Abstraction logo](/img/clients/svg/boba-network.svg)

CASE STUDIES · 2025

Account Abstraction

# Reverse-engineered Hybrid Compute, shipped 3 production SDKs, still live.

Boba Network’s Hybrid Compute lets [smart contracts](/glossary/smart-contract/) trigger oracle-like off-chain computations and receive results trustlessly on-chain, inside a single transaction. It anchors Boba’s Account Abstraction model and differentiates it from standard L2s.

BLOCKCHAIN SDK Development 2025 Live

At a glance

Engagement SDK Development

Industry [Blockchain / L2 Developer Tools](/industries/blockchain-web3/)

Stage Enterprise · $115M raised

Engagement size Monthly retainer

Year 2025

Stack

Typescript Solidity Hardhat Ethers.js Node.js

Status Live

Live [boba.network](https://boba.network/)

## Overview

Boba Network’s Hybrid Compute lets [smart contracts](/glossary/smart-contract/) trigger oracle-like off-chain computations and receive results trustlessly on-chain, inside a single transaction. It anchors Boba’s Account Abstraction model and differentiates it from standard L2s.

## What's the challenge?

Zero documentation, no specs, just raw node code. With Boba’s team we reverse-engineered Hybrid Compute from the running system, patched live infra errors on the fly, and shipped three production SDKs against a moving target. Developers were waiting; the schedule wasn’t.

## What call did we make?

### Building the application layer while the infrastructure underneath kept moving.

> Boba's internal team was implementing Account Abstraction at the infrastructure level while we built the application layer on top. No docs, only running code that kept changing. Errors surfaced constantly, fixed in real time with their team before the next push broke something else. Two teams, one moving target, no spec.

## What We Did

Engineering inside Boba’s build, we treated the running system as the spec. Test harnesses interrogated live node behavior before any SDK code landed, and failed loudly when the infra shifted underneath. From there: backend SDK for off-chain compute handlers, Solidity SDK for on-chain invocation and result handling, frontend SDK for dApp access, plus working examples. Three SDKs that survived every silent infra change, still in production.

## Outcomes

### 3 SDKs - Backend · Contract · Frontend
- **Category:** Speed

### Still live - On Boba Network
- **Category:** Signal

Want outcomes like these on your build?

Fixed scope. Fixed deadline. Signed SoW.

[Get in touch](/contact/)

## What We Learned

Undocumented infrastructure forces you to treat the running system as the spec. Test harnesses that interrogated live node behavior before any SDK abstraction paid off every time the infra changed without notice. The same discipline is available in the free [ERC-4337 UserOperation debugger](/tools/erc-4337-useroperation-debugger/) for captured operations and reverts.

## Tech Stack

- [Typescript](https://www.typescriptlang.org/)
- [Solidity](https://soliditylang.org/)
- [Hardhat](https://hardhat.org/)
- [Ethers.js](https://docs.ethers.org/)
- [Node.js](https://nodejs.org/)

## Tags

- Account Abstraction
- Hybrid Compute
- SDK
- Layer 2

## Links & Resources

[Boba Network](https://boba.network/) [Enya Labs](https://enya.ai)

Related services

- [Blockchain Development](/services/blockchain/)
- [Custom Software Development](/services/software-development/)

Client references and trademarks

Wavect publishes these case studies about its own work. Client names, logos and trademarks are the property of their respective owners and are used here to identify the work, not to imply any partnership, sponsorship or endorsement. Each case study describes Wavect's own contribution inside a larger effort, and other parties, including the client's own teams and other vendors, contributed to the results. Figures attributed to a client are that client's own reported numbers. Figures about our work come from our records as of the review date, and we provide evidence on request. Reviews are reproduced from the platform named on each card and link to their source. We do not publish the commercial terms of any engagement, and product screenshots remain the property of the client shown. If you are named here and want a correction, a change or a removal, write to us and we will act on it: [office@wavect.io](mailto:office@wavect.io)

### [ZybraMoney](/case-studies/zybra-money/)

ZybraMoney is an Africa-focused FinTech backend handling group savings (ROSCA flows), wallet-linked journeys, payments, transfers, referrals, and the security …

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/case-studies/account-abstraction/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-05-21",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-05-21",
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          ".faq-question",
          ".faq-answer"
        ]
      },
      "url": "https://wavect.io/case-studies/account-abstraction/"
    },
    {
      "@id": "https://wavect.io/verified-claims.json#boba-hybrid-compute-sdks",
      "@type": "Claim",
      "appearance": {
        "@id": "https://wavect.io/case-studies/account-abstraction/#webpage",
        "@type": "WebPage",
        "inLanguage": "en",
        "url": "https://wavect.io/case-studies/account-abstraction/"
      },
      "author": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "dateModified": "2026-08-04",
      "identifier": "boba-hybrid-compute-sdks",
      "inLanguage": "en",
      "text": "Wavect engineered 3 production SDKs for Boba Network Hybrid Compute (backend, contract and frontend) together with Boba Network's team, reverse-engineered from undocumented infrastructure and still live."
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@id": "https://wavect.io/case-studies/account-abstraction/#case-study",
  "@type": "Article",
  "about": {
    "@id": "https://wavect.io/case-studies/account-abstraction/#project",
    "@type": "CreativeWork",
    "creator": {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ]
    },
    "dateCreated": "2025-01-01",
    "description": "SDK Development engagement",
    "funder": {
      "@type": "Organization",
      "name": "Account Abstraction"
    },
    "name": "Account Abstraction",
    "subjectOf": {
      "@id": "https://wavect.io/case-studies/account-abstraction/#case-study",
      "@type": "Article"
    },
    "url": "https://boba.network/"
  },
  "abstract": "Zero documentation, no specs, just raw node code. With Boba's team we reverse-engineered Hybrid Compute from the running system, patched live infra errors on the fly, and shipped three production SDKs against a moving target. Developers were waiting; the schedule wasn't.",
  "author": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "datePublished": "2025-01-01",
  "description": "Boba Network's Hybrid Compute lets smart contracts trigger oracle-like off-chain computations and receive results trustlessly on-chain, inside a single transaction. It anchors Boba's Account Abstraction model and differentiates it from standard L2s.",
  "headline": "Account Abstraction, Wavect Case Study",
  "image": "https://wavect.io/img/clients/svg/boba-network.svg",
  "inLanguage": "en",
  "isPartOf": {
    "@type": "CollectionPage",
    "name": "Wavect Case Studies",
    "url": "https://wavect.io/case-studies/"
  },
  "keywords": "Account Abstraction, Hybrid Compute, SDK, Layer 2, Typescript, Solidity, Hardhat, Ethers.js, Node.js",
  "mainEntityOfPage": "https://wavect.io/case-studies/account-abstraction/",
  "mentions": [
    {
      "@type": "DefinedTerm",
      "name": "Typescript",
      "url": "https://www.typescriptlang.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Solidity",
      "url": "https://soliditylang.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Hardhat",
      "url": "https://hardhat.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Ethers.js",
      "url": "https://docs.ethers.org/"
    },
    {
      "@type": "DefinedTerm",
      "name": "Node.js",
      "url": "https://nodejs.org/"
    }
  ],
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/case-studies/account-abstraction/"
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/",
      "name": "Home",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/case-studies/",
      "name": "Case Studies",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/case-studies/account-abstraction/",
      "name": "Account Abstraction",
      "position": 3
    }
  ]
}
```
