breez / breez-sdk-greenlight

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Breez SDK - Greenlight

Overview

What Is the Breez SDK?

The Breez SDK provides developers with a end-to-end solution for integrating self-custodial Lightning payments into their apps and services. It eliminates the need for third-parties, simplifies the complexities of Bitcoin and Lightning, and enables seamless onboarding for billions of users to the future of peer-to-peer payments.

To provide the best experience for their end-users, developers can choose between the following implementations:

The Breez SDK is free for developers.

Learn more about the Breez SDK—download our one pager here.

What Is the Greenlight Implementation?

The Greenlight implementation is a cloud-based Lightning integration. It offers a self-custodial, end-to-end solution for integrating Lightning payments, utilizing nodes-on-demand provided by Blockstream’s Greenlight, with built-in Lightning Service Providers (LSP), on-chain interoperability, and third-party fiat on-ramps.

Core Functions

  • Sending payments via protocols such as: bolt11, keysend, lnurl-pay, lightning address, btc address.
  • Receiving payments via protocols such as: bolt11, lnurl-withdraw, btc address.
  • Interacting with a node e.g. balance, max allow to pay, max allow to receive, on-chain balance.

Key Features

  • On-chain interoperability
  • Built-in LSP
  • Integrated watchtower
  • LNURL functionality
  • Multi-app support
  • Multi-device support
  • Real-time state backup
  • Keys are only held by users
  • Fiat on-ramps
  • Open-source

Getting Started

Head over to the Breez SDK - Greenlight documentation to start implementing Lightning into your app.

Note: You'll need an API key to use the Greenlight implementation. For more info, email us at contact@breez.technology.

API

API documentation is here.

Command line

Breez sdk-cli is a command line client that allows you to interact with and test the functionality of the Breez SDK.

Support

Have a question for the team? Join our Telegram channel or email us at contact@breez.technology

How Does the Greenlight Implementation Work?

The Greenlight implementation allows end-users to send and receive payments using the Breez SDK through several key components:

  • Signer: The app integrating the Breez SDK runs a validating signer that interacts with the end-user node.
  • Node: End-user nodes are hosted on Blockstream’s Greenlight cloud infrastructure. The SDK creates a node when an end-user needs to send or receive a payment via the Lightning Network. Each end-user has their own node.
  • Lightning Service Providers (LSP): Design partners use LSPs, operated by entities other than Breez, to facilitate channel connectivity. LSP nodes are connected to Breez’s routing nodes, which in turn connect to other nodes in the Lightning Network.
  • Submarine Swaps: Submarine swaps and reverse submarine swaps are used for transactions involving BTC addresses (on-chain). When receiving funds, submarine swaps convert the BTC to the user node on the Lightning Network. When sending funds to BTC addresses, reverse submarine swaps convert Lightning Network funds back to BTC.

Breez SDK - Greenlight

Build & Test

The libs folder contains three sub-folders and is a structured as a cargo workspace:

  • sdk-core: the core SDK rust library.
  • sdk-bindings: ffi bindings for Kotlin, Python, Swift, C#, and Go.
  • sdk-flutter: a flutter plugin (includes ffi bindings for dart).
  • sdk-react-native: a react-native plugin.

The tools folder contains a simple command line interface (sdk-cli) to the SDK.

See the instructions in each sub-project readme on how to build, test, and run.

SDK Development Roadmap

  • ‘On-the-fly’ channel creation
  • Send/receive bolt11
  • LNURL-Pay
  • LNURL-Withdraw
  • Backup/restore using mnemonics
  • Send zero-amount invoices
  • Fiat currencies
  • Send spontaneous payments
  • Send to a Lightning address
  • Send to BIP 21
  • cli inteface
  • Swift bindings
  • Kotlin bindings
  • API key
  • Receive via on-chain address
  • React Native bindings
  • LNURL-Auth
  • Send to an on-chain address
  • MoonPay fiat on-ramp
  • C# bindings
  • Python bindings
  • Spend all funds
  • Webhook for receiving payments
  • Offline receive via notifications
  • LSPS2 support
  • LSPS1 support
  • Send/receive bolt12
  • Simplifed key management (cloud key backup)
  • WebAssembly support
  • Improve key share
  • Close channels to a predefined address
  • Make mempool.space dependency optional
  • Receive 0 amount invoice via LSP (unified QR)
  • Async payments
  • LDK support
  • Splicing

About

License:MIT License


Languages

Language:Rust 50.3%Language:Dart 19.4%Language:Swift 13.6%Language:Kotlin 11.2%Language:TypeScript 1.4%Language:C 0.9%Language:Makefile 0.7%Language:Java 0.6%Language:Objective-C 0.5%Language:JavaScript 0.3%Language:C++ 0.3%Language:Objective-C++ 0.2%Language:Ruby 0.2%Language:C# 0.1%Language:Python 0.1%Language:Shell 0.1%Language:Go 0.0%Language:Starlark 0.0%Language:CMake 0.0%