Interledger logo (full color) Interledger Foundation Interledger Github

Hackathon resources

Open Payments

Challenge

Use the Open Payments API to build a working PoC and demo it on stage!

If you're looking for inspiration, here are some ideas we came up with:

  1. An e-commerce application with a "pay with Open Payments" flow.
  2. A subscription service built with Open Payments APIs.
  3. An application that uses pay-as-you-go, and takes advantage of the Open Payments APIs grants - giving access for an application to gradually make payment from user accounts up to a limit.
  4. Port the Open Payments SDK in another language (the current SDK was built with Node.js & TypeScript - see GitHub repo).

Documentation

Open Payments (OP) is an open RESTful API and API standard that enables clients, such as mobile and web apps, to initiate payments from and view transaction history on their users' OP-enabled accounts. Application developers can build in payments functionality that allows users with OP-enabled accounts to transact with other OP-enabled accounts, regardless of whether the recipient uses the same application or ASE.

Visit https://openpayments.guide for more information.

SDK

Open Payments consists of two OpenAPI specifications:

  • Resource server spec - exposes an API for performing functions against the underlying accounts
  • Authorization server spec - exposes APIs compliant with the Grant Negotiation and Authorization Protocol (GNAP) standard for obtaining grants to access the resource server API

The SDK provides exported TypeScript types generated directly from the Open Payments specifications and a NodeJS client that exposes the Open Payments API, signs requests, and validates responses.

Code Snippets

Our TypeScript code snippets allow you to build Open Payments functionality into your client, then use test wallets funded with play money to make Interledger transactions via the Open Payments API. Test wallets are set up through the Interledger Test Network, described in more detail below.

VS Code Snippets

Open Payments SDK Snippets

Our collection of VS Code snippets for the Open Payments Node SDK makes it easier for you to develop Open Payments features. The Open Payments SDK Snippets can be installed from: https://marketplace.visualstudio.com/items?itemName=InterledgerFoundation.open-payments-snippets-vscode.

Web Monetization

Challenge

Create tools or resources for Web Monetization and demo them on stage!

If you're looking for inspiration, here are a few ideas we came up with:

  1. Write or update the existing V1 tools to embed Web Monetization into a website.
  2. Create a visual indicator for web-monetized creators or platforms to interact with their Web Monetization supporters (e.g. a thank you note; celebration confetti, payment counter).
  3. Design and implement a pay-wall library that can be used by websites for one-time payments for content.

Documentation

The ability to transfer money has been a long-standing omission from the web platform. As a result, the web suffers from a flood of advertising and broken business models. Web Monetization provides an open, native, efficient, and automatic way to compensate creators, pay for content, and support crucial web infrastructure.

Visit https://webmonetization.org/docs/ for more information.

Extension

The Web Monetization extension is a browser extension that detects Web Monetization on websites using a browser API that allows the creation of a payment stream from the user agent to the website. This extension is built with React, TypeScript, and Vite.

Download extension (Chrome)

Installing the extension

  1. Extract the contents of the ZIP file to a folder on your computer
  2. Open Chrome, click the three dots in the top-right corner, go to "Extensions" and select "Manage extensions"
  3. Enable "Developer mode" using the toggle switch at the top-right of the Extensions page
  4. Click the "Load unpacked" button that appears after enabling Developer mode
  5. Choose the folder containing the extracted extension files (with the manifest.json file)
  6. Click on the puzzle piece icon in the top-right corner of Chrome, and pin the Web Monetization extension

ILP Stack Design

Challenge

Improve the Interledger technology stack (e.g. ILP, Open Payments APIs, Web Monetization API), make a PR against the standards in GitHub, and walk us through it on stage!

  1. Amend the implementation or specifications to improve, simplify, or expand the architecture or elements of the tech stack.
  2. Design alternatives to elements of the tech stack.

Interledger Protocol Stack

The Interledger Protocol (ILP) is an open protocol suite for sending payments across different ledgers without being tied to any one company, currency, or payment provider. The open architecture and minimal protocol enable interoperability for any value transfer system. To find out more, visit https://interledger.org/developers/get-started/.

