Erdem Yerebasmaz f6fa503cb9 Flutter uniFFI (#510)
* Flutter uniffi

* Set on-demand resources

* Do not build non-uniffi libraries

* Change iosLibName

* Add BreezSDKLiquid as on demand resources

* Use downloaded framework

* Add Sources to published flutter package

* Set OTHER_LDFLAGS

* Add logging

* Refactor library initialization logic and throw an error if initialization fails

* Do not statically link framework on production

* Use uniFFI headers to generate FlutterBreezLiquidBindings

* Re add frb header

* Correct the library name

* Remove static_framework

* Move source header files

* Copy iOS podspecs to macOS folder

* Update version of macOS podspecs

* Remove Windows & Linux support

* Remove CMake scripts

* Remove breez_sdk_liquid.podspec from version script

* Cleanup older build scripts used by melos & just recipes

* Remove softlink & copy recipes

Add recipe descriptions

* Rename link-uniffi recipe to link-headers

Make sure headers are linked after uniffi is built
  - Remove just gen recipe
Add recipe descriptions

* Set package versions on production files as well when publishing

* Include bindings project on melos script hooks

* Flutter uniffi

* Set on-demand resources

* Do not build non-uniffi libraries

* Change iosLibName

* Add BreezSDKLiquid as on demand resources

* Use downloaded framework

* Add Sources to published flutter package

* Set OTHER_LDFLAGS

* Add logging

* Refactor library initialization logic and throw an error if initialization fails

* Do not statically link framework on production

* Use uniFFI headers to generate FlutterBreezLiquidBindings

* Re add frb header

* Correct the library name

* Remove static_framework

* Move source header files

* Copy iOS podspecs to macOS folder

* Update version of macOS podspecs

* Remove Windows & Linux support

* Remove CMake scripts

* Remove breez_sdk_liquid.podspec from version script

* Cleanup older build scripts used by melos & just recipes

* Remove softlink & copy recipes

Add recipe descriptions

* Rename link-uniffi recipe to link-headers

Make sure headers are linked after uniffi is built
  - Remove just gen recipe
Add recipe descriptions

* Set package versions on production files as well when publishing

* Include bindings project on melos script hooks

* chore: just version

* fix: remove unused files on "Set package version" step

* copy FFI header files

* [WIP] Add macOS support

* remove example app on Flutter plugin

* Link headers before running ffigen on CI workflow

* macOS: add macos/Sources folder to .gitignore

.

* macOS: Copy iOS sources to macOS sources after downloading bindings

* macOS: copy sources & framework file to macos folder on build-uniffi-swift script

* import breez_sdk_liquidFFI header on plugin file

Update flutter_breez_liquid.c

* cleanup header file artifacts

---------

Co-authored-by: Ross Savage <hello@satimoto.com>
2024-10-01 10:59:11 +03:00
2024-10-01 10:59:11 +03:00
2024-10-01 10:59:11 +03:00
2024-10-01 10:59:11 +03:00
2024-10-01 10:59:11 +03:00
2024-10-01 10:59:11 +03:00
2024-06-18 09:34:47 +02:00
2024-04-29 21:49:52 +02:00
2024-09-25 03:22:22 -04:00

Breez SDK - Nodeless (Liquid Implementation)

Overview

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.

What Is the Breez SDK - Nodeless (Liquid Implementation)?

Its a nodeless Lightning integration that offers a self-custodial, end-to-end solution for integrating Lightning payments, utilizing the Liquid Network with on-chain interoperability and third-party fiat on-ramps.

Core Functions

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

Key Features

  • On-chain interoperability
  • 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 - Nodeless (Liquid Implementation) documentation to start implementing Lightning in your app.

You'll need an API key to use the Breez SDK - Nodeless (Liquid Implementation). To request an API key is free — you just need to complete this simple form.

API

API documentation is here.

Command Line

The Breez SDK - Nodeless (Liquid Implementation) cli is a command line client that allows you to interact with and test the functionality of the SDK.

Support

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

How Does Nodeless (Liquid Implementation) Work?

The Breez SDK - Nodeless (Liquid Implementation) uses submarine swaps and reverse submarine swaps to send and receive payments, enabling funds to move frictionlessly between the Lightning Network and the Liquid sidechain.

Breez SDK - Liquid

When sending a payment the SDK performs a submarine swap, converting L-BTC from a users Liquid wallet into sats on the Lightning Network, and sends them to the recipient.

When receiving a payment, the SDK performs a reverse submarine swap, converting incoming sats into L-BTC, and then deposits them in the users Liquid wallet.

Build & Test

  • cli: Contains the Rust command line interface client for the SDK - Liquid.
  • lib: Contains the root Rust cargo workspace.
    • bindings: The ffi bindings for Kotlin, Flutter, Python, React Native, and Swift.
    • core: The core SDK - Liquid rust library.
  • packages: Contains the plugin packages for Dart, Flutter, and React Native.

Within each sub-project readme, there are instructions on how to build, test, and run.

SDK Development Roadmap

  • Send/Receive Lightning payments
  • CLI Interface
  • Foreign languages bindings
  • Export/Import SDK data
  • Pay BTC on-chain
  • Receive via on-chain address
  • LNURL-Pay
  • LNURL-Withdraw
  • Send to a Lightning address
  • Receive via Lightning address
  • Real-time sync
  • Webhook for receiving payments
  • Offline receive via notifications
  • Offline swaps via notifications
Description
No description provided
Readme MIT 6.1 MiB
Languages
Rust 55.2%
Dart 23.3%
Swift 7.9%
Kotlin 6.7%
C 3.3%
Other 3.4%