Hello hitchhiker, and welcome onboard to the Farcaster Specifications! The RFCs describe components that glue together to form a swap protocol between two blockchain based assets, currently focusing on Bitcoin and Monero.
Below is an index of the RFCs, loosely in the order we recommend studying them to familiarize yourself with the project.
Introduction, Glossary and Terminology Guide that will help you familiarize with the Farcaster and Atomic swap terminology.
Describes the high level concepts associated to the protocol such as roles and phases implemented inside Farcaster.
Presents from a user perspective how participants interact during the swap depending on their roles.
Provides an overview of the technical architecture of the Farcaster software stack. Lists and explains the micro-services that compose Farcaster.
Specifies the messages exchanged between daemons during a swap and the peer-to-peer management between daemons.
Specifies the tasks that syncers make available to daemons for the monitoring of chain-state through blockchain events and the broadcast of transactions.
Specifies the messages that daemons and clients expect to receive from each other. They control the state transitions of an ongoing swap and allow information to flow between a client and a daemon.
Specifies the cryptographic primitives used to transfer secrets through transactions with adaptor signatures and specifies the cryptographic setup required at the beginning of a swap to guarantee safety of funds.
Specifies the Bitcoin and Monero transactions involved in a swap with their temporal safety. Describes variants of Bitcoin transactions, depending on the SegWit version and multi-signature protocol used.
Specifies what the swap state is, state-digests summarizing the swap state, what information has to be logged for recovery, and how to recover state after failure.
Specifies the public offer format and features for version 1, allowing makers in the negotiation phase to describe a potential swap, and allowing takers to connects to makers and thus potentially trade.
This project was funded by the Monero community through the Community Crowdfunding System (CCS). Thanks to all contributors and generous anonymous donors!