RoboSats Private Bitcoin Exchange – Bitcoin Magazine
This is an opinion editorial by Okada, mechanical engineer and contributor to Bitcoin Magazine.
Generate a robot avatar today and exchange Bitcoin over the Lightning Network (LN) with simple and KYC-free RoboSats. When using RoboSats — short for Robotic Satoshis — no trade-offs are necessary between convenience, security and absolute privacy.
Note: Users should always verify for themselves the integrity of a project prior to using it. RoboSats is fully functional but is still considered an experimental Lightning application, meaning users should only transact in small amounts. Users can de-anonymize themselves using methods of payment that require AML/KYC checks like credit cards which are not recommended.
The project’s concept, inspired by P2PLNBot, emphasizes providing end-users an easy, snappy interface without impairing privacy and security. The fully open-source community project uses Lightning hold invoices as fidelity bonds and trade escrows to maximize security and minimize invasion of privacy with a close to custody-less trade pipeline. If users encounter conflict, then RoboSats staff will help resolve the dispute.
On the frontend, the peer-to-peer exchange functions similarly to eBay or Craigslist in terms of seamlessly facilitating consumer-to-consumer sales between complete strangers online. Unlike RoboSats, the prevalent problem with modern e-commerce and centralized exchanges alike is the collection of sensitive user data in the first place which is prone to exploitation by hackers and cybercriminals. Removing the requirement to register real-world identification provides users a “privacy by default” experience and ultimately a higher degree of security.
This article discusses the risks of KYC-only exchanges, how RoboSats works and a light guide to using RoboSats yourself! For readers wanting to get to the point, click the Onion Link with Tor or connect using I2P below to start buying and selling KYC-free bitcoin (connecting with other browsers is not recommended):
Onion Link: http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion/
I2P: http://robosats.i2p/?i2paddresshelper=r7r4sckft6ptmk4r2jajiuqbowqyxiwsle4iyg4fijtoordc6z7a.b32.i2p
KYC Bitcoin Hurts Users And The Network
The ability to buy and sell bitcoin privately is a fundamental necessity for a truly free Bitcoin ecosystem. Bitcoiners must leverage any privacy solutions available to strengthen both their individual sovereignty and the fungible properties of bitcoin. Exchanging fiat for bitcoin and vice versa is easily streamlined for the average buyer or seller’s convenience with centralized, custodial exchanges. However, this convenient on/off-ramp to the Bitcoin network comes at a significant sacrifice to one’s personal privacy and ultimately diminishes the fungible, permissionless nature of the Bitcoin network.
These exchanges enforce Anti-Money Laundering and Know-Your-Customer (AML/KYC) laws, where users must first submit identifying documents to the exchange as a prerequisite for using their services — effectively negating any meaningful privacy the Bitcoin network has to offer. Bitcoin sent to and from one’s account on an AML/KYC exchange becomes linked to that user’s real-world identity and enables vectors for potentially nefarious entities to track spending habits, blacklist specific bitcoin addresses and determine one’s net bitcoin wealth. As a consequence, such vectors can harm human rights activists and interests worldwide.
Increasingly invasive AML/KYC measures implemented by exchanges stress the importance of regularly utilizing non-KYC alternatives without needing to forego accessibility, user friendliness and cheap fees; indeed, RoboSats aims to accomplish just that. While there exist several non-KYC alternatives, these are relatively technical, slow and costly to average users seeking convenience and simplicity. For large amounts, it is still recommended to use on-chain escrow services such as Bisq whereas RoboSats is ideal for smaller amounts over the Lightning Network.
Given the abundance of exchange hacks, heists, outright scams and even thievery by the traditional financial institutions themselves, the reliance on centralized custodians as a guardian of one’s assets may cause more damage to the end-user’s privacy and wealth rather than actually securing it.
Furthermore, per the U.S. Department of the Treasury, the use of bitcoin and other cryptocurrencies for illicit activity remains “far below that of fiat currency and more traditional methods,” where illicit activity accounted for 0.15% of all cryptocurrency transaction volume in 2021. In other words, mandatory AML/KYC checks on the remaining 99.85% honest majority introduce the risk of your private data being leaked and consequently costing you potentially thousands of dollars in financial damage to resolve theft of compromised personal information.
An exchange that doesn’t collect your information can’t lose that information to hackers or malicious employees on the inside. At a basic level, RoboSats works to wholly empower the end-user and make individual sovereignty more accessible for all by leveraging the speed and security of the Lightning Network. Moreover, RoboSats is extremely simple for anyone to use as shown in the following example of our fictitious users Alice and Bob.
How RoboSats Works
Below is a technical flow diagram of the robot avatar generation process that ensures privacy and security while using RoboSats:
Upon loading the RoboSats homepage (accessed via Onion or I2P), a fun robot avatar is generated with a random pseudonym (nym) for Alice. The random nym (e.g., ImportedNoise683) corresponds to a private token for recovering that unique nym in the future. Safely storing the private token is critical in case Alice needs to recover her nym and access orders associated with that nym. RoboSats will automatically generate a new, unique avatar each time the homepage is freshly accessed to maximize user privacy — so back up your token!
Once Alice has her unique avatar and has also safely stored the corresponding private token, she is prepared to make an order on RoboSats or fulfill an order already made by another robot nym. Alice decides on making a new order to buy 100,000 satoshis (0.001 BTC) with euros at a desired premium and provides any method(s) of payment that she wants to accept, but must first lock a small hold invoice before publishing the order, known as the maker bond. Alice should consider accepting payment methods that are fast and are likely to match with a peer who also accepts the same payment methods.
Bob, after also generating his unique nym, wants to sell his satoshis for fiat and finds Alice’s robot nym in the order book. Bob decides that the payment method(s) in euros and the premium chosen by Alice are suitable for him and will take Alice’s buy order. Bob must also lock a small hold invoice before transacting with Alice, known as the taker bond. Now both buyer and seller have posted a small bond using LN to prove they are real users. The contract is finalized and Bob posts the 100,000 satoshis he is selling with a hold invoice while Alice submits her payout invoice.
After Bob takes the order, Alice and Bob share a private, encrypted chat room to coordinate and confirm the exchanged amount. Alice and Bob should keep their chat short and concise to avoid providing non-essential and potentially identifying information other than what is strictly necessary for the fiat payment method. Of course, like any other online chat room, being polite and following general social etiquette will make for a simpler and more pleasant peer-to-peer interaction.
RoboSats locks the invoice until Bob confirms he received Alice’s fiat payment in full and then Bob’s trade hold invoice is charged the 100,000 satoshis, which get released to Alice. Because Alice and Bob played by the rules, the maker and taker bonds originally posted are automatically returned. The bonds are only charged (lost) in the event of a peer unilaterally canceling an order after the contract is finalized or a peer trying to cheat another peer (lost dispute).
After the peer-to-peer, KYC-free transaction is completed, Alice and Bob can freely generate another unique robot nym to privately buy or sell more bitcoin! At no point did Alice or Bob have to entrust the bitcoin to each other. If Bob tried to cheat Alice by never sending his satoshis, then Alice can open a dispute; however, at the expiration of the order contract, if Bob never confirmed he received Alice’s fiat payment, then a dispute is automatically opened and Alice can earn the original payout plus the fidelity bond by submitting appropriate evidence of fraud to RoboSats staff.
The technically inclined can review the GitHub page for even greater information at the codebase level of RoboSats. With a basic understanding of how RoboSats works to match peers, stacking sats is just a few clicks away.
Getting Started Robostacking
The brief guide below is a light introduction to using RoboSats where we see how to buy bitcoin with fiat step by step. In-depth video tutorials are available by BTC Sessions, Ian Majors and Einundzwanzig (German). RoboSats also has a helpful visual and written guide as well.
First things first, you need a Lightning wallet compatible with RoboSats that is ideally non-custodial. If using your own LN node like a Raspiblitz, you will need channel peers connected to the greater Lightning Network as well as sufficient inbound or outbound channel liquidity for buying or selling satoshis, respectively.
Outbound channel liquidity can be obtained by opening a channel to a well-connected peer. Inbound channel liquidity can be acquired via buying inbound liquidity, swaps or finding a well-connected peer who will open a channel to you. Once your node has the means to send or receive a Lightning payment of at least the amount you’re trying to exchange plus the amount for the maker/taker bonds, you can begin creating or fulfilling orders on RoboSats.
Navigate to the aforementioned RoboSats Onion Link or I2P site to get started. The webpage will display a freshly generated robot avatar with a unique nym. For this session, I am your friendly neighborhood robot WoundingFreeman911:
The user is greeted with their nym (1), associated robot avatar (2) and the unique token (3) to recover that robot nym. Users can generate/recover a robot nym (4) or continue with the already-generated robot nym to make an order (5), read additional info (6) on how to use RoboSats effectively or view the live order book (7).
The unique token used to deterministically generate a corresponding robot nym should be safely stored to allow future recovery of that specific robot nym. If you close out of the browser, lose connection or refresh the page during your session, then you can input your safely stored token to recover and generate any previously created robot nym.
You can view your nym’s profile (8) and the quantity of available public buy orders (9) or sell orders (10). The number of active robots (11) is displayed as well as the expected premium (12) a user can most likely expect to pay or collect for non-KYC bitcoin, currently 4.62% at time of screenshot. The expected premium is a weighted median by volume of transactions, not a weighted mean, making it resistant to outlier orders and also discourages big players coming and scooping large orders with extreme premiums that are not representative of the retail market sentiment.
There is a selection of available languages (13), robots can find public assistance by reaching out to a RoboSats community (14) and users can view some statistics of RoboSats (15). A neat series of insightful infographics of the exchange over its lifetime can be found here.
Users can filter the order book by clicking whether or not they want to buy or sell and with which currency. Since we are looking to buy bitcoin, we find there are five other robots with varying amounts, currencies, payment methods and premiums. Certainly not your average exchange liquidity at the moment, so making your own order may be needed if there are no existing orders that work for you. Conveniently, my payment and currency preferences align with RoutineDrunkard532 as seen below:
The fastest route to exchanging bitcoin on RoboSats is taking an existing order rather than creating an order and subsequently waiting for a peer to match up with you. The average taker spends about seven minutes in RoboSats — from first generating a robot to finally receiving the bitcoin or fiat amount in a self-custodial manner — making it significantly faster to transact and self-custody compared to centralized exchanges.
If no existing order matches your preferences, create a new order to reflect your preferred amount, currency, fiat payment methods and premium. For this guide, I take RoutineDrunkard532’s order and decide to pay with a cash-bought Amazon gift card. Notice the Amazon logo with a United States flag in the lower left corner of the payment method icon. If I am to take an order using an Amazon gift card, then I need to purchase an Amazon gift card that works for the country indicated — in this instance, an Amazon USA gift card.
We are presented with the order box, a preview of the maker’s order before confirming I want to take it. The seller’s robot avatar has a green dot in the top right corner, meaning the seller is online and likely to respond in a timely fashion. In this order, my peer is selling $100 worth of bitcoin at an 8% premium. While I could look for a more competitive premium, paying with an Amazon gift card is very convenient for me and the above average premium is worth it if I can use the gift card as a payment method. RoboSats will show a Lightning invoice after taking the order and then I will send a Lightning payment for the taker bond:
The taker bond is 12,575 sats in total, or 3% of the dollar amount of bitcoin I’m buying. The bond will be returned to me upon completion of the transaction, assuming I behave like a good robot and do not try to cheat my peer or unilaterally back out of the order. Using my Lightning wallet, I send the payment instantly using the Lightning invoice that was provided. RoboSats has me confirm a Lightning or on-chain address to ensure I am able to receive the funds prior to sending my peer the fiat payment:
And below, I again use the Lightning wallet to submit a valid invoice for the 418,460 satoshis ($100 worth of bitcoin at an 8% premium) I will be receiving in exchange for fiat:
I have set the invoice expiry to match the expiry of the order’s deposit timer at three hours, giving the seller adequate time to send bitcoin to the submitted Lightning invoice. The next step is chatting with the seller to coordinate the exchange of bitcoin for fiat:
Keeping the conversation concise is ideal and, most importantly, do not share any identifying information besides what is absolutely necessary for the chosen fiat payment method. With a cash-bought Amazon gift card, there is no identifying information associated with it, I only need to share the redemption code on the back of the gift card with the peer so they can confirm the code is indeed legitimate.
At any point during the chat, I can “audit PGP” and verify the privacy of this chat using any tool based on the OpenPGP standard. As well, I can request a “collaborative cancel” of the transaction with my peer and our bonds are returned. If you close non-collaboratively, then you will forfeit your bond and lose those satoshis. If anything smells fishy, I could also look to “open a dispute” for the RoboSats team to review. My peer, RoutineDrunkard532, was very polite and made for an easy experience:
After sending the fiat payment, I click the button to “confirm USD sent” as seen in the image above. The peer will verify they have received my fiat payment and confirm on their end by clicking a similar button on their screen. The trade is finalized and my Lightning wallet received the bitcoin I bought using an Amazon gift card:
It really is that simple. My taker bond was unlocked and I received 418,460 sats totally KYC-free through a close to custody-less trade pipeline. Excluding time spent withdrawing cash and buying the gift card in person (about half an hour), the exchange transaction took less than ten minutes from start to finish. As evidenced by my transaction, the whole point of RoboSats is to streamline the experience to the max while also mitigating the chances for any end-user error. After acquiring your (potentially first) KYC-free bitcoin, enjoy the sovereign individual lifestyle!
Another possible use for RoboSats is as a peer-to-peer swap market for Lightning and on-chain BTC. Instead of using fiat to buy or sell, users can swap on-chain bitcoin for Lightning liquidity and vice versa. Shown below, the proposed order is seeking to buy 0.022 BTC off-chain in exchange for on-chain BTC. Additionally, swap liquidity providers can implement a desired premium (i.e., 0.3%) and gain a net profit as the liquidity provider.
The sleek frontend of RoboSats makes the process very easy and digestible for novice users. Making and taking orders is simple and will likely suffice for any casual user. However, advanced options geared toward advanced users and larger liquidity providers are good for more specific order requests.
In the above example, a sell order is customized with advanced options allowing the taker to choose an amount within the selected range of $100 to $300 and an increased minimum fidelity bond from 3% to 5%, thereby requiring more skin in the game but higher assurance of safety from scammers.
Allowing bondless takers is planned as another option for orders of 50,000 satoshis or less but also carries increased risk. Newcomers to LN without capital or limited financial ability to put up the funds for a fidelity bond could take orders allowing bondless takers in exchange for a higher premium due to the added counterparty risk.
The expiry timers specifying the time of expiry of a public order are also modified from the maximum 24-hour public duration and the three-hour escrow deposit time-out, both of which are the default expiry timers for a non-custom order. For my example order above, I’ve chosen a 12-hour public duration expiry since I am not awake 24/7, and a five-hour window for escrow deposit time-out because I may not be at my computer for hours at a time during the day.
Such advanced features can pose design challenges for a user interface emphasizing straightforwardness and simplicity. Certain advanced options will need to be visible when navigating the order book which may cause information overload and deter unconfident newcomers. Of course, some participants value such features and a means to filter the order book between simple and advanced orders could alleviate the potential confusion for first-time users.
Limitations Of RoboSats
RoboSats can provide enormous benefits for protecting user privacy and proves demand exists for a private, peer-to-peer, KYC-free exchange over LN. Yet RoboSats isn’t a magic elixir for privacy and users should be aware of the platform’s limitations before assuming sovereign invincibility.
Your transactions are only as private as you make them. Payment methods, although totally up to the order maker to define, can become checkpoints for AML/KYC registration like Venmo, Cash App and PayPal. It is important to note that with PayPal, a widely used fiat payment method, a buyer can act fraudulently using PayPal’s buyer protection policy by creating a refund request in PayPal after the trading process in RoboSats is completed, taking both fiat and bitcoin all for themselves. This form of fraud can be prevented by agreeing with the buyer to send the money using the option to “send money to a friend or family member.”
If a user is indeed cheated by their peer and seeks arbitration through filing a dispute, then the user will be dependent on the RoboSats reviewers for mediation of any disputes and claims of scamming. This is the plain reality of using a still-experimental and fully open-source exchange in lieu of a company’s centralized exchange. But interestingly enough, RoboSats has currently seen over 8,000 orders and only 30 disputes have been initiated where just one(!) order was identified as fraud.
Limitations imposed by the Lightning Network’s average channel capacity restricts RoboSats’ ability to transact in larger amounts. At time of writing, the max single trade size on RoboSats is 3,000,000 satoshis (0.03 BTC) to limit Lightning routing failure. The instant payment system over LN excels at sending and receiving micropayments whereas large amounts are better suited for on-chain payments using non-KYC platforms like Bisq. On the flip side, using RoboSats is extremely quick and inexpensive for small, incremental stacking over LN compared to on-chain.
The advantage of using LN and hold invoices allows any unsettled Lightning hold invoice to automatically return to you even if RoboSats goes down forever or suddenly disappears. Granted, funds could be permanently lost if RoboSats disappears during a very small window (about one second) between the seller confirming the fiat payment method was received and the moment the buyer actually receives the satoshis released by the hold invoice. Having sufficient inbound liquidity can help avoid routing failures and subsequently minimize any such window for opportunity.
Buyer and seller need not trust each other at any point during the transaction process because of Lightning hold invoices, but minimal trust on RoboSats is needed since linking the seller’s hold invoice and buyer payment is not atomic (research ongoing). RoboSats could simply not release the satoshis to the buyer, yet this could also be argued as a conflict of interest for the platform since this would permanently damage its own reputation for a relatively trivial payout.
Until RoboSats matures from an experimental project to a more robust marketplace, for their own safety, users should trade in small quantities that they are comfortable with. Although there are limitations, none of which lessen the functionality of the platform, RoboSats requires zero trade-offs between the user’s convenience and privacy when engaging with the free, peer-to-peer market. Added trust can be built by inspecting the RoboSats source code and verifying the project’s integrity.
Stack RoboSats And Stay RoboHumble
First publicly announced on the Bitcoin subreddit on February 27, 2022, the nascent project has already surpassed 12 BTC worth of lifetime contracted volume. The platform exhibits great potential and is a step forward in rivaling major centralized exchanges with ease of use, minimal fees and absolute privacy. While there is always room for improvement, users will find that RoboSats provides a straightforward and intuitive platform to anonymously exchange bitcoin peer-to-peer.
No other exchange allows for a different identity in every transaction, there is no registration required, chat rooms are private with auditable PGP-encrypted communication and RoboSats only operates with Tor or I2P — all in an effort to maximize end-user privacy without sacrificing ease of use. Using RoboSats and non-KYC alternatives will help improve the fungibility of the Bitcoin network through normalizing accumulation and circulation of non-KYC bitcoin in lieu of KYC-only bitcoin.
Curious developers are encouraged to support the project by contributing to the GitHub repository. Pull requests for new features can be made eligible for earning sats where the contributing developer submits an LN invoice associated with their pull request. The little revenue the platform makes helps pay back the contributors who are voluntarily investing their time in the project. An example of compensated contribution can be found here and the features that are eligible for earning sats are marked accordingly.
Interested users without programming know-how can also help by creating tutorials, opening outbound LN channels toward the RoboSats node, telling others to try RoboSats and guiding newcomers in the RoboSats telegram groups (EN [main], ES, RU, PT, CN).
Ultimately, the project is little without the user base who brings the biggest impact simply by utilizing RoboSats regularly. Check out the project and get started stacking anonymously with RoboSats!
PS: Many thanks to Reckless_Satoshi and the RoboSats contributors for their time responding to user questions and their fervent dedication to this promising open-source project.
This is a guest post by Okada. Opinions expressed are entirely their own and do not necessarily reflect those of BTC, Inc. or Bitcoin Magazine.