First release of the v0.5 minor version. 🚀 This one comes with a lot of the pre-requisites needed for a coordinator backend that is fully enabled for the federated frontend. We are now ~80% in our development towards the MVP federation, soon initiating the decentralization RoboSats!
Important
TLDR; Existing robots will stop working on the next release if you do not update ASAP your client to v0.5.0. In addition, other robots will see your status as "Inactive" (red dot) until you update. The referral system is now deprecated. Using a url like .../robot/<param>
will now generate a new robot on-the-fly (but if you use an old referral link you will not be able to generate a new robot).
Robot authentication has been upgraded. New robots will use a token based auth (instead of sessionid+csrf). New authentications for never seen before auth tokens base91(sha256(robot_token))
will generate a new robot identity on-the-fly. Existing robots without an auth token, will be upgraded to the new auth method on their first login attemp if the frontend client has been updated to v0.5.0. Therefore, updating your client to v0.5.0 is highly recommended! Existing robots will stop working in next releases if they are not upgrade as the sessionid+csrf authentication method will be phased out. In addition, robot status active | seen recently | inactive
is computed based on the last time the auth token was used: therefore those who do not update their client will be seen as inactive
by other users.
What's new:
Mechanics
- Referral reward system has been eliminated. The referral system is not compatible with a multi-coordinator system. Maybe in the future we can come up with ideas to implement a new referral system for the new many-clients/many-coordinators model.
- Fairer bond slashing. When a maker bond is slashed on an order where the taker took a smaller order size (range orders), part of the slashed bond is rewarded back to the maker. This solves the issue with uneven stakes for orders with large amount range size where the taker takes an amount smaller than the maximum. Therefore, the max range size can now be safely increased for more versatile orders. It has now been increased from
x8
tox15
. - Max allowed mining fee for onchain payouts is raised from 100 Sats/vByte to 500 Sats/vByte. This limit is intended only to prevent fat-fingers mistakes. However, current mempool conditions do require of fees larger than 100 Sats/vByte.
- Some easy disputes (e.g. your peer never shows up) are solved automatically. This increases speed and lowers custody risks. Helps with one of the main reason for disputes: robot token lost.
Backend:
- Bump to django 4.2 from django 3. Bump to channels, daphne, drf and drf-spectacular.
- New middlewaMechanicsre for authentication
RobotTokenSHA256
. Builds over django-rest-framework token auth. Uses the sha256(robot.token) encoded as base91 as authentication token. Never seen before tokens will get a new user and robot generated on-the-fly, existing tokens are logged in (updated last_login field). - Disable CSRF.
- Upgraded Coordinator panel. Improved tools, simplified search functions, dark model, renamed models and headers. There is still a lot of work to do, but this is the first part of the work towards making the coordinator panel more accessible to new coordinators.
- Super optimized the size of the coordinator Docker image from 687 MB to 313 MB. In the spirit of making a RoboSats coordinator easier to run.
Frontend
- Japanese is now available (Go to Settings -> Languages). Contributed by @aaroniumii.
- Authentication now only based on
base91(sha256(token))
. This will enable many cool things down the road, but right now it should allow, for example, having multiple tabs with different robots. (Note, your garage will not be consistent across tabs! everytime a new tab is opened, the current state of the garage is loaded from the browser local storage, then on any garage change it will overwrite the object in your browser storage (potentially overwritting robots created on another browser tab). - The OrderDetails page shows a preliminary summary (click the expand button) with Satoshis to be sent/receive on the order amount row. This value is on preliminary, as the final trade price is only acquired at the moment the taker bond is locked.
- There is a new helper text with an approximate amount in Satoshis that you are taking just below the text input for orders with range.
- Trade summary export button also includes payment_hash and preimage of the lightning payment or address and txid of the onchain payment (only for buyers).
- The token entropy (bits entropy and shannon entropy) is now computed in the frontend. If the token does not look complex enough (>128 bits of entropy and >4 shannon entropy), the frontend will not allow creating the robot for the safety of the user. You can see your robot's entropy value by downloading the json of the token garage.
- Visiting the route
domain/robot/<robot_token>
will directly log you into that robot. This is the new use for that route param after deprecating the referral codes. - New payment icons: Advcash, Rakuten Pay.
- It is now possible to have regular QR codes (dark dots over white background) while using the dark theme. Head to Settings and use the new switch for light/dark QR codes.
- Many small maintainability and consistency improvements: e.g, navigation bar tabs and / browser router is now better linked. currentOrder is better linked with browser router params.
Android
Click to download universal RoboSats APK for Android
Smaller bundles for each CPU architecture available in the attachments.
Verify the app using GPG:
-
Run this command on a directory that contains the apk file and and the ascii armored signature.
gpg --verify robosats-v0.5.0.alpha-universal.apk.asc
-
Verify the signer is actually Reckless-Satoshi (fingerprints match): B4AB5F19113D4125DDF217739C4585B561315571
Alternatively you can also verify with the release with the SHA256 checksum.
Known missing features:
- Android APK has no sound or notifications.
Docker Images
Coordinator Backend Image v0.5.0-alpha (Docker Hub)
docker pull recksato/robosats:v0.5.0-alpha
Client App Image v0.5.0-alpha (Docker Hub)
docker pull recksato/robosats-client:v0.5.0-alpha
See nodeapp/docker-compose.yml for an example docker-compose usage of the robosats-client
image.
What's Changed
- Fix parameter typo in #416
- Bump nokogiri from 1.14.2 to 1.14.3 in /docs by @dependabot in #419
- Bump commonmarker from 0.23.8 to 0.23.9 in /docs by @dependabot in #420
- Add error boundary by @Reckless-Satoshi in #421
- Migrate to react-dom-router v6 by @Reckless-Satoshi in #422
- Refactor context by @Reckless-Satoshi in #427
- Update zh-SI.json by @ra5pvt1n in #424
- Update zh-TR.json by @ra5pvt1n in #425
- Improve preliminary sats summary, add taker satoshis by @Reckless-Satoshi in #429
- Refactor LNNode, use versioner for LND get_version, refactor macaroon by @Reckless-Satoshi in #432
- Add automatic dispute resolution by @Reckless-Satoshi in #437
- Bump scipy from 1.8.0 to 1.10.1 by @dependabot in #445
- Bump typescript from 4.9.5 to 5.0.4 in /frontend by @dependabot in #453
- Bump eslint-plugin-promise from 6.1.0 to 6.1.1 in /mobile by @dependabot in #455
- Bump jest and @types/jest in /frontend by @dependabot in #451
- Bump eslint-plugin-n from 15.3.0 to 15.7.0 in /mobile by @dependabot in #454
- Bump react-i18next from 11.18.6 to 12.2.2 in /frontend by @dependabot in #448
- Bump github-pages from 226 to 228 in /docs by @dependabot in #446
- Bump ring from 0.9.1 to 0.10.1 by @dependabot in #444
- Bump sqlalchemy from 1.4.31 to 2.0.10 by @dependabot in #442
- Bump eslint-config-prettier from 8.5.0 to 8.8.0 in /mobile by @dependabot in #439
- Bump eslint-import-resolver-typescript from 3.5.4 to 3.5.5 in /frontend by @dependabot in #441
- Bump grpcio from 1.43.0 to 1.54.0 by @dependabot in #447
- Bump @react-native-clipboard/clipboard from 1.11.1 to 1.11.2 in /mobile by @dependabot in #450
- Bump openpgp from 5.7.0 to 5.8.0 in /frontend by @dependabot in #443
- Bump webrick from 1.7.0 to 1.8.1 in /docs by @dependabot in #449
- Bump psycopg2 from 2.9.5 to 2.9.6 by @dependabot in #440
- Bump react-native-webview from 11.23.1 to 12.0.2 in /mobile by @dependabot in #452
- Webp avatars by @Reckless-Satoshi in #457
- Simplify routing by @Reckless-Satoshi in #458
- Use premium to filter matches by @Reckless-Satoshi in #459
- Remove animations by @Reckless-Satoshi in #460
- Add undo confirm fiat sent action by @Reckless-Satoshi in #461
- Small book optimizations by @Reckless-Satoshi in #462
- Bump django-celery-beat from 2.2.1 to 2.5.0 by @dependabot in #463
- Bump @mui/icons-material from 5.11.11 to 5.11.16 in /frontend by @dependabot in #475
- Bump eslint-config-standard-with-typescript from 22.0.0 to 34.0.1 in /mobile by @dependabot in #471
- Bump prettier from 2.8.7 to 2.8.8 in /frontend by @dependabot in #470
- Bump light-bolt11-decoder from 2.1.0 to 3.0.0 in /frontend by @dependabot in #467
- Bump react-native-encrypted-storage from 4.0.2 to 4.0.3 in /mobile by @dependabot in #469
- Bump eslint from 8.25.0 to 8.39.0 in /mobile by @dependabot in #474
- Bump @types/react-dom from 18.0.11 to 18.2.1 in /frontend by @dependabot in #472
- Bump grpcio-tools from 1.43.0 to 1.54.0 by @dependabot in #468
- Bump flake8 from 5.0.4 to 6.0.0 by @dependabot in #466
- Bump drf-spectacular-sidecar from 2022.9.1 to 2023.4.1 by @dependabot in #465
- Bump webpack-cli from 4.10.0 to 5.0.2 in /frontend by @dependabot in #473
- Bump @babel/core from 7.19.3 to 7.21.4 in /mobile by @dependabot in #477
- Bump googleapis-common-protos from 1.53.0 to 1.59.0 by @dependabot in #464
- The Japanese translation for RoboSats by @aaroniumii in #479
- Optimize follow-invoices service performance by @Reckless-Satoshi in #480
- Refactor models into a module by @Reckless-Satoshi in #481
- Bump drf-spectacular from 0.24.0 to 0.26.2 by @dependabot in #482
- Bump pillow from 9.3.0 to 9.5.0 by @dependabot in #483
- Bump isort from 5.10.1 to 5.12.0 by @dependabot in #484
- Bump python-gnupg from 0.4.9 to 0.5.0 by @dependabot in #485
- Bump sqlalchemy from 2.0.10 to 2.0.12 by @dependabot in #486
- Bump @babel/preset-env from 7.21.4 to 7.21.5 in /frontend by @dependabot in #487
- Bump date-fns from 2.29.3 to 2.30.0 in /frontend by @dependabot in #488
- Bump eslint-plugin-import from 2.26.0 to 2.27.5 in /mobile by @dependabot in #496
- Bump babel-jest from 26.6.3 to 29.5.0 in /mobile by @dependabot in #495
- Bump typescript from 4.8.4 to 5.0.4 in /mobile by @dependabot in #492
- Bump @mui/base from 5.0.0-alpha.123 to 5.0.0-alpha.127 in /frontend by @dependabot in #491
- Bump react-router-dom from 6.10.0 to 6.11.0 in /frontend by @dependabot in #489
- Bump npm from 8.19.4 to 9.6.5 in /frontend by @dependabot in #490
- Bump black from 22.8.0 to 23.3.0 by @dependabot in #500
- Bump i18next-browser-languagedetector from 6.1.8 to 7.0.1 in /frontend by @dependabot in #501
- Bump webpack from 5.77.0 to 5.81.0 in /frontend by @dependabot in #507
- Bump eslint-plugin-react from 7.31.10 to 7.32.2 in /mobile by @dependabot in #511
- Bump @react-native-community/eslint-config from 2.0.0 to 3.2.0 in /mobile by @dependabot in #509
- Bump @typescript-eslint/parser from 5.57.0 to 5.59.1 in /frontend by @dependabot in #508
- Bump @react-native-community/netinfo from 9.3.5 to 9.3.9 in /mobile by @dependabot in #506
- Bump eslint-config-standard-with-typescript from 22.0.0 to 34.0.1 in /frontend by @dependabot in #504
- Bump eslint-import-resolver-typescript from 3.5.1 to 3.5.5 in /mobile by @dependabot in #510
- Bump i18next-http-backend from 1.4.5 to 2.2.0 in /frontend by @dependabot in #503
- Bump pr-mpt/actions-commit-hash from 1 to 2 by @dependabot in #517
- Bump benc-uk/workflow-dispatch from 1 to 121 by @dependabot in #516
- Bump black from 22.8.0 to 23.3.0 by @dependabot in #515
- Bump actions/checkout from 2 to 3 by @dependabot in #514
- Bump requests from 2.22.0 to 2.29.0 by @dependabot in #513
- Bump drf-spectacular-sidecar from 2023.4.1 to 2023.5.1 by @dependabot in #518
- Bump actions/setup-python from 3 to 4 by @dependabot in #519
- Bump docker/build-push-action from 3 to 4 by @dependabot in #520
- Bump @mui/material from 5.11.15 to 5.12.3 in /frontend by @dependabot in #529
- Bump i18next from 21.10.0 to 22.4.15 in /frontend by @dependabot in #537
- Bump @mui/lab from 5.0.0-alpha.124 to 5.0.0-alpha.129 in /frontend by @dependabot in #536
- Bump @emotion/styled from 11.10.6 to 11.10.8 in /frontend by @dependabot in #535
- Bump webpack from 5.81.0 to 5.82.0 in /frontend by @dependabot in #534
- Bump eslint from 8.37.0 to 8.39.0 in /frontend by @dependabot in #533
- Add RobotTokenSHA256 middleware for in-the-fly robot generation/login by @Reckless-Satoshi in #512
- Add slashed return on uneven stake slashed bonds by @Reckless-Satoshi in #538
- Bump requests from 2.29.0 to 2.30.0 by @dependabot in #539
- Bump prettier from 2.7.1 to 2.8.8 in /mobile by @dependabot in #540
- Bump django from 4.2 to 4.2.1 by @dependabot in #542
- Bump babel-loader from 8.3.0 to 9.1.2 in /frontend by @dependabot in #543
- Bump @typescript-eslint/eslint-plugin from 5.59.1 to 5.59.2 in /mobile by @dependabot in #544
- Bump jest and @types/jest in /mobile by @dependabot in #546
- Bump @mui/x-data-grid from 6.0.4 to 6.3.1 in /frontend by @dependabot in #541
- Bump @typescript-eslint/parser from 5.59.1 to 5.59.2 in /frontend by @dependabot in #545
- Bump @types/react from 17.0.55 to 18.2.5 in /frontend by @dependabot in #547
- Increase max mining fee by @Reckless-Satoshi in #551
- Fix token auth native by @Reckless-Satoshi in #558
New Contributors
- @aaroniumii made their first contribution in #479
Full Changelog: v0.4.3-alpha...v0.5.0-alpha