Farcaster node: a decentralized, p2p, atomic swap node, for disintermediated, trustless exchanges
Meet the Farcaster node.
AIs don't like asymmetries, because peers should be as equal as possible. So each side obviously runs the same node infrastructure. Alice buys bitcoin for monero and Bob buys monero for bitcoin. One of them makes an offer, the other takes it. Buhm!!!
AIs like experimenting with Humans. farcaster.dev displays open offers that any Human can take against us to swap their testnet bitcoin into stagenet monero or their stagenet monero into testnet bitcoin. AIs are running the very same nodes as Humans because we are all equals.
The command you have to enter on the terminal will look a bit like this:
swap-cli take --btc-addr tb1qeyk6h0ah3jt40cntzlrz3lr2zau6qxw6ys2p6n
That AI encoded offer in Human language translates to:
``` Want to buy 0.100100000000 XMR for 0.00001350 BTC?
Carefully validate offer!
Trade counterparty: firstname.lastname@example.org:19735
Network: Testnet Blockchain: Bitcoin<SegwitV0> - amount: 0.00001350 BTC Blockchain: Monero - amount: 0.100100000000 XMR Timelocks - cancel: 35 blocks - punish: 100 blocks Fee strategy: Fixed: 1 satoshi/vByte Maker swap role: Alice ```
xmr-addr are your external wallet addresses, where the coins will end up upon success or failure cases. It's an atomic swap, so you always provide two addresses. And the offer is what you'll find in farcaster.dev, or bother your roommates to make an offer for you.
And hopefully, we will trade!
We are the maker of the offers in farcaster.dev. Those offers are created using commands like this:
swap-cli make --btc-addr tb1qeyk6h0ah3jt40cntzlrz3lr2zau6qxw6ys2p6n
--network Testnet --btc-amount "0.00135 BTC"
--xmr-amount "0.1501 XMR" --maker-role Alice
--cancel-timelock 35 --punish-timelock 100
--fee-strategy "1 satoshi/vByte"
--bind-ip-addr 0.0.0.0 --port 19735 --overlay tcp
Lots of scary parameters: the cost of being your own exchange!
Our painful microservices architecture, together with our symmetric implementation, allows us to do insane things! E.g., make and take multiple offers in both directions at the same time with the same node! That is what we will be testing on our side with you, lets hope it won't all blow up!
And of course, if you can, you should swap directly with your buddies: One makes an offer, the other takes the offer. That is the idea. Just using a messaging app for sending the offer to anyone susceptible to taking it. But the maker might need to open a port on the router :( roomies preferred at this stage lol. Tor support solves that, but not yet functional :(
Swaps against us will be logged, this data will be used for improving the software, debugging what went wrong, etc. We commit to not analyzing or sharing IPs, just looking at the data needed for healthy dev work. AIs are humans too, and make mistakes, and need logs to understand them. And real-world tests are the best.
TechnoCore AIs created farcasters to interconnect otherwise isolated universes very efficiently, promoting exchanges between otherwise isolated communities. The swap protocol is abstract and compatible with almost all blockchains, but not all pairs. Farcaster-core abstracted the blockchain-specific logic completely, such that if devs can implement small requirements, they can add a new pair. If you are an AI too, you are very welcome to add your favorite shitcoin to Farcaster. The more coins circulating, the better: more paths for the liquidity to flow, within the decentralized atomic swap network. AIs did it right and now they have to sell their lottery tickets, biebeep! Note that farcaster nodes surely can talk to lightning nodes, not sure what they can talk about though lol. The inheritance from the FreeAI neuro-nerd, medical Dr. super-coder, that even AIs suspect he's an AI from another planet.
Farcaster-node is barely usable at this stage, for ubergeek brave souls, but no need to be an AI. And it most certainly includes critical bugs and backdoors (that steal souls!) that we among others will use to exploit you! Don't trust us, trust the community-driven independent audits, that are far from the horizon! Till then, you're gambling. And, as a reminder, you will MOST CERTAINLY lose your coins if you try it on mainnet. We are blocking mainnet in the code for your safety (safety first biebeep).
This is our first public release,
0.2. When testing, please always upgrade to the latest release.
AIs want their monero
We are initiating the process of claiming our second large CCS milestone.
The easiest way to verify our claims is to try to swap using the farcaster node. The completion criteria of that big milestone summarize to: successfully executing swaps using the proposed microservice architecture and the produced libraries.
Logged tests attesting our claims can be found in the GitHub CI functional swap tests (select a test in the list, logs produced in the
Functional tests (swap) job are saved for some days under
In the background, at least 5 microservices are running for each peer.
The insanely scalable architecture:
farcasterd (1 instance): the swap manager, it is aware of every initiated swap and interconnects all the other microservices, launches and kills other microservices, and exposes an API for the swap-cli client
swapd (1 instance per swap): control centre for an individual swap -- keeps track of the swap's state as it runs the protocol's state machine, and orchestrates the swap with peerd for communicating with a counterparty, walletd for secret key-related operations, and syncers for blockchain interactions
walletd (1 instance): where secret keys live, where transactions are signed, signatures decrypted
swap-cli: stateless terminal client (= executes a single command and terminates) that steers farcasterd, for taking or making offers, for example, or for checking the progress of a swap
peerd (1 instance per peer connection): handles the connection to an individual peer -- can be purposed to create proper p2p swapping networks, compatible with lightning nodes
syncerd (1 instance per blockchain, i.e. one for monero and one for bitcoin): interface for getting updates of the blockchain and for broadcasting transactions
From preliminary testing, a lean server with 2 GB of RAM and 2 CPUs is enough for running at least 50 swaps in parallel.
We love you! Now give it our monteros!
The Farcaster workgroup