mirror of
https://github.com/RoboSats/robosats.git
synced 2025-02-27 23:59:01 +00:00
Merge branch 'main' into add-new-translation-portuguese
This commit is contained in:
commit
0e7024a601
25
.github/workflows/release.yml
vendored
25
.github/workflows/release.yml
vendored
@ -94,6 +94,7 @@ jobs:
|
||||
with:
|
||||
body_path: release_notes.md
|
||||
generate_release_notes: true
|
||||
draft: true
|
||||
|
||||
# Upload app-universal-release APK artifact asset
|
||||
- name: 'Download universal APK Artifact'
|
||||
@ -166,8 +167,8 @@ jobs:
|
||||
- name: 'Download macOS Build Artifact'
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: robosats-desktop-${{ needs.check-versions.outputs.semver }}-mac-darwin-x64.zip
|
||||
path: .
|
||||
path: desktopApp/release-builds/Robosats-darwin-x64
|
||||
name: robosats-desktop-${{ inputs.semver }}-mac-darwin-x64.zip
|
||||
|
||||
- name: 'Upload macOS Build Artifact'
|
||||
id: upload-release-mac-zip-asset
|
||||
@ -176,15 +177,15 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create-release.outputs.upload_url }}
|
||||
asset_path: robosats-desktop-${{ needs.check-versions.outputs.semver }}-mac-darwin-x64.zip
|
||||
asset_name: robosats-desktop-${{ needs.check-versions.outputs.semver }}-mac-darwin-x64.zip
|
||||
asset_path: desktopApp/release-builds/Robosats-darwin-x64
|
||||
asset_name: robosats-desktop-${{ inputs.semver }}-mac-darwin-x64.zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
- name: 'Download linux Build Artifact'
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: robosats-desktop-${{ needs.check-versions.outputs.semver }}-linux-x64.zip
|
||||
path: .
|
||||
path: desktopApp/release-builds/Robosats-linux-x64
|
||||
name: robosats-desktop-${{ inputs.semver }}-linux-x64.zip
|
||||
|
||||
- name: 'Upload linux Build Artifact'
|
||||
id: upload-release-linux-zip-asset
|
||||
@ -193,15 +194,15 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create-release.outputs.upload_url }}
|
||||
asset_path: robosats-desktop-${{ needs.check-versions.outputs.semver }}-linux-x64.zip
|
||||
asset_name: robosats-desktop-${{ needs.check-versions.outputs.semver }}-linux-x64.zip
|
||||
asset_path: desktopApp/release-builds/Robosats-linux-x64
|
||||
asset_name: robosats-desktop-${{ inputs.semver }}-linux-x64.zip
|
||||
asset_content_type: application/zip
|
||||
|
||||
- name: 'Download Windows Build Artifact'
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: robosats-desktop-${{ needs.check-versions.outputs.semver }}-win32-ia32.zip
|
||||
path: .
|
||||
path: desktopApp/release-builds/Robosats-win32-ia32
|
||||
name: robosats-desktop-${{ inputs.semver }}-win32-ia32.zip
|
||||
|
||||
- name: 'Upload Windows Build Artifact'
|
||||
id: upload-release-win-zip-asset
|
||||
@ -210,6 +211,6 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ steps.create-release.outputs.upload_url }}
|
||||
asset_path: robosats-desktop-${{ needs.check-versions.outputs.semver }}-win32-ia32.zip
|
||||
asset_name: robosats-desktop-${{ needs.check-versions.outputs.semver }}-win32-ia32.zip
|
||||
asset_path: desktopApp/release-builds/Robosats-win32-ia32
|
||||
asset_name: robosats-desktop-${{ inputs.semver }}-win32-ia32.zip
|
||||
asset_content_type: application/zip
|
10
README.md
10
README.md
@ -1,7 +1,7 @@
|
||||
## RoboSats - Buy and sell Satoshis Privately
|
||||
[](https://github.com/RoboSats/robosats/actions/workflows/coordinator-image.yml)
|
||||
[](https://github.com/RoboSats/robosats/actions/workflows/frontend-build.yml)
|
||||
[](https://github.com/RoboSats/robosats/releases)
|
||||
[](https://github.com/RoboSats/robosats/releases)
|
||||
[](https://github.com/RoboSats/robosats/blob/main/LICENSE)
|
||||
[](https://t.me/robosats)
|
||||
|
||||
@ -12,6 +12,10 @@ RoboSats is a simple and private way to exchange bitcoin for national currencies
|
||||
<img width="75%" src="https://raw.githubusercontent.com/RoboSats/robosats/main/frontend/static/assets/images/robosats-0.1.1-banner.png">
|
||||
</div>
|
||||
|
||||
## Learn
|
||||
|
||||
Check our tutorials and many more at https://learn.robosats.org
|
||||
|
||||
## Try it out!
|
||||
- **TOR URL:** [**RoboSats**y56bwqn56qyadmcxkx767hnabg4mihxlmgyt6if5gnuxvzad.onion](http://RoboSatsy56bwqn56qyadmcxkx767hnabg4mihxlmgyt6if5gnuxvzad.onion) ( Open with [Tor Browser](https://www.torproject.org/download/))
|
||||
- Clearnet URL: [unsafe.robosats.org](https://unsafe.robosats.org) (not recommended!)
|
||||
@ -27,6 +31,8 @@ https://user-images.githubusercontent.com/90936742/167310017-dc211a05-dd5e-4ef4-
|
||||
- **[English](https://learn.robosats.org/read/en)**
|
||||
- **[Español](https://learn.robosats.org/read/es)**
|
||||
- **[Deutsch](https://learn.robosats.org/read/de)**
|
||||
- **[Français](https://learn.robosats.org/read/fr)**
|
||||
- **[Русский](https://learn.robosats.org/read/ru)**
|
||||
|
||||
### Video guides
|
||||
- **[English](https://learn.robosats.org/watch/en/)**
|
||||
@ -34,6 +40,8 @@ https://user-images.githubusercontent.com/90936742/167310017-dc211a05-dd5e-4ef4-
|
||||
- **[Deutsch](https://learn.robosats.org/watch/de)**
|
||||
- **[Português](https://learn.robosats.org/watch/pt)**
|
||||
- **[Polski](https://learn.robosats.org/watch/pl)**
|
||||
- **[Français](https://learn.robosats.org/watch/fr)**
|
||||
- **[Русский](https://learn.robosats.org/watch/ru)**
|
||||
|
||||
## How it works
|
||||
|
||||
|
@ -25,7 +25,7 @@ class Nostr:
|
||||
client = Client(signer)
|
||||
|
||||
# Add relays and connect
|
||||
await client.add_relays(["ws://localhost:7777"])
|
||||
await client.add_relay("ws://localhost:7777")
|
||||
await client.connect()
|
||||
|
||||
robot_name = await self.get_robot_name(order)
|
||||
|
@ -447,7 +447,7 @@ def verify_signed_message(pub_key, signed_message):
|
||||
# verify the signed message
|
||||
verified = gpg.verify(signed_message)
|
||||
|
||||
if verified.fingerprint == import_result.fingerprints[0]:
|
||||
if verified.valid and verified.fingerprint == import_result.fingerprints[0]:
|
||||
header = "-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA512\n\n"
|
||||
footer = "-----BEGIN PGP SIGNATURE-----"
|
||||
cleartext_message = signed_message.split(header)[1].split(footer)[0].strip()
|
||||
|
4
desktopApp/package-lock.json
generated
4
desktopApp/package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "desktop-app",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.4",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "desktop-app",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.4",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"cors": "^2.8.5",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "desktop-app",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.4",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
@ -1,15 +1,15 @@
|
||||
---
|
||||
layout: single
|
||||
title: Mode d'emploi
|
||||
permalink: /read/en/
|
||||
title: "Mode d'emploi"
|
||||
permalink: /read/fr/
|
||||
toc: true
|
||||
toc_sticky: true
|
||||
excerpt: "Guide : Comment utiliser RoboSats. Un guide complet de l'échange P2P RoboSats"
|
||||
sidebar:
|
||||
title: '<img id="side-icon-verybig" src="/assets/vector/chalkboard-user.svg"/>Mode d'emploi'
|
||||
title: "<img id='side-icon-verybig' src='/assets/vector/chalkboard-user.svg'/>Mode d'emploi"
|
||||
nav: tutorial
|
||||
---
|
||||
|
||||
|
||||
## Mode d'emploi (v0.5.0)
|
||||
|
||||

|
||||
|
@ -6,4 +6,4 @@
|
||||
"trailingComma": "all",
|
||||
"jsxSingleQuote": true,
|
||||
"bracketSpacing": true
|
||||
}
|
||||
}
|
||||
|
4
frontend/package-lock.json
generated
4
frontend/package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "frontend",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.4",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "frontend",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.4",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "frontend",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.4",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
@ -323,7 +323,6 @@ const AutocompletePayments: React.FC<AutocompletePaymentsProps> = (props) => {
|
||||
},
|
||||
});
|
||||
|
||||
const fewerOptions = groupedOptions.length > 8 ? groupedOptions.slice(0, 8) : groupedOptions;
|
||||
const theme = useTheme();
|
||||
const iconSize = 1.5 * theme.typography.fontSize;
|
||||
|
||||
@ -364,7 +363,7 @@ const AutocompletePayments: React.FC<AutocompletePaymentsProps> = (props) => {
|
||||
<div {...getRootProps()}>
|
||||
<Fade
|
||||
appear={false}
|
||||
in={fewerOptions.length === 0 && value.length === 0 && val.length === 0}
|
||||
in={groupedOptions.length === 0 && value.length === 0 && val.length === 0}
|
||||
>
|
||||
<div style={{ height: 0, display: 'flex', alignItems: 'flex-start' }}>
|
||||
<Label
|
||||
@ -439,7 +438,7 @@ const AutocompletePayments: React.FC<AutocompletePaymentsProps> = (props) => {
|
||||
</InputWrapper>
|
||||
</div>
|
||||
</Tooltip>
|
||||
<Grow in={fewerOptions.length > 0}>
|
||||
<Grow in={groupedOptions.length > 0}>
|
||||
<Listbox sx={props.listBoxProps?.sx ?? undefined} {...getListboxProps()}>
|
||||
{props.listHeaderText ? (
|
||||
<div
|
||||
@ -455,7 +454,7 @@ const AutocompletePayments: React.FC<AutocompletePaymentsProps> = (props) => {
|
||||
</ListHeader>
|
||||
</div>
|
||||
) : null}
|
||||
{fewerOptions.map((option, index) => (
|
||||
{groupedOptions.map((option, index) => (
|
||||
<li key={option.name} {...getOptionProps({ option, index })}>
|
||||
<Button
|
||||
fullWidth={true}
|
||||
@ -493,8 +492,8 @@ const AutocompletePayments: React.FC<AutocompletePaymentsProps> = (props) => {
|
||||
</Listbox>
|
||||
</Grow>
|
||||
|
||||
{/* Here goes what happens if there is no fewerOptions */}
|
||||
<Grow in={getInputProps().value.length > 0 && !props.isFilter && fewerOptions.length === 0}>
|
||||
{/* Here goes what happens if there is no groupedOptions */}
|
||||
<Grow in={getInputProps().value.length > 0 && !props.isFilter && groupedOptions.length === 0}>
|
||||
<Listbox {...getListboxProps()}>
|
||||
<Button
|
||||
fullWidth={true}
|
||||
|
@ -166,14 +166,14 @@
|
||||
"#18": "Phrases in components/Dialogs/About.tsx",
|
||||
"(GitHub).": "(GitHub).",
|
||||
"(Telegram)": "(Telegram)",
|
||||
". RoboSats developers will never contact you. The developers or the coordinators will definitely never ask for your robot token.": ". RoboSats developers will never contact you. The developers or the coordinators will definitely never ask for your robot token.",
|
||||
". RoboSats developers will never contact you. The developers or the coordinators will definitely never ask for your robot token.": ". Gli sviluppatori di Robosats non ti contatteranno mai. Gli sviluppatori o i coordinatori, non ti chiederranno mai il tuo token.",
|
||||
"All of them as long as they are fast. You can write down your preferred payment method(s). You will have to match with a peer who also accepts that method. The step to exchange fiat has a expiry time of 24 hours before a dispute is automatically open. We highly recommend using instant fiat payment rails.": "Tutti, purchè siano veloci. Puoi indicare i tuoi metodi di pagamento preferiti. Dovrai trovare un tuo pari che preferisce gli stessi metodi. Il passaggio di trasferimento di fiat ha una scadenza di 24 ore prima che una disputa sia aperta automaticamente. Raccomandiamo caldamente di usare canali di pagamento fiat instantanei.",
|
||||
"Are there trade limits?": "Ci sono limiti agli scambi?",
|
||||
"At no point, AnonymousAlice01 and BafflingBob02 have to entrust the bitcoin funds to each other. In case they have a conflict, the RoboSats coordinator will help resolving the dispute.": "At no point, AnonymousAlice01 and BafflingBob02 have to entrust the bitcoin funds to each other. In case they have a conflict, the RoboSats coordinator will help resolving the dispute.",
|
||||
"At no point, AnonymousAlice01 and BafflingBob02 have to entrust the bitcoin funds to each other. In case they have a conflict, the RoboSats coordinator will help resolving the dispute.": "In nessun momento AnonymousAlice01 e BafflingBob02 devono affidarsi reciprocamente i fondi bitcoin. In caso di disputa, il coordinatore RoboSats aiuterà a risolvere la controversia.",
|
||||
"Be aware your fiat payment provider might charge extra fees. In any case, the buyer bears the costs of sending fiat. That includes banking charges, transfer fees and foreign exchange spreads. The seller must receive exactly the amount stated in the order details.": "Tieni presente che il tuo fornitore di pagamenti in fiat potrebbe addebitare costi aggiuntivi. In ogni caso, l'acquirente sostiene i costi dell'invio di valuta fiat. Ciò include le spese bancarie, le commissioni di trasferimento e gli spread di cambio. Il venditore deve ricevere esattamente l'importo indicato nei dettagli dell'ordine.",
|
||||
"Disclaimer": "Avvertenza",
|
||||
"During a typical order, your trading peer is the only one who can potentially guess anything about you. Keep your chat short and concise. Avoid providing non-essential information other than strictly necessary for the fiat payment.": "During a typical order, your trading peer is the only one who can potentially guess anything about you. Keep your chat short and concise. Avoid providing non-essential information other than strictly necessary for the fiat payment.",
|
||||
"Each RoboSats coordinator will set a maximum trade size to minimize the hassle of lightning routing failures. There is no limits to the number of trades per day. A robot can only have one order at a time. However, you can use multiple robots simultaneously using the Robot garage. Remember to back up your robot tokens!": "Each RoboSats coordinator will set a maximum trade size to minimize the hassle of lightning routing failures. There is no limits to the number of trades per day. A robot can only have one order at a time. However, you can use multiple robots simultaneously using the Robot garage. Remember to back up your robot tokens!",
|
||||
"During a typical order, your trading peer is the only one who can potentially guess anything about you. Keep your chat short and concise. Avoid providing non-essential information other than strictly necessary for the fiat payment.": "Durante un ordine tipico, il tuo partner di trading è l'unico che può potenzialmente scoprire qualcosa su di te. Mantieni la tua chat breve e concisa. Evitare di fornire informazioni non essenziali diverse da quelle strettamente necessarie per il pagamento in valuta reale.",
|
||||
"Each RoboSats coordinator will set a maximum trade size to minimize the hassle of lightning routing failures. There is no limits to the number of trades per day. A robot can only have one order at a time. However, you can use multiple robots simultaneously using the Robot garage. Remember to back up your robot tokens!": "Ciascun coordinatore RoboSats imposterà una dimensione massima degli scambi per ridurre al minimo il fastidio di errori di routing su rete lightning. Non ci sono limiti al numero di operazioni giornaliere. Un robot può avere un solo ordine alla volta. Tuttavia, puoi utilizzare più robot contemporaneamente utilizzando il Garage dei robots. Ricordati di eseguire il backup dei token dei tuoi robots!",
|
||||
"How does it work?": "Come funziona?",
|
||||
"How it works": "Come funziona",
|
||||
"How to use": "Come usarlo",
|
||||
@ -183,26 +183,26 @@
|
||||
"It is a BTC/FIAT peer-to-peer exchange over lightning.": "E' una borsa di scambio BTC/FIAT peer-to-peer che utilizza lightning.",
|
||||
"It simplifies matchmaking and minimizes the need of trust. RoboSats focuses in privacy and speed.": "Semplifica il coordinamento tra parti e riduce al minimo la necessità di fiducia. RoboSats si concentra su privacy e velocità.",
|
||||
"Project source code": "Codice sorgente del progetto",
|
||||
"RoboSats is a decentralized exchange with multiple, fully redundant, trade coordinators. The coordinator provides the infrastructure for your trade: mantains the intermediary lightning node, does book keeping, and relays your encrypted chat messages. The coordinator is also the judge in case your order enters a dispute. The coordinator is a trusted role, make sure you trust your coordinator by exploring its profile, webpage, social media and the comments from other users online.": "RoboSats is a decentralized exchange with multiple, fully redundant, trade coordinators. The coordinator provides the infrastructure for your trade: mantains the intermediary lightning node, does book keeping, and relays your encrypted chat messages. The coordinator is also the judge in case your order enters a dispute. The coordinator is a trusted role, make sure you trust your coordinator by exploring its profile, webpage, social media and the comments from other users online.",
|
||||
"RoboSats is a decentralized exchange with multiple, fully redundant, trade coordinators. The coordinator provides the infrastructure for your trade: mantains the intermediary lightning node, does book keeping, and relays your encrypted chat messages. The coordinator is also the judge in case your order enters a dispute. The coordinator is a trusted role, make sure you trust your coordinator by exploring its profile, webpage, social media and the comments from other users online.": "RoboSats è uno scambio decentralizzato con più coordinatori commerciali completamente ridondanti. Il coordinatore fornisce l'infrastruttura per la tua attività: mantiene il nodo Lightning intermediario, tiene la contabilità e inoltra i tuoi messaggi di chat crittografati. Il coordinatore è anche il giudice nel caso in cui il tuo ordine entri in controversia. Il coordinatore è un ruolo che si basa sulla fiducia, assicurati di fidarti del tuo coordinatore esplorando il suo profilo, la pagina web, i social media e i commenti di altri utenti online.",
|
||||
"RoboSats is an open source project ": "RoboSats è un progetto open-source",
|
||||
"The RoboSats client, which you run on your local machine or browser, does not collect or share your IP address, location, name, or personal data. The client encrypts your private messages, which can only be decrypted by your trade partner.": "The RoboSats client, which you run on your local machine or browser, does not collect or share your IP address, location, name, or personal data. The client encrypts your private messages, which can only be decrypted by your trade partner.",
|
||||
"The coordinator you choose will maintain a database of pseudonymous robots and orders for the application to function correctly. You can further enhance your privacy by using proxy nodes or coinjoining.": "The coordinator you choose will maintain a database of pseudonymous robots and orders for the application to function correctly. You can further enhance your privacy by using proxy nodes or coinjoining.",
|
||||
"The RoboSats client, which you run on your local machine or browser, does not collect or share your IP address, location, name, or personal data. The client encrypts your private messages, which can only be decrypted by your trade partner.": "Il client RoboSats, che esegui sul tuo computer locale o browser, non raccoglie né condivide il tuo indirizzo IP, posizione, nome o dati personali. Il client crittografa i tuoi messaggi privati, che possono essere decrittografati solo dal tuo partner commerciale.",
|
||||
"The coordinator you choose will maintain a database of pseudonymous robots and orders for the application to function correctly. You can further enhance your privacy by using proxy nodes or coinjoining.": "Il coordinatore scelto manterrà un database di robot pseudonimi e ordini per il corretto funzionamento dell'applicazione. Puoi migliorare ulteriormente la tua privacy utilizzando nodi proxy o coinjoining.",
|
||||
"The seller faces the same charge-back risk as with any other peer-to-peer service. Paypal or credit cards are not recommended.": "L'offerente è soggetto allo stesso rischio di charge-back di qualsiasi altro servizio peer-to-peer. Paypal o le carte di credito non sono raccomandate.",
|
||||
"The trade fee is collected by the robosats coordinator as a compensation for their service. You can see the fees of each coordinator by checking out their profile. The trade fee is split to be covered by both: the order maker and the order taker. Typically, the maker fee will be significantly smaller than the taker fee. In case an onchain address is used to received the Sats a variable swap fee applies. The onchain payout fee can also be seen in the profile of the coordinator.": "The trade fee is collected by the robosats coordinator as a compensation for their service. You can see the fees of each coordinator by checking out their profile. The trade fee is split to be covered by both: the order maker and the order taker. Typically, the maker fee will be significantly smaller than the taker fee. In case an onchain address is used to received the Sats a variable swap fee applies. The onchain payout fee can also be seen in the profile of the coordinator.",
|
||||
"The trade fee is collected by the robosats coordinator as a compensation for their service. You can see the fees of each coordinator by checking out their profile. The trade fee is split to be covered by both: the order maker and the order taker. Typically, the maker fee will be significantly smaller than the taker fee. In case an onchain address is used to received the Sats a variable swap fee applies. The onchain payout fee can also be seen in the profile of the coordinator.": "La commissione commerciale viene riscossa dal coordinatore di robosat come compenso per il proprio servizio. Puoi vedere le tariffe di ciascun coordinatore controllando il loro profilo. La commissione di negoziazione è condivisa da entrambi i peer di una transazione: sia il creatore dell'ordine e l'acquirente dell'ordine. In genere, la commissione del creatore dell'ordine sarà significativamente inferiore alla commissione dell’acquirente. Nel caso in cui venga utilizzato un indirizzo onchain per ricevere i Satoshi, si applica una commissione di swap variabile. La commissione per il pagamento onchain può essere visualizzata anche nel profilo del coordinatore.",
|
||||
"This is an experimental application, things could go wrong. Trade small amounts!": "Questa è un'applicazione sperimentale, le cose potrebbero andare male. Scambia piccole quantità!",
|
||||
"This lightning application is provided as is. It is in active development: trade with the utmost caution. There is no private support. Support is only offered via public channels ": "Questa applicazione lightning viene fornita così com'è. È in fase di sviluppo attivo: è opportuno utilizzarla con la massima cautela. Non esiste un supporto privato. Il supporto è offerto solo attraverso i canali pubblici ",
|
||||
"What are the fees?": "Quali sono le commissioni",
|
||||
"What are the risks?": "Quali sono i rischi?",
|
||||
"What happens if my coordinator goes offline forever?": "What happens if my coordinator goes offline forever?",
|
||||
"What happens if my coordinator goes offline forever?": "Cosa succedere se il mio coordinatore è offline?",
|
||||
"What is RoboSats?": "Cos'è RoboSats?",
|
||||
"What is a coordinator?": "What is a coordinator?",
|
||||
"What is a coordinator?": "Co'sè un coordinatore?",
|
||||
"What is the trust model?": "Qual è il modello di fiducia?",
|
||||
"What payment methods are accepted?": "Quali pagamenti sono accettati?",
|
||||
"You can also check the full guide in ": "Puoi anche consultare la guida completa in ",
|
||||
"You can build more trust on the RoboSats and coordinator infrastructure by inspecting the source code.": "You can build more trust on the RoboSats and coordinator infrastructure by inspecting the source code.",
|
||||
"You can build more trust on the RoboSats and coordinator infrastructure by inspecting the source code.": "Puoi creare maggiore fiducia in RoboSats e nell'infrastruttura del coordinatore controllando il codice sorgente.",
|
||||
"You can find a step-by-step description of the trade pipeline in ": "Una descrizione passo passo della sequenza di scambio è disponibile in ",
|
||||
"Your sats will return to you. Any hold invoice that is not settled would be automatically returned even if the coordinator goes down forever. This is true for both, locked bonds and trading escrows. However, there is a small window between the seller confirms FIAT RECEIVED and the moment the buyer receives the satoshis when the funds could be permanently lost if the coordinator disappears. This window is usually about 1 second long. Make sure to have enough inbound liquidity to avoid routing failures. If you have any problem, reach out trough the RoboSats public channels or directly to your trade coordinator using one of the contact methods listed on their profile.": "Your sats will return to you. Any hold invoice that is not settled would be automatically returned even if the coordinator goes down forever. This is true for both, locked bonds and trading escrows. However, there is a small window between the seller confirms FIAT RECEIVED and the moment the buyer receives the satoshis when the funds could be permanently lost if the coordinator disappears. This window is usually about 1 second long. Make sure to have enough inbound liquidity to avoid routing failures. If you have any problem, reach out trough the RoboSats public channels or directly to your trade coordinator using one of the contact methods listed on their profile.",
|
||||
"Your trade partner will not know the destination of the Lightning payment. The permanence of the data collected by the coordinators depend on their privacy and data policies. If a dispute arises, a coordinator may request additional information. The specifics of this process can vary from coordinator to coordinator.": "Your trade partner will not know the destination of the Lightning payment. The permanence of the data collected by the coordinators depend on their privacy and data policies. If a dispute arises, a coordinator may request additional information. The specifics of this process can vary from coordinator to coordinator.",
|
||||
"Your sats will return to you. Any hold invoice that is not settled would be automatically returned even if the coordinator goes down forever. This is true for both, locked bonds and trading escrows. However, there is a small window between the seller confirms FIAT RECEIVED and the moment the buyer receives the satoshis when the funds could be permanently lost if the coordinator disappears. This window is usually about 1 second long. Make sure to have enough inbound liquidity to avoid routing failures. If you have any problem, reach out trough the RoboSats public channels or directly to your trade coordinator using one of the contact methods listed on their profile.": "Il tuoi satoshi torneranno nel tuo wallet. Qualsiasi fattura trattenuta(Hold invoice) non saldata verrà automaticamente restituita anche se il coordinatore non dovesse più tornare attivo. Questo vale sia per le obbligazioni vincolate che per i depositi a garanzia di negoziazione. Tuttavia, c'è una piccola finestra tra la conferma da parte del venditore della RICEVUTA FIAT e il momento in cui l'acquirente riceve i satoshi, quando i fondi potrebbero essere persi definitivamente se il coordinatore scompare. Questa finestra dura solitamente circa 1 secondo. Assicurati di avere abbastanza liquidità in entrata per evitare errori di routing. In caso di problemi, contatta i canali pubblici di RoboSats o direttamente il tuo coordinatore commerciale utilizzando uno dei metodi di contatto elencati sul loro profilo.",
|
||||
"Your trade partner will not know the destination of the Lightning payment. The permanence of the data collected by the coordinators depend on their privacy and data policies. If a dispute arises, a coordinator may request additional information. The specifics of this process can vary from coordinator to coordinator.": "Il tuo partner commerciale non conoscerà la destinazione del pagamento Lightning. La permanenza dei dati raccolti dai coordinatori dipende dalle loro politiche sulla privacy e sui dati. In caso di controversia, un coordinatore può richiedere ulteriori informazioni. Le specifiche di questo processo possono variare da coordinatore a coordinatore.",
|
||||
"#19": "Phrases in components/Dialogs/AuditPGP.tsx",
|
||||
"Go back": "Indietro",
|
||||
"Keys": "Chiavi",
|
||||
@ -248,9 +248,9 @@
|
||||
"Coordinator": "Coordinatore",
|
||||
"Coordinator Notice": "Avviso del Coordinatore",
|
||||
"Coordinator commit hash": "Commit hash del coordinatore",
|
||||
"Coordinator description": "Coordinator description",
|
||||
"Coordinator hosted web app": "Coordinator hosted web app",
|
||||
"Coordinator offline": "Coordinator offline",
|
||||
"Coordinator description": "Descrizione del coordinatore",
|
||||
"Coordinator hosted web app": "Indirizzo diretto del coordinatore",
|
||||
"Coordinator offline": "Coordinatore offline",
|
||||
"Current onchain payout fee": "Attuale tariffa di pagamento onchain",
|
||||
"Current onchain payout status": "Current onchain payout status",
|
||||
"Development fund supporter: donates {{percent}}% to make RoboSats better.": "Development fund supporter: donates {{percent}}% to make RoboSats better.",
|
||||
|
@ -6,34 +6,62 @@
|
||||
<link rel="icon" type="image/png" href="<%= htmlWebpackPlugin.options.basePath %>static/assets/images/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="<%= htmlWebpackPlugin.options.basePath %>static/assets/images/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="<%= htmlWebpackPlugin.options.basePath %>static/assets/images/favicon-192x192.png" sizes="192x192">
|
||||
|
||||
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="description" content="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. No user registration required.">
|
||||
|
||||
<% if (pro) { %>
|
||||
<title>RoboSats PRO - Simple and Private Bitcoin Exchange</title>
|
||||
|
||||
<link rel="stylesheet" href="<%= htmlWebpackPlugin.options.basePath %>static/css_pro/fonts.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.basePath %>static/css_pro/react-grid-layout.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.basePath %>static/css_pro/react-resizable.css"/>
|
||||
<title>RoboSats PRO - Simple and Private Bitcoin Exchange</title>
|
||||
<link rel="stylesheet" href="<%= htmlWebpackPlugin.options.basePath %>static/css_pro/fonts.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.basePath %>static/css_pro/react-grid-layout.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.basePath %>static/css_pro/react-resizable.css"/>
|
||||
<% } else { %>
|
||||
<title>RoboSats - Simple and Private Bitcoin Exchange</title>
|
||||
|
||||
<link rel="stylesheet" href="<%= htmlWebpackPlugin.options.basePath %>static/css/fonts.css"/>
|
||||
<title>RoboSats - Simple and Private Bitcoin Exchange</title>
|
||||
<link rel="stylesheet" href="<%= htmlWebpackPlugin.options.basePath %>static/css/fonts.css"/>
|
||||
<% } %>
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.basePath %>static/css/loader.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.basePath %>static/css/index.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="<%= htmlWebpackPlugin.options.basePath %>static/css/leaflet.css"/>
|
||||
|
||||
<style>
|
||||
/* Styles for the JavaScript-disabled disclaimer */
|
||||
.noscript-container {
|
||||
max-width: 600px;
|
||||
margin: 40px auto;
|
||||
padding: 20px;
|
||||
border: 2px solid #e74c3c;
|
||||
background-color: #fdecea;
|
||||
color: #c0392b;
|
||||
text-align: center;
|
||||
font-family: Arial, sans-serif;
|
||||
}
|
||||
.noscript-container h2 {
|
||||
margin-top: 0;
|
||||
font-size: 1.8em;
|
||||
}
|
||||
.noscript-container p {
|
||||
font-size: 1.1em;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.noscript-container a {
|
||||
color: #c0392b;
|
||||
text-decoration: underline;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<!-- This block is only rendered if JavaScript is disabled -->
|
||||
<noscript>
|
||||
<div>
|
||||
This site requires JavaScript. This message is only visible if you have it disabled. <br/><br/>
|
||||
If you are using TOR browser set the "Security Level" to "Standard". If you keep seeing this message clear cache and storage of TOR browser app and retry.<br/><br/>
|
||||
If the problem persists, ask for support in the RoboSats telegram group<a href="https://t.me/robosats"> (t.me/robosats)</a>
|
||||
<div class="noscript-container">
|
||||
<h2>JavaScript is Disabled</h2>
|
||||
<p>This website requires JavaScript for full functionality. Please enable JavaScript in your browser settings to proceed.</p>
|
||||
<p>If you’re using Tor Browser, ensure your "Security Level" is set to "Standard". If the issue persists, try clearing your cache and storage.</p>
|
||||
<p>Need more help? Visit our support channel on Telegram: <a href="https://t.me/robosats" target="_blank" rel="noopener">t.me/robosats</a>.</p>
|
||||
</div>
|
||||
</noscript>
|
||||
|
||||
<div id="main">
|
||||
<div id="app">
|
||||
<div class="loaderCenter">
|
||||
@ -60,11 +88,13 @@
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
window.RobosatsSettings = '<%= htmlWebpackPlugin.options.robosatsSettings %>'
|
||||
window.RobosatsSettings = '<%= htmlWebpackPlugin.options.robosatsSettings %>';
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
@ -150,8 +150,8 @@ android {
|
||||
applicationId "com.robosats"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 7
|
||||
versionName "0.7.3-alpha"
|
||||
versionCode 8
|
||||
versionName "0.7.4-alpha"
|
||||
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
||||
|
||||
if (isNewArchitectureEnabled()) {
|
||||
|
4
mobile/package-lock.json
generated
4
mobile/package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "robosats",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.4",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "robosats",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.4",
|
||||
"dependencies": {
|
||||
"@react-native-clipboard/clipboard": "^1.13.2",
|
||||
"@react-native-community/netinfo": "^11.3.0",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "robosats",
|
||||
"version": "0.7.3",
|
||||
"version": "0.7.4",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"android": "react-native run-android",
|
||||
|
@ -1,57 +1,67 @@
|
||||
RoboSats v0.7.3 is now out! :rocket:
|
||||
RoboSats v0.7.4 is now out! :rocket:
|
||||
|
||||
# Changes
|
||||
## What's new
|
||||
- Websockets now working on Android app: this enables instant chat and Nostr order book features! @koalasat
|
||||
- First external coordinator now available: you can now see @lnp2pbot orders on RoboSats UI @koalasat
|
||||
- Better display coordinator info on the Create Order form @koalasat
|
||||
- Charts now depend on selected currency @femelo
|
||||
- Fixed exchange summary aggregatons @koalasat
|
||||
### For Users
|
||||
- You can now see @lnp2pbot orders on RoboSats mobile app @koalasat
|
||||
- Changed URLs to https://robosats.org and new onion @koalasat
|
||||
- Order creation view now displays all available payment methods @koalasat
|
||||
- Test fixes @jerryfletcher21
|
||||
- Libraries updates @KoalaSat
|
||||
### For Coordinators
|
||||
- Libraries updates @koalasat
|
||||
|
||||
# Android
|
||||
|
||||
**[Click to download universal RoboSats APK for Android](https://github.com/RoboSats/robosats/releases/download/v0.7.3-alpha/robosats-v0.7.3.alpha-universal.apk)**
|
||||
**[Click to download universal RoboSats APK for Android](https://github.com/RoboSats/robosats/releases/download/v0.7.4-alpha/robosats-v0.7.4.alpha-universal.apk)**
|
||||
Smaller bundles for each CPU architecture available in the attachments.
|
||||
|
||||
### Verify the app using GPG:
|
||||
|
||||
1. [Download the ascii armored signature](https://github.com/Reckless-Satoshi/robosats/releases/download/v0.7.3-alpha/robosats-v0.7.3.alpha-universal.apk.asc)
|
||||
1. [Download the ascii armored signature](https://github.com/Reckless-Satoshi/robosats/releases/download/v0.7.4-alpha/robosats-v0.7.4.alpha-universal.apk.asc)
|
||||
|
||||
2. Run this command on a directory that contains the apk file and and the ascii armored signature.
|
||||
`gpg --verify robosats-v0.7.3.alpha-universal.apk.asc`
|
||||
`gpg --verify robosats-v0.7.4.alpha-universal.apk.asc`
|
||||
|
||||
3. Verify the signer is actually Reckless-Satoshi (fingerprints match): [B4AB5F19113D4125DDF217739C4585B561315571](https://keys.openpgp.org/vks/v1/by-fingerprint/B4AB5F19113D4125DDF217739C4585B561315571)
|
||||
3. Verify the signer is actually ~~Reckless-Satoshi (fingerprints match): [B4AB5F19113D4125DDF217739C4585B561315571](https://keys.openpgp.org/vks/v1/by-fingerprint/B4AB5F19113D4125DDF217739C4585B561315571)~~ KoalaSat [8FCDBF574CCFD73DB68B00CC2F7F61C6146AB157](https://keys.openpgp.org/vks/v1/by-fingerprint/8FCDBF574CCFD73DB68B00CC2F7F61C6146AB157)
|
||||
|
||||
Alternatively you can also verify with the release with the SHA256 checksum.
|
||||
Additionally, you can download it from [Izzysoft repository](https://apt.izzysoft.de/fdroid/) or [ZapStore](https://zapstore.dev/)
|
||||
|
||||
# Desktop
|
||||
|
||||
**Download the Desktop App zip file**
|
||||
Find the zip file that suits with your operative system:
|
||||
|
||||
- [Windows](https://github.com/RoboSats/robosats/releases/download/v0.7.3-alpha/robosats-desktop-v0.7.3.alpha-win32-ia32.zip)
|
||||
- [Mac](https://github.com/RoboSats/robosats/releases/download/v0.7.3-alpha/robosats-desktop-v0.7.3.alpha-mac-darwin-x64.zip)
|
||||
- [Linux](https://github.com/RoboSats/robosats/releases/download/v0.7.3-alpha/robosats-desktop-v0.7.3.alpha-linux-x64.zip)
|
||||
|
||||
- [Windows](https://github.com/RoboSats/robosats/releases/download/v0.7.4-alpha/robosats-desktop-v0.7.4.alpha-win32-ia32.zip)
|
||||
- [Mac](https://github.com/RoboSats/robosats/releases/download/v0.7.4-alpha/robosats-desktop-v0.7.4.alpha-mac-darwin-x64.zip)
|
||||
- [Linux](https://github.com/RoboSats/robosats/releases/download/v0.7.4-alpha/robosats-desktop-v0.7.4.alpha-linux-x64.zip)
|
||||
|
||||
### Verify the app using GPG:
|
||||
|
||||
You can also verify with the release with the SHA256 checksum.
|
||||
1. Download the ascii armored signature:
|
||||
|
||||
- [Windows](https://github.com/RoboSats/robosats/releases/download/v0.7.4-alpha/robosats-desktop-v0.7.4.alpha-win32-ia32.zip.asc)
|
||||
- [Mac](https://github.com/RoboSats/robosats/releases/download/v0.7.4-alpha/robosats-desktop-v0.7.4.alpha-mac-darwin-x64.zip.asc)
|
||||
- [Linux](https://github.com/RoboSats/robosats/releases/download/v0.7.4-alpha/robosats-desktop-v0.7.4.alpha-linux-x64.zip.asc)
|
||||
|
||||
3. Run this command on a directory that contains the apk file and and the ascii armored signature.
|
||||
`gpg --verify robosats-v0.7.4.alpha-....asc`
|
||||
|
||||
4. Verify the signer is actually ~~Reckless-Satoshi (fingerprints match): [B4AB5F19113D4125DDF217739C4585B561315571](https://keys.openpgp.org/vks/v1/by-fingerprint/B4AB5F19113D4125DDF217739C4585B561315571)~~ KoalaSat [8FCDBF574CCFD73DB68B00CC2F7F61C6146AB157](https://keys.openpgp.org/vks/v1/by-fingerprint/8FCDBF574CCFD73DB68B00CC2F7F61C6146AB157)
|
||||
|
||||
# Docker Images
|
||||
|
||||
[Coordinator Backend Image v0.7.3-alpha (Docker Hub)](https://hub.docker.com/r/recksato/robosats/tags?page=1&name=v0.7.3-alpha)
|
||||
[Coordinator Backend Image v0.7.4-alpha (Docker Hub)](https://hub.docker.com/r/recksato/robosats/tags?page=1&name=v0.7.4-alpha)
|
||||
|
||||
|
||||
```bash
|
||||
docker pull recksato/robosats:v0.7.3-alpha
|
||||
docker pull recksato/robosats:v0.7.4-alpha
|
||||
```
|
||||
|
||||
[Client App Image v0.7.3-alpha (Docker Hub)](https://hub.docker.com/r/recksato/robosats-client/tags?page=1&name=v0.7.3-alpha)
|
||||
[Client App Image v0.7.4-alpha (Docker Hub)](https://hub.docker.com/r/recksato/robosats-client/tags?page=1&name=v0.7.4-alpha)
|
||||
|
||||
```bash
|
||||
docker pull recksato/robosats-client:v0.7.3-alpha
|
||||
docker pull recksato/robosats-client:v0.7.4-alpha
|
||||
```
|
||||
|
||||
See [nodeapp/docker-compose.yml](https://github.com/Reckless-Satoshi/robosats/blob/2cd9d748706a8dcc0f03006b483acc6000e0572a/nodeapp/docker-compose.yml) for an example docker-compose usage of the `robosats-client` image.
|
||||
|
||||
|
@ -4,8 +4,8 @@ Hash: SHA512
|
||||
bcrt1qrrvml8tr4lkwlqpg9g394tye6s5950qf9tj9e9
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iHUEARYIAB0WIQQyIVYjhac1qLz7sLwuNFtLSY2XJAUCZVUUTQAKCRAuNFtLSY2X
|
||||
JA4zAP9PW71ZvQglGnexa9LYryVbnI0w3WnWXYaOmowy/aMM5wD/a2xZNk95DiDq
|
||||
s8PnKT41yS+QIBrn7+iZ2DqlCjKdNgc=
|
||||
=NOcM
|
||||
iHUEARYKAB0WIQQyIVYjhac1qLz7sLwuNFtLSY2XJAUCZnxJEwAKCRAuNFtLSY2X
|
||||
JEEvAQCh/RPf17JvbodoTbmnyrxWFAeydn3aNefnCVtPrL81XQD/YPMEfIM4f2Tf
|
||||
3uPqTn0vtXUKtsYtZvxRi8STL7nXKws=
|
||||
=Nlv0
|
||||
-----END PGP SIGNATURE-----
|
||||
|
@ -1229,7 +1229,7 @@ class TradeTest(BaseAPITestCase):
|
||||
|
||||
# Fetch amount of rewards for taker
|
||||
path = reverse("robot")
|
||||
taker_headers = trade.get_robot_auth(trade.maker_index)
|
||||
taker_headers = trade.get_robot_auth(trade.taker_index)
|
||||
response = self.client.get(path, **taker_headers)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
@ -10,11 +10,11 @@ def sign_message(message, private_key_path, passphrase_path):
|
||||
with open(passphrase_path, "r") as f:
|
||||
passphrase = f.read()
|
||||
|
||||
gpg.import_keys(private_key, passphrase=passphrase)
|
||||
import_result = gpg.import_keys(private_key, passphrase=passphrase)
|
||||
|
||||
# keyid=import_result.fingerprints[0]
|
||||
signed_message = gpg.sign(
|
||||
message, passphrase=passphrase, extra_args=["--digest-algo", "SHA512"]
|
||||
message, keyid=import_result.fingerprints[0], passphrase=passphrase,
|
||||
extra_args=["--digest-algo", "SHA512"]
|
||||
)
|
||||
|
||||
# [print(name, getattr(signed_message, name)) for name in dir(signed_message) if not callable(getattr(signed_message, name))]
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"major": 0,
|
||||
"minor": 7,
|
||||
"patch": 3
|
||||
"patch": 4
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user