Skip to content

AreaLayer/rust-l402

Repository files navigation

Rust L402 Protocol🦀⚡

Bitcoin-only LN Nostr crates.io Rust Crates.io Total Downloads Documentation

Rust L402 client module to consume L402 endpoints.

⚠️This client is under development

⚠️Beta version

⚠️While this code hapanned many tests, it is still beta-quality experimental software. Use at your own risk. Independent audit is welcome.

About L402 Client

rust_l402 is a comprehensive Rust crate designed to simplify the integration and handling of L402 protocol payments within the Lightning Network ecosystem. This SDK offers convenient abstractions for wallet interactions, invoice payments, and token management, making it an essential tool for developers working on Rust-based applications requiring L402 API access.

Learn more about L402 and L402 Protocol by Lightning Labs

Features

  • L402 Client: Composable L402 HTTP client to handle L402 API requests using Rust's reqwest library.
  • Wallet Interface: Facilitates invoice payments through various wallet implementations, starting with LNDsupport.
  • Token Store Interface: Manages and stores L402 tokens, allowing for efficient retrieval based on URL, host, and path with support for closest match searching.
  • Proxy: Provides a proxy service to handle L402 API requests, allowing for seamless integration with various L402-compliant payment gateways.
  • Nostr: Integrates with the Nostr protocol for secure and decentralized communication and NWC wallet support.
  • NWC Wallet: Supports the NWC (Nostr Wallet Connect) protocol for secure and decentralized communication and wallet management.
  • Paywall: Enables the creation of paywalls for content access, supporting both L402 and Nostr-based paywalls.

Getting Started

Prerequisites

  • Rust version 1.80 or higher
  • Access to an L402 compliant payment gateway (API)

Installation

To start using the Rust L402 SDK, add it to your Cargo.toml:

[dependencies]
rust_l402 = "2.0.1-beta"

Example Usage

This example demonstrates how to use the L402 client with the LND wallet to make a request to the rnd.ln.sulu.sh/randomnumber API or via FewSats, which returns a random number.

Quick Start

use rust_l402::L402Client;

fn main() {
    // Initialize the wallet and client
    let client = L402Client::new(wallet);

    // Make a request to the API
    let response = client.get("https://rnd.ln.sulu.sh/randomnumber").send().unwrap();
    
    // Print the response
    println!("Response: {}", response.text().unwrap());
}

Detailed Usage

use rust_l402::{L402Client, L402Wallet};
fn main() {
    // Initialize the wallet and client
    let wallet = L402Wallet::new(wallet_type);
    let client = L402Client::new(wallet);
    // Make a request to the API
    let response = client.get("https://rnd.ln.sulu.sh/randomnumber").send().unwrap();
    // Print the response
    println!("Response: {}", response.text().unwrap());
}

This example provides a quick overview of how to utilize the rust_l402 crate for making payments and handling L402 API requests in a Rust-based application.