* Add CLN node backend image and service (#418) * Add cln service * Add hodlvoice Dockerfile and entrypoint * Add lnnode vendor switch (#431) * Add LNNode vendor switch * Add CLN version to frontend and other fixes * init * first draft * add unsettled_local_balance and unsettled_remote_balance * gen_hold_invoice now takes 3 more variables to build a label for cln * remove unneeded payment_hash from gen_hold_invoice * remove comment * add get_cln_version * first draft of clns follow_send_payment * fix name of get_lnd_version * enable flake8 * flake8 fixes * renaming cln file, class and get_version * remove lnd specific commented code * get_version: add try/except, refactor to top to mimic lnd.py * rename htlc_cltv to htlc_expiry * add clns lookup_invoice_status * refactored double_check_htlc_is_settled to the end to match lnds file * fix generate_rpc * Add sample environmental variables, small fixes * Fix CLN gRPC port * Fix gen_hold_invoice, plus some other tiny fixes (#435) * Fix channel_balance to use int object inside Amount (#438) * Add CLN/LND volume to celery-beat service * Add CLN/LND volume to celery-beat service * Bump CLN to v23.05 * changes for 0.5 and some small fixes * change invoice expiry from absolute to relative duration * add try/except to catch timeout error * fix failure_reason to be ln_payment failure reasons, albeit inaccurate sometimes * refactor follow_send_payment and add pending check to expired case * fix status comments * add send_keysend method * fix wrong state ints in cancel and settle * switch to use hodlinvoicelookup in double_check * move pay command after lnpayment status update * remove loop in follow_send_payment and add error result for edge case * fix typeerror for payment_hash * rework follow_send_payment logic and payment_hash, watch harder if pending * use fully qualified names for status instead of raw int * missed 2 status from prev commit * Always copy the cln-grpc-hodl plugin on start up * Fix ALLOW_SELF_KEYSEND linting error * Fix missing definition of failure_reason --------- Co-authored-by: daywalker90 <admin@noserver4u.de> |
||
---|---|---|
.github | ||
api | ||
chat | ||
control | ||
docker | ||
docs | ||
frontend | ||
mobile | ||
nodeapp | ||
robosats | ||
scripts | ||
.dockerignore | ||
.editorconfig | ||
.env-sample | ||
.flake8 | ||
.gitignore | ||
.pre-commit-config.yaml | ||
CODE_OF_CONDUCT.md | ||
commit_sha | ||
CONTRIBUTING.md | ||
docker-compose.yml | ||
Dockerfile | ||
LICENSE | ||
manage.py | ||
pyproject.toml | ||
README.md | ||
requirements.txt | ||
setup.md | ||
version.json |
RoboSats - Buy and sell Satoshis Privately
RoboSats is a simple and private way to exchange bitcoin for national currencies. Robosats simplifies the peer-to-peer user experience and uses lightning hold invoices to minimize custody and trust requirements. The deterministically generated avatars help users stick to best privacy practices.
![](https://raw.githubusercontent.com/RoboSats/robosats/main/frontend/static/assets/images/robosats-0.1.1-banner.png)
Try it out!
Bitcoin Mainnet
- TOR URL: RoboSats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion ( Open with Tor Browser)
- Clearnet URL: unsafe.robosats.com (not recommended!)
- Clearnet Mirrors: unsafe2 || unsafe3 (not recommended!)
Always use Tor Browser and .onion for best privacy. The Clearnet URL redirects to a third party Tor2web service. Your privacy cannot be guaranteed to be respected. Use clearnet only to check around the app, never use for trading!
How to use it
Written guides
Video guides
How it works
Alice wants to buy satoshis privately:
- Alice generates an avatar (AdequateAlice01) using her private random token.
- Alice stores safely the token in case she needs to recover AdequateAlice01 in the future.
- Alice makes a new order and locks a small hold invoice to publish it (maker bond).
- Bob wants to sell satoshis, sees Alice's order in the book and takes it.
- Bob scans a small hold invoice as his taker bond. The contract is final.
- Bob posts the traded satoshis with a hold invoice. While Alice submits her payout invoice.
- On a private chat, Bob tells Alice how to send him fiat.
- Alice pays Bob, then they confirm the fiat has been sent and received.
- Bob's trade hold invoice is charged and the satoshis are sent to Alice.
- Bob and Alice's bonds return automatically, since they complied by the rules.
- The bonds would be charged (lost) in case of unilateral cancellation or cheating (lost dispute).
Contribute to the Robotic Satoshis Open Source Project
Check out our Contribution Guide to find how you can make RoboSats great.
⚡Developer Rewards ⚡
Check out the Developer Rewards Panel for tasks paid in Sats.
Sponsors
![](https://raw.githubusercontent.com/RoboSats/robosats/main/docs/assets/images/sponsors/hrf.png)
Inspiration
The concept of a simple custody-minimized lightning exchange with hold invoices is inspired in P2PLNBOT by @grunch
License
The Robotic Satoshis Open Source Project is released under the terms of the AGPL3.0 license. See LICENSE for more details.