Moonbeam is a protocol that uses Bitcoin payment channels to facilitate instant off-chain payments between multi-user platforms.
Moonbeam doesn't require segwit or larger blocks, and can be deployed on the Bitcoin network today.
This repository contains the protocol specification, documentation and reference implementation.
Moonbeam is designed especially for use by multi-user platforms such hosted wallets, exchanges and payment processors. We envisage that these platforms will open Moonbeam channels between one another and route their users’ payments through them.
Even though Moonbeam is a point-to-point system, it is still designed to work in a decentralized way. An address in Moonbeam looks like this:
mgzdqkEjYEjR5QNdJxYFnCKZHuNYa5bUZ2+mb7vCiK@example.com
The @example.com piece means that this address is handled by the example.com domain. Platforms can use these domain names to automatically open Moonbeam channels and send payments without any prior arrangements or agreements, as long as they implement the Moonbeam protocol.
Moonbeam is designed to be easily adopted by users. Moonbeam addresses contain standard Bitcoin addresses so that they can be trivially used with existing Bitcoin software. This also gives platforms flexibility in implementing Moonbeam (e.g. they can implement sending only, receiving only, both, or even selectively per-payment).
Overview - High-level overview of the system
Quickstart - Send your first Moonbeam payment on testnet in minutes
Specification - The full protocol specification
Go Package Documentation - Documentation for the reference implementation packages
https://bitcoinmoonbeam.org - Demo server on testnet
Mailing list - Discussions about Moonbeam
This repository contains a reference client and server implementation written in Go. They can be used standalone but the packages in this repository are primarily designed to be imported into larger applications.
The Moonbeam protocol and reference implementation are still experimental. They may still undergo non-backwards compatible changes. The reference implementation requires further hardening.
Improvements to the reference implementation, protocol specifications and documentation are welcome! Pull requests will undergo review before they can be merged.