Skip to content

FireFly Code Overview

Developer Intro

FireFly is a second generation implementation re-engineered from the ground up to improve developer experience, runtime performance, and extensibility.

This means a simplified REST/WebSocket programming model for app development, and a wider range of infrastructure options for deployment.

It also means a focus on an architecture and code structure for a vibrant open source community.

A few highlights:

  • Golang codebase
  • Strong coding standards, including unit test coverage, translation support, logging and more
  • Fast starting, low memory footprint, multi-threaded runtime
  • OpenAPI 3.0 API specification (Swagger)
  • Generated from the API router code, to avoid divergence with the implementation
  • Active/active HA architecture for the core runtime
  • Deferring to the core database for state high availability
  • Exploiting leader election where required
  • Fully pluggable architecture
  • Everything from Database through to Blockchain, and Compute
  • Golang plugin infrastructure to decouple the core code from the implementation
  • Remote Agent model to decouple code languages, and HA designs
  • Updated API resource model
  • Asset, Data, Message, Event, Topic, Transaction
  • Added flexibility, with simplified the developer experience:

  • Versioning of data definitions

  • Introducing a first class Context construct link related events into a single sequence
  • Allow many pieces of data to be attached to a single message, and be automatically re-assembled on arrival
  • Clearer separation of concerns between the FireFly DB and the Application DB
  • Better search, filter and query support

## Directories

  • internal: The core Golang implementation code
  • pkg: Interfaces intended for external project use
  • cmd: The command line entry point
  • smart_contracts: smart contract code for FireFly's onchain logic