Bando Docs
Launch AppLearn More
  • Bando for Developers
    • The On-chain Spending Protocol
    • Quickstart
    • Glossary
    • Use Cases
    • Protocol Architecture
      • Payment Reference Validation
      • Order Request
      • Order Fulfillment
      • Refunds
  • Spending Widget
    • Widget Quick Start
    • Installation
    • Configuration
    • Customization
    • Localization
    • Wallet Management
    • Framework Integration
      • Next.js
      • Svelte
  • Fulfiller API
    • Get Started with the API
    • Authentication
    • Guides
      • Get Available Products
      • Get a Payment Reference
      • Validate a payment reference
      • Get a Quote
      • Get Available Tokens for a Chain
    • API Reference
  • EVM Smart Contracts
    • EVM Smart Contracts | Architecture
    • Contracts
      • Core
        • BandoERC20Fulfillable
        • BandoFulfillmentManager
        • BandoFulfillable
        • BandoRouter
        • FulfillmentTypes
      • Libraries
        • FulfillmentRequestLib
        • SwapLib
      • Periphery
        • ERC20TokenRegistry
        • FulfillableRegistry
      • Proxy
        • Upgradeability
    • Security
      • Access Control
      • Security Considerations
      • Rekt Test
      • Audits
    • Code
Powered by GitBook
On this page
  • Component Interactions
  • Entry Points
  • Data Flow
  • Proxy Architecture

Was this helpful?

Edit on GitHub
  1. EVM Smart Contracts

EVM Smart Contracts | Architecture

Component Interactions

Entry Points

  • BandoRouter: The main entry point for users to submit fulfillment requests

  • BandoFulfillmentManager: The entry point for fulfillers to register fulfillment results

Data Flow

  1. Request Submission:

    • User submits a request through the BandoRouter

    • Router forwards the request to the appropriate fulfillable contract

  2. Fund Management:

    • BandoFulfillable holds native currency in escrow

    • BandoERC20Fulfillable holds ERC20 tokens in escrow

    • Both contracts track fulfillment records and manage fund pools

  3. Fulfillment Registration:

    • Fulfiller submits fulfillment results to the BandoFulfillmentManager

    • Manager validates the fulfiller's authorization with the FulfillableRegistry

    • Manager registers the result with the appropriate fulfillable contract

  4. Fund Release:

    • Upon successful fulfillment, funds are released to beneficiaries

    • Fees are accumulated for fulfillers

    • In V1.2, funds can be swapped to stablecoins before release

Proxy Architecture

Each core contract is deployed behind a proxy:

  • BandoRouterProxy: Proxy for the BandoRouter

  • BandoFulfillmentManagerProxy: Proxy for the BandoFulfillmentManager

  • BandoFulfillableProxy: Proxy for the BandoFulfillable

  • BandoERC20FulfillableProxy: Proxy for the BandoERC20Fulfillable

  • FulfillableRegistryProxy: Proxy for the FulfillableRegistry

  • ERC20TokenRegistryProxy: Proxy for the ERC20TokenRegistry

PreviousAPI ReferenceNextContracts

Last updated 5 days ago

Was this helpful?