SPSP

Interledger’s Simple Payment Setup Protocol (SPSP) is a minimal application-layer protocol that uses HTTPS to exchange connection information, namely the ILP address and shared secret, before an Interledger payment is initiated. The SPSP client and server then use these details to establish a STREAM connection and generate ILP packets.

STREAM

Interledger’s STREAM protocol is a multiplexed transport-layer protocol for sending packets of money and data over ILP. STREAM uses a shared secret to authenticate and encrypt multiple packets, as well as generate the conditions and fulfillments. STREAM also enables sending packets in both directions between two endpoints and automatically determines how much money and data can be sent in each packet.

ILPv4

ILPv4 is the current version of the Interledger protocol. It’s optimized for routing large volumes of low-value packets, also known as "penny switching". ILPv4 can be integrated with any type of ledger, including those not built for interoperability, and it is designed to be used with a variety of higher-level protocols that implement features ranging from quoting to sending larger amounts of value with chunked payments.

BTP

The Bilateral Transfer Protocol (BTP) is a request/response protocol for bilateral WebSocket links between Interledger connectors. When two connectors send ILP packets over HTTP POST, they each need to act as an HTTP server at times. If one connector runs behind a firewall, this may be impossible. With BTP, only one connector needs to be publicly addressable. Refer to the BTP 2.0 specification for more information.

Open Payments API

The Open Payments API exposes a set of endpoints for obtaining grants to access underlying payment accounts and to perform management tasks or otherwise interact with the accounts with the account holder's consent.

Web Monetization API

The Web Monetization (WM) API allows websites to automatically receive payments from visitors, facilitated by the visitor’s browser and their preferred WM provider. Web Monetization leverages the Interledger suite of protocols and technologies, including Open Payments, to send and receive payments. Refer to the Web Monetization specification for more information.

Interledger Test Network

The Interledger testnet is an open test environment that uses Rafiki. Rafiki is open-source software that bundles the full capabilities of Interledger with an Open Payments API implementation, making it easy for Account Servicing Entities to integrate ILP payments functionality with their backend systems.

The development team at the Interledger Foundation has built an example wallet application on the testnet at https://rafiki.money. However, for the hackathon, participants will use one of five Rafiki Labs instances.

Hackathon participants will be organized into groups and notified beforehand as to which Rafiki Labs instance to use. Participants will register with one of the links below for an Interledger Testnet wallet:

All Rafiki Labs instances will have the latest version of Rafiki integrated, and Interledger payment pointers are available for USD currency.

These Interledger Testnet instances are peered with each other so you can make payments to and from each other.

We’re excited to see what new and innovative apps you can build on the Interledger testnet!

Test Wallets

The Interledger testnet is comprised of several components, which include an example wallet application where you can create multiple wallets and send money between them. Get started with creating test wallets at https://rafiki.money.

Rafiki Local Playground

The Rafiki local playground provides the following suite of utilities that you can use to build applications and test locally.

  • A mock Account Servicing Entity (ASE) with its Rafiki instance.
  • An SPSP endpoint.
  • An implementation of the Open Payments APIs with GNAP auth endpoints support.
  • A STREAM endpoint for receiving Interledger packets.
  • An Admin UI to view and manage the Rafiki instance.
  • A simple request signing service that is used by Postman to generate request signatures required by the Open Payments APIs.

Visit https://rafiki.dev/integration/playground/overview/ for more information.

TigerBeetle

Challenge

Choose the challenge that you’re most excited about: Safety Beetle: Use TigerBeetle to improve durability and availability. Performance Beetle: Use TigerBeetle to improve throughput and latency. Experience Beetle: Use TigerBeetle to model business events as double-entry transfers between accounts. For examples of each challenge, refer to the TigerBeetle hackathon README.

Documentation

TigerBeetle is a distributed financial accounting database designed for mission critical safety and performance to power the future of financial services. Visit the TigerBeetle documentation for a quick start guide, client libraries, and other resources.