Merge branch 'main' into the-federation-layer-v0.6.0

This commit is contained in:
Reckless_Satoshi 2024-02-11 14:59:52 +00:00 committed by GitHub
commit 683cca6900
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
54 changed files with 824 additions and 194 deletions

View File

@ -52,7 +52,7 @@ jobs:
java-version: 11
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
uses: gradle/gradle-build-action@v3
- name: 'Build Android Release'
run: |

View File

@ -31,7 +31,7 @@ jobs:
run: echo "current_date=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
- name: Submit pull request
uses: peter-evans/create-pull-request@v5
uses: peter-evans/create-pull-request@v6
with:
commit-message: "Update LNProxy relay list on ${{ env.current_date }}"
committer: GitHub Action <action@github.com>

View File

@ -13,14 +13,12 @@ RoboSats is a simple and private way to exchange bitcoin for national currencies
</div>
## Try it out!
### **Bitcoin Mainnet**
- **TOR URL:** [**RoboSats**6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion](http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion) ( Open with [Tor Browser](https://www.torproject.org/download/))
- Clearnet URL: [unsafe.robosats.com](https://unsafe.robosats.com) (not recommended!)
- Clearnet Mirrors: [unsafe2](https://unsafe2.robosats.com) || [unsafe3](https://unsafe3.robosats.com) (not recommended!)
- **TOR URL:** [**RoboDex**arjwtfryec556cjdz3dfa7u47saek6lkftnkgshvgg2kcumqd.onion](http://robodexarjwtfryec556cjdz3dfa7u47saek6lkftnkgshvgg2kcumqd.onion) ( Open with [Tor Browser](https://www.torproject.org/download/))
- Clearnet URL: [dex.robosats.com](https://unsafe.robosats.com) (not recommended!)
*Always use [Tor Browser](https://www.torproject.org/download/) 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!*
- [Testnet and mirrors](https://learn.robosats.com/docs/access)
*You can use Testnet Bitcoin by going to the Settings page and switching to Testnet*
## How to use it
https://user-images.githubusercontent.com/90936742/167310017-dc211a05-dd5e-4ef4-b93f-250f80bc5bca.mp4

View File

@ -133,7 +133,13 @@ class OrderAdmin(AdminChangeLinksMixin, admin.ModelAdmin):
if not obj.logs:
return format_html("<b>No logs were recorded</b>")
with_hyperlinks = objects_to_hyperlinks(obj.logs)
return format_html(f'<table style="width: 100%">{with_hyperlinks}</table>')
try:
html_logs = format_html(
f'<table style="width: 100%">{with_hyperlinks}</table>'
)
except Exception as e:
html_logs = f"An error occurred while formatting the parsed logs as HTML. Exception {e}"
return html_logs
actions = [
"cancel_public_order",

View File

@ -36,6 +36,14 @@ class InfoSerializer(serializers.Serializer):
node_alias = serializers.CharField()
node_id = serializers.CharField()
network = serializers.CharField()
min_order_size = serializers.IntegerField(help_text="Minimum order size in Sats")
max_order_size = serializers.IntegerField(help_text="Maximum order size in Sats")
swap_enabled = serializers.BooleanField(
help_text="Whether the option for onchain swap payouts is available or not"
)
max_swap = serializers.IntegerField(
help_text="Maximum size for onchain swap payouts in Sats"
)
maker_fee = serializers.FloatField(help_text="Exchange's set maker fee")
taker_fee = serializers.FloatField(help_text="Exchange's set taker fee ")
bond_size = serializers.FloatField(help_text="Default bond size (percent)")

View File

@ -488,11 +488,19 @@ def objects_to_hyperlinks(logs: str) -> str:
Used to format pretty logs for the Order admin panel.
"""
objects = ["LNPayment", "Robot", "Order", "OnchainPayment", "MarketTick"]
for obj in objects:
logs = re.sub(
rf"{obj}\(([0-9a-fA-F\-A-F]+),\s*([^)]+)\)",
lambda m: f'<b><a href="/coordinator/api/{obj.lower()}/{m.group(1)}">{m.group(2)}</a></b>',
logs,
flags=re.DOTALL,
)
try:
for obj in objects:
logs = re.sub(
rf"{obj}\(([0-9a-fA-F\-A-F]+),\s*([^)]+)\)",
lambda m: f'<b><a href="/coordinator/api/{obj.lower()}/{m.group(1)}">{m.group(2)}</a></b>',
logs,
flags=re.DOTALL,
)
except re.error as e:
print("Error occurred:", e.msg)
print("Pattern:", e.pattern)
print("Position:", e.pos)
logs = f"An error occurred while parsing the logs. Exception {e}"
return logs

View File

@ -787,7 +787,8 @@ class InfoView(viewsets.ViewSet):
context["alternative_name"] = config("ALTERNATIVE_NAME")
context["node_alias"] = config("NODE_ALIAS")
context["node_id"] = config("NODE_ID")
context["network"] = config("NETWORK")
context["network"] = config("NETWORK", cast=str, default="mainnet")
context["maker_fee"] = float(config("FEE")) * float(config("MAKER_FEE_SPLIT"))
context["maker_fee"] = float(config("FEE")) * float(config("MAKER_FEE_SPLIT"))
context["taker_fee"] = float(config("FEE")) * (
1 - float(config("MAKER_FEE_SPLIT"))
@ -795,6 +796,10 @@ class InfoView(viewsets.ViewSet):
context["bond_size"] = settings.DEFAULT_BOND_SIZE
context["notice_severity"] = config("NOTICE_SEVERITY", cast=str, default="none")
context["notice_message"] = config("NOTICE_MESSAGE", cast=str, default="")
context["min_order_size"] = config("MIN_ORDER_SIZE", cast=int, default=20000)
context["max_order_size"] = config("MAX_ORDER_SIZE", cast=int, default=250000)
context["swap_enabled"] = not config("DISABLE_ONCHAIN", cast=bool, default=True)
context["max_swap"] = config("MAX_SWAP_ALLOWED", cast=int, default=0)
try:
context["current_swap_fee_rate"] = Logics.compute_swap_fee_rate(

View File

@ -0,0 +1,7 @@
## <i class="fa-brands fa-github-alt"></i> ¡Puedes ayudar a mejorar esta página!
Learn RoboSats es un esfuerzo conjunto de la comunidad RoboSats. Si ya has utilizado RoboSats antes, ¡ya eres un experto! Ayuda a mejorar esta documentación.
**Consejo:** Puedes directamente [editar esta página <i class="fa-brands fa-github-alt"></i>](https://github.com/RoboSats/robosats/blob/main/docs/{{page.src}}) y abrir un [Pull Request <i class="fa-solid fa-code-pull-request"/>](https://github.com/RoboSats/robosats/pulls). Tus cambios se mostrarán aquí.
{: .notice--primary}

15
docs/_includes/wip_es Normal file
View File

@ -0,0 +1,15 @@
<br/>
<div align="center">
<img src="/assets/images/wip.jpg" width="330" />
</div>
<br/>
Esta página está en construcción. Learn.RoboSats es un esfuerzo conjunto de la comunidad RoboSats.
## <i class="fa-solid fa-seedling"></i> ¡Puedes completar esta página!
**Consejo:** Puedes directamente [editar esta página <i class="fa-brands fa-github-alt"></i>](https://github.com/RoboSats/robosats/blob/main/docs/{{page.src}}) y abrir una [Pull Request <i class="fa-solid fa-code-pull-request"/>](https://github.com/RoboSats/robosats/pulls). Tus cambios se mostrarán aquí mismo.
{: .notice--primary}
Si ya has utilizado RoboSats, ¡eres un experto! Si comprendes cómo funciona detrás todo por detrás, ¡eres un maestro! Por favor, considera contribuir a las guías y la documentación de la plataforma Learn.RoboSats.

View File

@ -10,15 +10,25 @@ sidebar:
src: "_pages/docs/00-quick-start/03-access.md"
---
## <img style='width:32px;height:32px' src='/assets/vector/tor.svg'/> Privately with TOR
## <img style='width:32px;height:32px' src='/assets/vector/tor.svg'/> RoboSats federated client with TOR
A safe and very private way to access RoboSats is through the Onion address. You need [TOR browser](/docs/tor/) and access via the link:
A safe and very private way to access RoboSats federated client is through the Onion address. You need [TOR browser](/docs/tor/) and access via the link:
> [<b>robosats</b>6tkf3eva7x2voqso3a5wcorsnw34j<br/>veyxfqi2fu7oyheasid.onion](http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion/)
>
[<b>robodex</b>arjwtfryec556cjdz3dfa7u47saek6lkftnkgshvgg2kcumqd.onion](http://robodexarjwtfryec556cjdz3dfa7u47saek6lkftnkgshvgg2kcumqd.onion/)
You can also open the shortcut [dex.robosats.com](https://dex.robosats.com) in Tor Browser and get instantly redirected to the Onion site.
**Private:** Your connection is encrypted end-to-end and relaid by several layers of nodes, thus making tracking harder.
{: .notice--primary}
## <img style='width:32px;height:32px' src='/assets/vector/tor.svg'/> RoboSats Experimental coordinator with TOR
You can access the Experimental coordinator through this Onion address. You need [TOR browser](/docs/tor/) and access via the link:
> [<b>robosats</b>6tkf3eva7x2voqso3a5wcorsnw34j<br/>veyxfqi2fu7oyheasid.onion](http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion/)
## <img style='width:32px;height:32px' src='/assets/vector/tor.svg'/> Privately with TOR-enabled Android App
RoboSats can be safely and privately accessed via the Android app. The app is available via the RoboSats GitHub release page:

View File

@ -46,7 +46,7 @@ Amazon eGift Cards are one of the more private payment methods on RoboSats. They
It is important to not share a giftcard code directly on the chat, as this might lead to difficult to solve disputes in case of fraud. As a seller, **do not accept a giftcard code on the chat**. Instead, the seller should provide an email in chat. The buyer should buy a new giftcard explicitly for the trade and have it sent to the email address of the seller. This way the seller knows he is the only one to have access to the redemeable code. This apprach also generates verifiable evidence that the giftcard was bought for the RoboSats trade in case of dispute.
In case the buyer has an existing Amazon giftcard code, the buyer will first have to apply the code to his own account. Then buy the seller's items on their wishlist using the account balance. Amazon no longer accepts gift card as payment to buy gift cards.
**Amazon no longer accepts gift card as payment to buy gift cards.**
Find more details on [Amazon eGift card Bisq guidelines](https://bisq.wiki/Amazon_eGift_card)
@ -62,6 +62,16 @@ In Canada, [Interac e-Transfer](https://www.interac.ca/en/consumers/support/faq-
The best practice for users trying to transact with a payment method with a high risk of losing funds is discussed in this section.
### Revolut via payment links
In a Revolut payment, a `@revtag` is usually exchanged in the chat and can be verified in the payment history of the app making proof of payments easy.
However, payment links, which have the format https://revolut.me/p/XXXXX, don't contain recipient address information.
In a dispute, there's no recipient address reference and both buyer and seller could cheat. The payment link could be redeemed by an unknown third party complicit with either buyer or seller.
Therefore, insist on receiving the `@revtag` when making a payment with Revolut to avoid these risks. The `@revtag` can also be received as a link. This link would look like this: https://revolut.me/@revtag.
### Paypal
Paypal is one of the widely used fiat payment methods. However, with <a href="https://www.paypal.com/us/webapps/mpp/ua/buyer-protection">PayPal buyer protection policy</a>, buyer can do fraudulent action by creating a refund request in PayPal after the trading process in RoboSats is finished and therefore taking both fiat and bitcoin all by themselves.

View File

@ -6,7 +6,7 @@ sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/rocket.svg"/>Inicio rápido'
nav: docs
---
RoboSats es una manera fácil de intercambiar Bitcoin de forma privada por monedas nacionales. Simplifica la experiencia entre pares y utiliza hodl invoices para minimizar los requisitos de custodia y confianza.
RoboSats es una manera fácil de intercambiar Bitcoin de forma privada por monedas nacionales. Simplifica la experiencia entre pares y utiliza facturas retenidas para minimizar los requisitos de custodia y confianza.
**¡Vamos a ello!** Para empezar a usar RoboSats solo necesitas una [<i class='fa-solid fa-wallet'></i> wallet Lightning](/docs/es/wallets/) y [un navegador con TOR](/docs/es/tor/).
{: .notice--primary}

View File

@ -16,11 +16,11 @@ RoboSats es experimental y, como tal, actualmente es respaldado por un [nodo coo
## **Usando de la Red Lightning**
Un requisito previo para usar LN es una billetera. Se recomienda encarecidamente utilizar una billetera no custodial y de código abierto donde solo tú tengas las claves. Las billeteras custodiales y cerradas pueden recopilar información sobre tus transacciones, información de la cuenta y posiblemente otros metadatos. Además, recuerda que cualquier fondo mantenido en LN no se considera almacenamiento en frío, sino que está en una billetera "caliente" conectada a Internet. Para usar RoboSats, se recomienda utilizar una billetera que sea compatible con [facturas de retención de Lightning](/docs/es/escrow/#what-is-a-hold-invoice), consulta [Entender > Billeteras](/docs/es/wallets/) para obtener una lista no exhaustiva de la compatibilidad de las billeteras LN.
Un requisito previo para usar LN es una wallet. Se recomienda encarecidamente utilizar una wallet no custodial y de código abierto donde solo tú tengas las claves. las wallet custodiales y cerradas pueden recopilar información sobre tus transacciones, información de la cuenta y posiblemente otros metadatos. Además, recuerda que cualquier fondo mantenido en LN no se considera almacenamiento en frío, sino que está en una wallet "caliente" conectada a Internet. Para usar RoboSats, se recomienda utilizar una wallet que sea compatible con [facturas de retención de Lightning](/docs/es/escrow/#qué-es-una-factura-de-retención), consulta [Entender > Wallets](/docs/es/wallets/) para obtener una lista no exhaustiva de la compatibilidad de las wallet LN.
Al utilizar Lightning, los pagos se realizan mediante facturas. El receptor de Sats proporciona una factura al remitente de Sats, a menudo en forma de un código QR, solicitando al remitente que pague la cantidad específica de Sats solicitada por la factura. La factura comienza con el prefijo "lnbc" y se puede decodificar para inspeccionar su contenido, como la cantidad de Sats enviados, el ID del nodo al que se enviaron los Sats, cualquier descripción proporcionada, etc.
La Red Lightning, tal y como está, no es completamente privada. Los usuarios deben tener cuidado de no revelar información sensible al enviar y recibir pagos en LN. No confíes en una billetera codigo cerrado y custodial para respetar tu información; puedes obtener un mayor grado de privacidad si usas una billetera no custodial. Además, consulta [Mejores Prácticas > Billeteras Proxy](/docs/es/proxy-wallets/) para obtener más información sobre preocupaciones de privacidad al recibir Sats a través de LN.
La Red Lightning, tal y como está, no es completamente privada. Los usuarios deben tener cuidado de no revelar información sensible al enviar y recibir pagos en LN. No confíes en una wallet codigo cerrado y custodial para respetar tu información; puedes obtener un mayor grado de privacidad si usas una wallet no custodial. Además, consulta [Mejores Prácticas > Wallets Proxy](/docs/es/proxy-wallets/) para obtener más información sobre preocupaciones de privacidad al recibir Sats a través de LN.
## **"Travesuras" en la Red Lightning**
@ -31,4 +31,4 @@ Al comprar bitcoin (recibir Sats en LN), la factura que proporcionas puede falla
En caso de tal escenario, realiza una copia de seguridad segura del token privado de tu robot y verifica periódicamente el pago de tu pedido. Si el problema persiste, no dudes en comunicarte con el [grupo de soporte de SimpleX](/contribute/code/#communication-channels) para que el personal de RoboSats pueda investigar.
{% include wip %}
{% include wip_es %}

View File

@ -18,4 +18,4 @@ Utilizar TOR tiene desventajas tales como velocidades de conexión a la red más
Tenlo en cuenta cuando utilices RoboSats. Es importante hacer una copia de seguridad del token secreto de tu robot en caso de que la red TOR experimente problemas de conexión.
{% include wip %}
{% include wip_es %}

View File

@ -12,7 +12,7 @@ src: "_pages/docs/es/00-quick-start/03-access.md"
## <img style='width:32px;height:32px' src='/assets/vector/tor.svg'/> De manera privada con TOR
Una forma segura y muy privada de usar RoboSats es a través de la dirección Onion. Necesitas el[navegador TOR](/docs/es/tor/).
Una forma segura y muy privada de usar RoboSats es a través de la dirección Onion. Necesitas el [navegador TOR](/docs/es/tor/).
> [<b>robosats</b>6tkf3eva7x2voqso3a5wcorsnw34j<br/>veyxfqi2fu7oyheasid.onion](http://robosats6tkf3eva7x2voqso3a5wcorsnw34jveyxfqi2fu7oyheasid.onion/)
@ -74,4 +74,4 @@ Hay varios servicios tor2web que sirven como mirrors en caso de que uno de ellos
> [unsafe2.testnet.robosats.com](http://unsafe2.testnet.robosats.com/)
{% include improve %}
{% include improve_es %}

View File

@ -10,4 +10,4 @@ src: "_pages/docs/es/01-best-practices/00-best-practices.md"
Aunque RoboSats es muy privado y seguro desde el principio, siempre hay algunos pasos adicionales que puedes seguir para mejorar tu privacidad y minimizar riesgos.
{% include wip%}
{% include wip_es%}

View File

@ -7,7 +7,7 @@ toc_sticky: true
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/fingerprint.svg"/>Encriptación PGP'
nav: docs
src: "_pages/docs/01-best-practices/01-pgp-guide.md"
src: "_pages/docs/es/01-best-practices/01-pgp-guide.md"
---
# Encriptación PGP en RoboSats
@ -49,7 +49,7 @@ Si tu token es el correcto, habrás importado la clave privada para la comunicac
<div align="center">
<img src="/assets/images/sensitive-data-PGP-guide/gpg-3.png" width="650"/>
</div>
Podemos ver cómo la aplicación frontal llamó a esta clave `"RoboSats ID<hash>"`. Este es el ID del robot, el segundo hash SHA256 de nuestro *token* secreto, y se usó originalmente para generar de manera determinista el apodo y la imagen de avatar del robot ([aprende más](/docs/es/private/#robot-avatar-generation-pipeline)).
Podemos ver cómo la aplicación frontal llamó a esta clave `"RoboSats ID<hash>"`. Este es el ID del robot, el segundo hash SHA256 de nuestro *token* secreto, y se usó originalmente para generar de manera determinista el apodo y la imagen de avatar del robot ([aprende más](/docs/es/private/#generación-de-avatares-de-robot)).
#### Importar la clave pública de tu compañero
Solo necesitamos repetir los pasos anteriores para importar la clave pública de nuestro compañero.
@ -187,4 +187,4 @@ Los datos cifrados deben copiarse incluyendo el encabezado `(-----BEGIN PGP MESS
Si quieres leer un tutorial sobre cómo usar OpenKeychain para uso general, consulta [As Easy as P,G,P](https://diverter.hostyourown.tools/as-easy-as-pgp/)
{% include improve %}
{% include improve_es %}

View File

@ -84,4 +84,4 @@ Los datos cifrados deben copiarse incluyendo el encabezado `(-----BEGIN PGP MESS
Si quieres leer un tutorial sobre cómo usar OpenKeychain para uso general, consulta [As Easy as P,G,P](https://diverter.hostyourown.tools/as-easy-as-pgp/)
{% include improve %}
{% include improve_es %}

View File

@ -20,9 +20,9 @@ Nota: Esta guía es una modificación de las reglas de intercambio de <a href=
### Para ambos comprador y vendedor de bitcoin
1. Asegúrate de revisar la seccion <a href="https://github.com/Reckless-Satoshi/robosats/blob/main/docs/how-to-use.md">Cómo usar </a>antes de empezar a intercambiar.<br>
1. Asegúrate de revisar la seccion <a href="https://github.com/Reckless-Satoshi/robosats/blob/main/docs/_pages/tutorials/read/how-to-use_es.md">Cómo usar </a>antes de empezar a intercambiar.<br>
2. Indica el acuerdo claramente para evitar malentendidos.<br>
3. El método de pago fiat debería poder enviar y recibir instantáneamente porque la hodl invoice tiene un tiempo de expiración de 24 horas.<br>
3. El método de pago fiat debería poder enviar y recibir instantáneamente porque la factura retenida tiene un tiempo de expiración de 24 horas.<br>
Si el temporizador llega al vencimiento, podría desencadenar una disputa y podría conducir a una pérdida de la fianza.<br>
4. Después de que el tomador haya tomado la orden, ambas partes deben estar listas para pasar al siguiente paso antes de que expire el tiempo.<br>
5. Ten en cuenta que nadie puede leer el chat entre tu y tu contraparte.
@ -96,4 +96,4 @@ A continuación, selecciona "Enviar a un amigo" en la página de selección del
<img src="/assets/images/fiat-payment-methods/PayPal-choose-phone.png" width="230"/>
</div>
{% include improve %}
{% include improve_es %}

View File

@ -50,4 +50,4 @@ factura original.
Para aprender cualquier información sobre usted de una factura envuelta,
un atacante tendría que confabularse con el servidor lnproxy que usaste.
{% include wip %}
{% include wip_es %}

View File

@ -1,13 +1,13 @@
---
layout: single
title: "Canales Lightning"
permalink: /docs/channels/es/
permalink: /docs/es/channels/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/circle-nodes.svg"/>Canales Lightning'
nav: docs
src: "_pages/docs/01-best-practices/04-channels_es.md"
src: "_pages/docs/es/01-best-practices/04-channels_es.md"
---
<!-- TODO: ¿Debería abrir un canal al nodo de RoboSats? Depende. Establezca los 3 casos: 1) Como vendedor (buena idea, barata y confiable, pero podrían cerrarse eventualmente si no se usan), 2) como comprador (daría lo mismo, los compradores no pagan tarifas de enrutamiento. La privacidad es la misma) 3) Como nodo de enrutamiento (¡Vaya, súper útil! Sin embargo, no podemos garantizar que robosats sean un buen peer de enrutamiento: 1) muchos HTLC pequeños bloqueados durante largos períodos de tiempo 2) tiene tarifas altas 3) sin embargo, genera mucho movimiento legítimo de Sats, y es posible enrutar dos veces la misma orden. 4) Los Sats siempre estarán de tu lado, ¡y eso está bien! ¡Por diseño es cómo la liquidez es la más útil!) -->
{% include wip %}
{% include wip_es %}

View File

@ -31,4 +31,4 @@ Solo tu contraparte puede conocer cosas sobre ti mientras chateais. Mantén el c
{: .notice--primary}
{% include wip %}
{% include wip_es %}

View File

@ -10,4 +10,4 @@ sidebar:
src: "_pages/docs/es/02-features/02-fast.md"
---
{% include wip %}
{% include wip_es %}

View File

@ -12,4 +12,4 @@ src: "_pages/docs/es/02-features/03-fast.md"
<!-- TODO: Explain bonds, escrow, dispute resolution and community support. Be clear that this is an early development and experimental project, use with utmost caution. -->
{% include wip %}
{% include wip_es %}

View File

@ -15,13 +15,13 @@ Alice quiere comprar Sats de manera privada. Esto es paso a paso lo que sucede c
1. Alice genera un avatar (AdequateAlice01) usando su token aleatorio privado.
2. Alice almacena de forma segura el token para poder recuperar AdequateAlice01 en el futuro.
3. Alice hace una nueva orden y bloquea una hodl invoice pequeña para publicarla (fianza de creador).
3. Alice hace una nueva orden y bloquea una factura retenida pequeña para publicarla (fianza de creador).
4. Bob quiere vender satoshis, ve el pedido de Alice en el libro y lo toma.
5. Bob escanea una hodl invoice pequeña como su fianza de tomador. El contrato termina.
6. Bob publica un hodl invoice con los satoshis a negociar. Mientras Alice envía su invoice de recibir.
5. Bob escanea una factura retenida pequeña como su fianza de tomador. El contrato termina.
6. Bob publica una factura retenida con los satoshis a negociar. Mientras Alice envía su invoice de recibir.
7. En un chat privado, Bob le dice a Alice cómo enviarle el fiat.
8. Alice le paga a Bob, luego confirman que el fiat ha sido enviado y recibido.
9. Se cobra la hodl invoice de Bob y se envían los satoshis a Alice.
9. Se cobra la factura retenida de Bob y se envían los satoshis a Alice.
10. Las fianzas de Bob y Alice regresan automáticamente, ya que cumplieron con las reglas.
11. Las fianzas serían cobradas (perdidas) en caso de cancelación unilateral o engaño (disputa perdida).
@ -35,4 +35,4 @@ Alice quiere comprar Sats de manera privada. Esto es paso a paso lo que sucede c
<img src="/assets/images/trade-pipeline/seller-en.jpg" width="650"/>
</div>
{% include improve %}
{% include improve_es %}

View File

@ -1,16 +1,16 @@
---
layout: single
title: Premium sobre el Mercado
title: Prima sobre el Mercado
permalink: /docs/es/premium/
toc: true
toc_sticky: true
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/percent.svg"/>Premium'
title: '<img id="side-icon-verybig" src="/assets/vector/percent.svg"/>Prima'
nav: docs
src: "_pages/docs/es/03-understand/03-premium.md"
---
La prima asociada con su orden de par a par es la diferencia de precio que existe por encima o por debajo de la tasa actual de bitcoin-fiat que se encuentra en sus intercambios centralizados típicos.
La prima asociada con su orden de par a par es la diferencia de precio que existe por encima o por debajo de la tarifa actual de bitcoin-fiat que se encuentra en sus intercambios centralizados típicos.
Al navegar por el libro de ordenes, el precio de intercambio de bitcoin de los ordenes en vivo se ajusta automáticamente para incluir la prima correspondiente de la orden.
@ -20,7 +20,7 @@ En la parte inferior de la interfaz de robosats se encuentra la prima de precio
## **Elegir una prima**
Crea una orden, luego ingresa la "Prima sobre el mercado (%)", que puede ser un valor de porcentaje positivo, negativo o cero. De forma predeterminada, la prima del pedido tiene un precio relativo a la tasa de mercado de bitcoin-fiat.
Crea una orden, luego ingresa la "Prima sobre el mercado (%)", que puede ser un valor de porcentaje positivo, negativo o cero. De forma predeterminada, la prima del pedido tiene un precio relativo a la tarifa de mercado de bitcoin-fiat.
O, en lugar de la configuración predeterminada, los creadores de la orden pueden seleccionar el método fijo de precios explícito eligiendo una cantidad exacta de satoshis para intercambiar por la cantidad fiat dada.
@ -52,6 +52,6 @@ La privacidad es valiosa tanto para el comprador como para el vendedor y siempre
## **Información Adicional**
La prima relativa hace referencia a los tipos de cambio actuales de las API públicas, específicamente los precios de blockchain.io y yadio.io. Luego se calcula el precio medio de bitcoin en la moneda seleccionada y se muestra como la tasa de mercado que sigue su prima.
La prima relativa hace referencia a los tipos de cambio actuales de las API públicas, específicamente los precios de blockchain.io y yadio.io. Luego se calcula el precio medio de bitcoin en la moneda seleccionada y se muestra como la tarifa de mercado que sigue su prima.
La prima de 24 horas que se muestra en robosats está determinada por la mediana ponderada, no por la media, de los pedidos exitosos en las últimas 24 horas. Este método de cálculo es más resistente a los valores atípicos y más representativo del consenso del mercado entre pares. En otras palabras, el usuario debe ver este valor como la prima que aproximadamente puede esperar pagar por una orden.

View File

@ -13,17 +13,17 @@ src: "_pages/docs/es/03-understand/04-bonds.md"
La **fianza de fidelidad** es un pequeño depósito que el usuario "bloquea" y que se desbloqueará después de que se complete la transacción; sin embargo, los usuarios pueden perder su fianza si no cumplen con las obligaciones del contrato.
El **proceso de comercio de RoboSats** utiliza fianzas de fidelidad para incentivar tanto al creador de la orden como al tomador a seguir las reglas y no engañar a su compañero robot. Más específicamente, las fianzas son [facturas bloqueadas](https://github.com/lightningnetwork/lnd/pull/2022) utilizando la Red Lightning; ¡es la tecnología que hace posible RoboSats!
Consulte [Comprender > Custodia de operaciones > ¿Qué es una factura retenida?](/docs/es/escrow/#what-is-a-hold-invoice) para comprender cómo funcionan en la práctica las facturas de retención.
Consulte [Comprender > Custodia de operaciones > ¿Qué es una factura retenida?](/docs/es/escrow/#qué-es-una-factura-de-retención) para comprender cómo funcionan en la práctica las facturas de retención.
Por defecto, la fianza es del 3% del monto total de la transacción. Alternativamente, los creadores de órdenes pueden personalizar este monto desde un 2% hasta un 15%. Fianzas más grandes significan más "compromiso" necesario para comerciar.
La fianza no sale de tu billetera Lightning, pero ten en cuenta que algunas billeteras funcionan mejor con RoboSats que otras debido a la naturaleza del mecanismo de factura bloqueada de Lightning. Consulta [Entender > Billeteras](/docs/es/wallets/) para obtener información adicional.
La fianza no sale de tu billetera Lightning, pero ten en cuenta que algunas wallets funcionan mejor con RoboSats que otras debido a la naturaleza del mecanismo de factura bloqueada de Lightning. Consulta [Entender > Wallets](/docs/es/wallets/) para obtener información adicional.
*Nota: La opción que permite a los "Tomadores sin fianza" está en desarrollo pero no está disponible por el momento.*
## **Cómo bloquear una fianza**
Primero, consulta [Entender > Billeteras](/docs/es/wallets/) para encontrar billeteras Lightning compatibles que facilitarán el uso de RoboSats. Dependiendo de la billetera, la factura puede mostrarse como un pago en tránsito, congelado o incluso como si estuviera fallando. ¡Consulta la lista de compatibilidad de billeteras!
Primero, consulta [Entender > Wallets](/docs/es/wallets/) para encontrar wallets Lightning compatibles que facilitarán el uso de RoboSats. Dependiendo de la wallet, la factura puede mostrarse como un pago en tránsito, congelado o incluso como si estuviera fallando. ¡Consulta la lista de compatibilidad de wallets!
Lee la guía correspondiente según si estás creando o tomando la orden:
@ -33,7 +33,7 @@ Lee la guía correspondiente según si estás creando o tomando la orden:
Después de que se completa la transacción y ambos robots están satisfechos, las fianzas del creador y el tomador se desbloquean. Técnicamente, la fianza bloqueada nunca salió de tu billetera; pero ten cuidado, si no sigues las obligaciones del contrato intentando engañar o cancelando unilateralmente, perderás tu fianza de fidelidad.
Tu billetera puede tardar un tiempo en mostrar los fondos como desbloqueados en el saldo de tu cuenta. Algunas billeteras tienen dificultades para reconocer la factura bloqueada de Lightning como una retención temporal de tus fondos.
Tu billetera puede tardar un tiempo en mostrar los fondos como desbloqueados en el saldo de tu cuenta. Algunas wallets tienen dificultades para reconocer la factura bloqueada de Lightning como una retención temporal de tus fondos.
Si el problema persiste, ponte en contacto con el grupo de Telegram de RoboSats; pero ten cuidado con los estafadores que pueden contactarte directamente e hacerse pasar por el personal de RoboSats. El personal de RoboSats nunca se pondrá en contacto contigo primero. Consulta [Contribuir > Código > Canales de comunicación](/contribute/code/#communication-channels) para conocer los grupos de Telegram disponibles.
@ -77,4 +77,4 @@ Hay una gran cantidad de aplicaciones y servicios disponibles donde se pueden ga
Dado que la fianza es una retención temporal de tus fondos, incluso podrías pedir prestados satoshis a un amigo solo para la fianza de fidelidad. Después de que la fianza se desbloquea de una transacción exitosa, ¡simplemente devuelve los fondos a tu amigo!
{% include improve %}
{% include improve_es %}

View File

@ -16,23 +16,23 @@ El tiempo asignado para presentar (bloquear) un deposito de fianza es determinad
Si el vendedor no bloquea el deposito de fianza dentro del límite de tiempo dado en el pedido, entonces el vendedor pierde su fianza de fidelidad. Consulta [Entender > Fianzas](/docs/es/bonds/) para obtener información adicional sobre las fianzas de fidelidad. Además, si se abre una disputa, los satoshis en la fianza se liberan al ganador de la disputa.
Asegúrate de utilizar una billetera Lightning que funcione bien con RoboSats, consulta [Entender > Billeteras](/docs/es/wallets/) para obtener información adicional.
Asegúrate de utilizar una wallet Lightning que funcione bien con RoboSats, consulta [Entender > Wallets](/docs/es/wallets/) para obtener información adicional.
*Nota: El término "vendedor" se refiere a la venta de bitcoin, mientras que "comprador" se refiere a la compra de bitcoin.*
## **Qué es una Factura de Retención**
Las facturas de retención de Lightning, también conocidas como facturas "hodl", son un tipo de factura que "bloquea" fondos en tu billetera y luego "desbloquea" esos fondos según el estado de la factura, según lo determine el receptor. En algunas billeteras, la interfaz de usuario describe este tipo de pago como un pago "en tránsito" o "congelado".
Las facturas de retención de Lightning, también conocidas como facturas retenidas, son un tipo de factura que "bloquea" fondos en tu billetera y luego "desbloquea" esos fondos según el estado de la factura, según lo determine el receptor. En algunas wallets, la interfaz de usuario describe este tipo de pago como un pago "en tránsito" o "congelado".
A diferencia de los pagos típicos de Lightning que se bloquean y liquidan inmediatamente cuando llega el pago, una factura de retención solo bloquea el pago pero aún no lo liquida. A partir de este momento, el remitente no puede revocar su pago y, por lo tanto, los fondos están bloqueados en tu billetera pero aún no han salido de ella. El receptor elige si liquida (completa) o desbloquea (cancela) el HTLC y la factura.
En la práctica, la factura de retención de fianza está bloqueada hacia el nodo coordinador experimental de RoboSats. Esto significa que la factura se cobra exactamente cuando el vendedor hace clic en "Confirmar Fiat Recibido" y luego se paga la factura al comprador. Durante el tiempo que lleva liquidar el pago de Lightning al comprador, RoboSats tiene los fondos mientras intenta realizar repetidamente el pago al comprador.
Este método es, en este momento, el enfoque más seguro para asegurar que los compañeros cumplan con su parte del trato, ya que aún no se ha demostrado prácticamente una factura de retención directa entre el vendedor y el comprador con billeteras convencionales.
Este método es, en este momento, el enfoque más seguro para asegurar que los compañeros cumplan con su parte del trato, ya que aún no se ha demostrado prácticamente una factura de retención directa entre el vendedor y el comprador con wallets convencionales.
## **Cómo Presentar un deposito de fianza**
Primero, consulta [Entender > Billeteras](/docs/es/wallets/) para conocer las billeteras Lightning compatibles que facilitarán el uso de RoboSats. Dependiendo de la billetera, los fondos bloqueados pueden mostrarse como un pago en tránsito, congelado o incluso como si fallara. ¡Revisa la lista de compatibilidad de la billetera!
Primero, consulta [Entender > Wallets](/docs/es/wallets/) para conocer las wallet Lightning compatibles que facilitarán el uso de RoboSats. Dependiendo de la wallet, los fondos bloqueados pueden mostrarse como un pago en tránsito, congelado o incluso como si fallara. ¡Revisa la lista de compatibilidad de la wallet!
Lee la guía relevante según si estás creando o tomando un pedido para vender bitcoin:
@ -68,12 +68,12 @@ El robot tramposo correrá el riesgo de perder esa disputa y, consecuentemente,
Debido a los límites de tiempo involucrados en el proceso del pedido, se recomienda utilizar métodos de pago en fiat instantáneos para evitar exceder el temporizador de vencimiento. Consulta [Mejores Prácticas > Métodos de Pago](/docs/es/payment-methods/) para obtener información adicional.
Aunque sea una ventana de tiempo muy pequeña (aproximadamente un segundo), el deposito de fianza podría perderse permanentemente si RoboSats se cerrara o desapareciera repentinamente entre el momento en que el vendedor confirma que se recibió el fiat y el momento en que la billetera Lightning del comprador registra los fondos de fianza liberados. Utiliza una billetera Lightning bien conectada con suficiente liquidez entrante para ayudar a evitar fallas en el enrutamiento y, por ende, minimizar cualquier ventana de oportunidad de este tipo.
Aunque sea una ventana de tiempo muy pequeña (aproximadamente un segundo), el deposito de fianza podría perderse permanentemente si RoboSats se cerrara o desapareciera repentinamente entre el momento en que el vendedor confirma que se recibió el fiat y el momento en que la wallet Lightning del comprador registra los fondos de fianza liberados. Utiliza una wallet Lightning bien conectada con suficiente liquidez entrante para ayudar a evitar fallas en el enrutamiento y, por ende, minimizar cualquier ventana de oportunidad de este tipo.
## **Información Adicional**
Algunas billeteras Lightning tienen dificultades para reconocer la factura de retención de Lightning como un bloqueo de fondos. Como vendedor, es necesario utilizar una billetera que permita múltiples HTLC pendientes, ya que deberás bloquear fondos para una fianza y luego un fideicomiso.
Algunas wallets Lightning tienen dificultades para reconocer la factura de retención de Lightning como un bloqueo de fondos. Como vendedor, es necesario utilizar una wallet que permita múltiples HTLC pendientes, ya que deberás bloquear fondos para una fianza y luego un fideicomiso.
Si surgen problemas, comunícate con el grupo de Telegram de RoboSats; pero ten cuidado con los estafadores que pueden contactarte directamente e impersonar al personal de RoboSats. El personal de RoboSats nunca se comunicará directamente contigo primero. Consulta [Contribuir > Código > Canales de Comunicación](/contribute/code/#communication-channels) para conocer los grupos de Telegram disponibles.
{% include improve %}
{% include improve_es %}

View File

@ -22,4 +22,4 @@ Existen otros chats grupales públicos disponibles, pero los problemas relaciona
Consulta [Tutoriales > Leer (en inglés) > Disputas](/read/en/#disputes) para obtener una descripción general de ejemplo del proceso de disputa.
{% include improve %}
{% include improve_es %}

View File

@ -1,13 +1,13 @@
---
layout: single
title: Compatibilidad de wallets RoboSats
permalink: /docs/wallets/es/
permalink: /docs/es/wallets/
toc: true
toc_sticky: true
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/wallet.svg"/>Wallets'
nav: docs
src: "_pages/docs/03-understand/07-wallets_es.md"
src: "_pages/docs/es/03-understand/07-wallets.md"
# Icons
good: "<i style='color:#1976d2' class='fa-solid fa-square-check fa-2xl'></i>"
@ -27,22 +27,21 @@ Esta es una compilación no exhaustiva basada en la experiencia pasada de los us
| Wallet | Versión | Dispositivo | UX<sup>1</sup> | Fianzas<sup>2</sup> | Pagos<sup>3</sup> | Comp<sup>4</sup> | Total<sup>5</sup> |
|:---|:---|:--:|:--:|:--:|:--:|:--:|:--:|
|[Alby](#alby-browser-extension)|[v1.14.2](https://github.com/getAlby/lightning-browser-extension)|{{page.laptop}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} |{{page.thumbsup}}|
|[Blink](#blink-mobile-former-bitcoin-beach-wallet)|[2.2.73](https://www.blink.sv/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} |{{page.thumbsup}}|
|[Blixt](#blixt-androidios-lnd-light-backend-on-device)|[v0.4.1](https://github.com/hsjoberg/blixt-wallet)|{{page.phone}}|{{page.soso}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
|[Blue](#bluewallet-mobile)|[1.4.4](https://bluewallet.io/)|{{page.phone}}|{{page.good}}|{{page.unclear}}|{{page.unclear}}|{{page.good}}|{{page.unclear}}|
|[Breez](#breez-mobile)|[0.16](https://breez.technology/mobile/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
|[Cash App](#cash-app-mobile)|[4.7](https://cash.app/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} |{{page.thumbsup}}|
|[Alby](#alby-extensión-de-navegador)|[v1.14.2](https://github.com/getAlby/lightning-browser-extension)|{{page.laptop}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} |{{page.thumbsup}}|
|[Blink](#blink-móvil-antiguo-bitcoin-beach-wallet)|[2.2.73](https://www.blink.sv/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} |{{page.thumbsup}}|
|[Blixt](#blixt-androidios-backend-ligero-lnd-en-el-dispositivo)|[v0.4.1](https://github.com/hsjoberg/blixt-wallet)|{{page.phone}}|{{page.soso}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
|[Blue](#bluewallet-móvil)|[1.4.4](https://bluewallet.io/)|{{page.phone}}|{{page.good}}|{{page.unclear}}|{{page.unclear}}|{{page.good}}|{{page.unclear}}|
|[Breez](#breez-móvil)|[0.16](https://breez.technology/mobile/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
|[Cash App](#cash-app-móvil)|[4.7](https://cash.app/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} |{{page.thumbsup}}|
|[Core Lightning](#core-lightning--cln-cli-interface)|[v0.11.1](https://github.com/ElementsProject/lightning)|{{page.cli}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
|[Electrum](#electrum-desktop)|[4.1.4](https://github.com/spesmilo/electrum)|{{page.laptop}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}||
|[LND](#lnd-cli-interface)|[v0.14.2](https://github.com/LightningNetwork/lnd)|{{page.cli}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
|[lntxbot](https://github.com/RoboSats/robosats/issues/44#issuecomment-1054607956)|[NA](https://t.me/lntxbot)|{{page.laptop}}{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} | [{{page.thumbsup}}](https://github.com/RoboSats/robosats/issues/44#issuecomment-1054607956)|
|[Mash](https://app.mash.com/wallet)|[Beta](https://mash.com/consumer-experience/)|{{page.laptop}}{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} | {{page.thumbsup}}|
|[Muun](#muun-mobile)|[47.3](https://muun.com/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.bad}}|{{page.bad}}|{{page.thumbsdown}}|
|[Phoenix](#phoenix-mobile)|[35-1.4.20](https://phoenix.acinq.co/)|{{page.phone}}|{{page.good}}|{{page.soso}}|{{page.soso}}|{{page.soso}}|{{page.unclear}}|
|[Muun](#muun-móvil)|[47.3](https://muun.com/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.bad}}|{{page.bad}}|{{page.thumbsdown}}|
|[Phoenix](#phoenix-móvil)|[35-1.4.20](https://phoenix.acinq.co/)|{{page.phone}}|{{page.good}}|{{page.soso}}|{{page.soso}}|{{page.soso}}|{{page.unclear}}|
|[SBW](https://github.com/RoboSats/robosats/issues/44#issue-1135544303)|[2.4.27](https://github.com/btcontract/wallet/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
|[WoS](https://github.com/RoboSats/robosats/issues/44#issue-1135544303)|[1.15.0](https://www.walletofsatoshi.com/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
|[Zeus](#zeus-mobile-lnd-cln-eclair-remote-backend)|[v0.6.0-rc3](https://github.com/ZeusLN/zeus)|{{page.phone}}{{page.remote}}|{{page.soso}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
|[Zeus](#zeus-móvil-lnd-cln-eclair-remote-backend)|[v0.6.0-rc3](https://github.com/ZeusLN/zeus)|{{page.phone}}{{page.remote}}|{{page.soso}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}|
1. **UX:** ¿Muestra claramente la wallet que hay un pago "en transito" (factura retenida)?
2. **Fianzas:** ¿Puede la wallet bloquear los invoices con tiempos de expiracioón largos necesarios para las fianzas?
@ -50,7 +49,7 @@ Esta es una compilación no exhaustiva basada en la experiencia pasada de los us
4. **Compatible:** ¿Es la wallet generalmente compatible con RoboSats?
5. **Total:** ¿Es la wallet suficientemente compatible y estable para ser usada consistentemente sin problemas?
### Alby (browser extension)
### Alby (extensión de navegador)
Alby es una extensión de navegador compatible con el estándar WebLN. Dado que RoboSats es compatible con WebLN, la experiencia con Alby es probablemente la mejor de su clase: no tendrás que escanear los códigos QR ni generar invoices, simplemente haz clic en la ventana emergente de Alby para confirmar las acciones. Puedes conectar la extensión de Alby a la mayoría de los nodos y wallets populares, o simplemente dejar que Alby aloje una wallet de custodia para ti.
Instrucciones especiales para instalar Alby en el navegador Tor:
@ -58,7 +57,7 @@ Instrucciones especiales para instalar Alby en el navegador Tor:
2. Clicka en la extension de Alby y sigue los pasos para configurar tu wallet.
### Blink (Móvil, antiguo Bitcoin Beach Wallet)
Funciona bien con RoboSats. Las facturas de Hodl aparecen como "Pendiente" en el historial de transacciones. Los pagos a la wallet Blink funcionan según lo previsto. Wallet custodiado por Galoy que se originó en el proyecto Bitcoin Beach en El Salvador (anteriormente conocido como "Bitcoin Beach Wallet").
Funciona bien con RoboSats. Las facturas retenidas aparecen como "Pendiente" en el historial de transacciones. Los pagos a la wallet Blink funcionan según lo previsto. Wallet custodiado por Galoy que se originó en el proyecto Bitcoin Beach en El Salvador (anteriormente conocido como "Bitcoin Beach Wallet").
### Blixt (Android/iOS, backend ligero LND en el dispositivo)
La mayoría de las pruebas de desarrollo para Robosats se han realizado con Blixt. Es una de las wallets Lightning más completas que existen. Sin embargo, genera malentendidos cuando las facturas retenidas están bloqueadas, ya que muestra una rueda giratoria con el pago en tránsito. El usuario debe verificar el sitio web (robosats) para confirmar. Blixt permite múltiples HTLC pendientes, esto es necesario como vendedor ya que necesita bloquear un bono de tomador/creador y luego un fideicomiso comercial (2 HTLC concurrentes pendientes). Eventualmente, también podría mostrarse como facturas pagadas/cargadas que aún están pendientes, especialmente si el usuario fuerza el cierre de blixt y lo vuelve a abrir. Ocasionalmente pueden mostrarse como fianzas que de hecho han sido devueltas.
@ -70,7 +69,7 @@ Funciona bien. Pero están teniendo problemas en el modo custodial. Las fianzas
Funciona bien con RoboSats. Breez es una wallet no custodial. Así que ten en cuenta la gestión de canales y cosas así. Es una interfaz versátil y fácil de usar.
### Cash App (móvil)
Funciona bien con RoboSats. Las facturas de Hodl aparecen como "Pendientes" en el historial de transacciones. Los pagos a la wallet Cash App funcionan según lo previsto. wallet custodiada por Block, Inc, anteriormente conocido como Square, Inc, que está dirigido por Jack Dorsey.
Funciona bien con RoboSats. Las facturas retenidas aparecen como "Pendientes" en el historial de transacciones. Los pagos a la wallet Cash App funcionan según lo previsto. wallet custodiada por Block, Inc, anteriormente conocido como Square, Inc, que está dirigido por Jack Dorsey.
### Core Lightning / CLN (CLI Interface)
Funciona como es esperado. El comando `lightning-cli pay <invoice>` no concluye mientras el pago está pendiente, pero puedes usar `lightning-cli paystatus <invoice>` para monitorear el estado.
@ -85,10 +84,10 @@ Raw, muestra exactamente lo que está sucediendo y lo que sabe "IN_FLIGHT". No e
En general, la wallet [Mash](https://mash.com/consumer-experience/) funciona de extremo a extremo con Robosats tanto en la venta como en la compra a través de lightning. La mayoría de los detalles relevantes de la factura en la wallet mash se muestran y son claros para los usuarios durante todo el proceso. Cuando las transacciones se completan, se abren en la aplicación móvil tanto en el lado del remitente como en el del destinatario para resaltar que las transacciones se han completado. El equipo tiene un error abierto para solucionar este problema en breve (esta nota es del 21 de agosto de 2023).
### Muun (Móvil)
Muun funciona igual de bien con las facturas retenidas que Blixt o LND. Puedes ser vendedor en RoboSats usando Muun y la experiencia de usuario será excelente. Sin embargo, para ser un comprador, debes enviar una dirección onchain donde recibir el pago, una invoice lightning no funcionará. Muun está haciendo un _ataque de desvío de tarifas_ a cualquier remitente que pague a Muun. Hay un salto obligatorio a través de un canal privado con una tarifa de +1500ppm. RoboSats estrictamente no enrutará el pago de un comprador por una pérdida neta. Dado que las tarifas de intercambio en RoboSats son del 0,2% y debe cubrir las tarifas de enrutamiento, **RoboSats nunca encontrará una ruta adecuada para un usuario de Muun**. Por el momento, RoboSats escaneará la invoice en busca de sugerencias de enrutamiento que potencialmente puedan codificar en un _ataque de desvío de tarifas_. Si se da el caso, la invoice será rechazada: envíe una dirección onchain en su lugar para un hacer un swap. Consulta [Entender > Pagos en cadena](/docs/es/on-chain-payouts/) para obtener más información sobre los intercambios en cadena. Es importante tener en cuenta que Muun tiene problemas en épocas de picos altos de comisiones en cadena. En cualquier caso, la solución para recibir a Muun es: o bien enviar una dirección en cadena o elegir un presupuesto de enrutamiento más alto después de activar el interruptor de "Opciones avanzadas".
Muun funciona igual de bien con las facturas retenidas que Blixt o LND. Puedes ser vendedor en RoboSats usando Muun y la experiencia de usuario será excelente. Sin embargo, para ser un comprador, debes enviar una dirección onchain donde recibir el pago, una invoice lightning no funcionará. Muun está haciendo un _ataque de desvío de tarifas_ a cualquier remitente que pague a Muun. Hay un salto obligatorio a través de un canal privado con una tarifa de +1500ppm. RoboSats estrictamente no enrutará el pago de un comprador por una pérdida neta. Dado que las tarifas de intercambio en RoboSats son del 0,2% y debe cubrir las tarifas de enrutamiento, **RoboSats nunca encontrará una ruta adecuada para un usuario de Muun**. Por el momento, RoboSats escaneará la invoice en busca de sugerencias de enrutamiento que potencialmente puedan codificar en un _ataque de desvío de tarifas_. Si se da el caso, la invoice será rechazada: envíe una dirección onchain en su lugar para un hacer un swap. Consulta [Entender > Pagos on-chain](/docs/es/on-chain-payouts/) para obtener más información sobre los intercambios on-chain. Es importante tener en cuenta que Muun tiene problemas en épocas de picos altos de comisiones on-chain. En cualquier caso, la solución para recibir a Muun es: o bien enviar una dirección on-chain o elegir un presupuesto de enrutamiento más alto después de activar el interruptor de "Opciones avanzadas".
### OBW (Móvil)
Uno de los más simples y uno de los mejores. La factura hodl muestra como "sobre la marcha", no es de custodial y puede crear sus propios canales. Compra uno a un proveedor de liquidez o utilice Hosted Channels. Es mantenido por el gran Fiatjaf y es un fork del abandonado SBW.
Uno de los más simples y uno de los mejores. La factura retenida muestra como "sobre la marcha", no es de custodial y puede crear sus propios canales. Compra uno a un proveedor de liquidez o utilice Hosted Channels. Es mantenido por el gran Fiatjaf y es un fork del abandonado SBW.
*Actualización 26-10-23: En este momento no tiene desarrollo ni soporte.
### Phoenix (Móvil)
@ -100,18 +99,15 @@ Desde la version 2.5 no soporta lightning
### Zeus (Móvil, LND, CLN, Eclair remote backend)
Es una interfaz para LND, CLN y Eclair. Funciona como es esperado. Es extremadamente engañoso con una pantalla roja completa "TIME OUT" unos segundos después de enviar el HTLC. Sin embargo, si el usuario consulta en el sitio web, el invoice se bloquea correctamente.
### Bitcoin Beach (Móvil)
La factura retenida se muestra como un ícono gris mientras espera. Debes tocar el botón Atrás para volver a la pantalla principal mientras el pago está pendiente.
## <i class="fa-solid fa-code-pull-request"></i> Ayuda a mantener actualizada esta página
Hay muchas wallets y todas siguen mejorando a la velocidad de la luz. Puedes contribuir al proyecto de código abierto RoboSats probando wallets, editando [el contenido de esta página](https://github.com/Reckless-Satoshi/robosats/tree/main/docs/{{page.src}}) y abriendo un [Pull Request](https://github.com/Reckless-Satoshi/robosats/pulls)
## Información adicional
Recibir Sats a través de Lightning no es completamente privado. Consulta [Best Practices > Proxy Wallets](/docs/es/proxy-wallets/) para más información sobre cómo recibir Sats de forma privada.
Recibir Sats a través de Lightning no es completamente privado. Consulta [Mejores Practicas > Proxy Wallets](/docs/es/proxy-wallets/) para más información sobre cómo recibir Sats de forma privada.
Si tienes problemas para recibir fondos en tu wallet (debido a problemas de gestión del canal, problemas de enrutamiento, problemas de la wallet, etc.), una solución rápida para recibir un pago rápido sería tener un segunda wallet a mano que esté bien conectado y con suficiente capacidad de canal. Podrías recibir Sats en tu segunda wallet y, una vez resueltos los problemas, enviarlos a tu wallet principal.
¡No dudes en contactar con el grupo de chat público RoboSats [SimpleX](/contribute/code/#communication-channels) para pedir consejo o ayuda en el uso de los wallets!
{% include improve %}
{% include improve_es %}

View File

@ -22,4 +22,4 @@ Cuantos más Sats intentes enviar a través de LN, más difícil será encontrar
Para reducir los quebraderos de cabeza y agilizar la experiencia, se ha establecido un límite sensible a la realidad de la capacidad media de los canales de la Lightning Network. Por ejemplo, intentar recibir 10 millones de saturaciones puede no resultar rentable si la capacidad media de los canales de la red es [muy inferior a 10 millones de saturaciones](https://1ml.com/statistics).
{% include improve %}
{% include improve_es %}

View File

@ -10,7 +10,7 @@ src: "_pages/docs/es/03-understand/10-telegram.md"
<!-- Cover: telegram notification bot: how to enable (on phone and desktop). What are the privacy trade offs. Alert bot (Jacky). Telegram public support group, different language group. Warning: never reply to privates. Never share your robot token -->
{% include wip %}
{% include wip_es %}
**Robots Alert bot 🔔**

View File

@ -1,7 +1,7 @@
---
layout: default
title: RoboSats API v0.1
permalink: /docs/es/api-v0.1/
permalink: /docs/es/api/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/cloud.svg"/>API'
nav: docs

View File

@ -8,6 +8,89 @@ sidebar:
src: "_pages/docs/es/03-understand/12-prices.md"
---
<!-- Cover: relative and explicit pricing. External APIs, and median price computation. When and how price is set and how trade_amount sats is converted into payout_amount and escrow_amount applying the fee factors -->
El precio es la tarifa fiat a la que el bitcoin se negoció por última vez en un exchange. En otras palabras, indica el precio de intercambio que un comprador y un vendedor estarían dispuestos a aceptar para una operación posterior entre bitcoin y fiat.
{% include wip %}
Al hacer una orden, hay dos métodos diferentes de fijación de precios disponibles:
* **Método de fijación de precios relativo**: deja que el precio de la orden se mueva con el mercado a lo largo del tiempo (dinámico).
* **Método de fijación de precios explícito**: establece el precio de la orden utilizando una cantidad fija de satoshis (estático).
Cuando navegue por el libro de órdenes, el precio bitcoin-fiat de las órdenes en vivo que vea se ajustará automáticamente para incluir la prima correspondiente a la orden. Consulte [Entender > Prima](/docs/es/premium/) para obtener información adicional sobre las primas.
¡Si una moneda fiduciaria no está disponible en RoboSats, entonces se puede añadir fácilmente una nueva moneda mediante la apertura de una solicitud de extracción en [GitHub](https://github.com/RoboSats/robosats)!
***El método de precios explícitos se ha eliminado como opción por razones técnicas, pero podría volver en futuras actualizaciones. Actualmente, el precio de las órdenes sólo es relativo a la tarifa de mercado.
## Precios en la práctica
Si el precio de la orden es *relativo*, entonces la cantidad de satoshis que se negocian en relación con el tipo de cambio fiat (llamaremos `trade_sats`) se "bloquea" una vez que el tomador de la orden bloquea su bono. Hasta que se bloquea el bono del tomador, el precio de la orden sigue moviéndose con el mercado a lo largo del tiempo.
Una vez que el bono del tomador se bloquea para una orden de precio relativo, la cantidad de satoshis que se negocian se calcula de la siguiente manera:
````
tarifa_prima = tarifa_CEX * (1 + (prima / 100))
trade_sats = importe / tarifa_prima
````
donde `trade_sats` son los satoshis que se van a negociar, `prima` es lo que el creador de la orden definió durante la creación de la orden, y `tarifa_CEX` es el precio de cambio actual del bitcoin dada la divisa que se está utilizando.
Las comisiones de la plataforma (`fee_sats`) asociadas a tu orden se calculan usando la variable `trade_sats`:
* Para maker:
````
fee_fraction = 0.002 * 0.125
= 0.00025 ==> {{site.robosats.maker_fee}}%%.
fee_sats = trade_sats * fee_fraction
````
* Para el tomador:
````
fee_fraction = 0.002 * (1 - 0.125)
= 0.00175 ==> {{site.robosats.taker_fee}}%
fee_sats = trade_sats * fee_fraction
````
donde `fracción_de_tarifa` se combina para una tarifa total compartida de la plataforma de {{site.robosats.total_fee}}%; que se desglosa en {{site.robosats.maker_fee}}% y {{site.robosats.taker_fee}}% para maker y taker, respectivamente. Consulte [Entender > Tarifas](https://learn.robosats.com/docs/fees/) para obtener información adicional sobre las tarifas.
RoboSats cobra las tarifas en el proceso de depósito en garantía (`escrow_amount`) y la factura de pago (`payout_amount`) calculando lo siguiente:
* Para el vendedor:
````
escrow_amount = trade_sats + fee_sats
````
* Para el comprador
````
payout_amount = trade_sats - fee_sats
````
En esencia, RoboSats añade a la `escrow_amount`, deduce de la `payout_amount`, y, dependiendo de si usted es el tomador de la orden o el ordenante, aplica los cálculos apropiados `fee_fraction`.
Si el precio de la orden es *explícito*, entonces la cantidad de satoshis que se negocia es fija, independientemente del tipo de cambio fiat actual (`CEX_rate`). Una vez creada la orden, los satoshis están bloqueados desde el principio; sin embargo, la prima asociada se moverá con el mercado a lo largo del tiempo en lugar del precio.
## **Cómo determinan los exchange centralizados el tipo de mercado bitcoin-fiat**
La tarifa de mercado global bitcoin-fiat se determina a través de un simple arbitraje bitcoin; esto hace que el precio fiat de bitcoin converja hacia los precios que se ven en los intercambios centralizados típicos.
Por ejemplo, si el exchange "A" cotiza el bitcoin a 10.000 $ y el exchange "B" a 10.100 $ (100$ de diferencia), comprar bitcoin en el exchange "A" y venderlo inmediatamente en el exchange "B" le reportará un beneficio de 100 $ (sin tener en cuenta las comisiones de negociación).
Esta acción hará que suba el precio del bitcoin en el exchange "A" y que baje el precio del bitcoin en el exchange "B". Al final, el precio de ambos exchanges se aproxima y disminuyen las oportunidades de arbitraje rentable.
Los países que no permiten que grandes exchanges operen en su jurisdicción a menudo verán que el bitcoin se negocia a un precio más alto, o con una prima, debido a la dificultad para que los arbitrajistas intervengan y se beneficien de esa diferencia de precio.
## **¿De dónde obtiene RoboSats información sobre precios?**
El precio de intercambio de bitcoin en RoboSats está determinado por los tipos de cambio actuales de las API públicas, específicamente los precios de blockchain.info y yadio.io. Dada la moneda que estás utilizando, el precio medio de bitcoin-fiat se calcula a partir de los tipos de cambio actuales.
Los datos extraídos de blockchain.info y yadio.io son públicos y fácilmente verificables por cualquiera en cualquier momento.
No dude en sugerir otros proveedores de API. RoboSats calcula el precio medio bitcoin-fiat de todas las APIs referenciadas. Añadir más APIs conduciría a precios más robustos y precisos en la plataforma.
## **Cómo añadir divisas**
Todas las monedas disponibles en yadio.io y blockchain.info APIs deben estar disponibles en RoboSats también.
¿No ves una divisa con la que quieras operar? Es muy fácil para los colaboradores añadir una nueva moneda mediante la apertura de una solicitud de extracción en el [GitHub](https://github.com/RoboSats/robosats).
En primer lugar, compruebe el archivo actual [currencies.json](https://github.com/RoboSats/robosats/blob/main/frontend/static/assets/currencies.json) para verificar si la moneda que usted está buscando es, en efecto, falta en RoboSats.
Si encuentras una moneda que falta en RoboSats y también está disponible en cualquiera de las dos APIs referenciadas, entonces puedes editar directamente los archivos currencies.json y [FlagsWithProps.tsx](https://github.com/RoboSats/robosats/blob/main/frontend/src/components/FlagWithProps/FlagWithProps.tsx).
Después de fusionar el pull request, la moneda añadida estará disponible en RoboSats.
{% include wip_es %}

View File

@ -17,7 +17,7 @@ Las comisiones de la plataforma se resumen en la siguiente tabla para enfatizar
| Comprador | {{site.robosats.maker_fee}}% | {{site.robosats.taker_fee}}% |
| Vendedor | {{site.robosats.maker_fee}}% | {{site.robosats.taker_fee}}% |
*Nota: Se puede incurrir en tasas externas, como las tasas de enrutamiento de Lightning Network y las tasas de transacción en la cadena.
*Nota: Se puede incurrir en tarifas externas, como las tarifas de enrutamiento de Lightning Network y las tarifas de transacción en la cadena.
## **Costes de plataforma en la práctica**
@ -30,8 +30,8 @@ Si el precio de la orden es *relativo*, entonces la cantidad de Sats que se nego
Hasta que se bloquea el bono del tomador, el precio de la orden continúa moviéndose con el mercado a lo largo del tiempo. Una vez que el bono taker está bloqueado para una orden con precio relativo, la cantidad de Sats que se negocia se calcula de la siguiente manera:
````
tasa_prima = tasa_CEX * (1 + (prima / 100))
trade_sats = cantidad / tasa_prima
tarifa_prima = tarifa_CEX * (1 + (prima / 100))
trade_sats = cantidad / tarifa_prima
````
donde `trade_sats` son los Sats que se van a negociar, `premium` es lo que el creador de la orden definió durante la creación de la orden, y `CEX_rate` es el precio actual de cambio de bitcoin dada la moneda que se está utilizando.
@ -68,7 +68,7 @@ En esencia, RoboSats añade a la `escrow_amount`, deduce de la `payout_amount`,
Las cuotas sirven para mejorar la experiencia del usuario final de la plataforma a través del desarrollo continuo, ofreciendo soporte multilingüe y elaborando guías para interactuar con la plataforma.
A su vez, las tarifas recompensan a los desarrolladores y colaboradores voluntarios de GitHub por completar tareas que son [elegibles para ganar bitcoin](https://github.com/users/Reckless-Satoshi/projects/2). ¡Compruébalo! Si ganas Sats por tus contribuciones, las tasas en las que incurras al utilizar RoboSats estarán suficientemente cubiertas.
A su vez, las tarifas recompensan a los desarrolladores y colaboradores voluntarios de GitHub por completar tareas que son [elegibles para ganar bitcoin](https://github.com/users/Reckless-Satoshi/projects/2). ¡Compruébalo! Si ganas Sats por tus contribuciones, las tarifas en las que incurras al utilizar RoboSats estarán suficientemente cubiertas.
Implementar tarifas también ayuda a mitigar la oportunidad de ataques de denegación de servicio por parte de bots maliciosos que congestionan el coordinador RoboSats.
@ -76,18 +76,18 @@ Implementar tarifas también ayuda a mitigar la oportunidad de ataques de denega
Se puede incurrir en comisiones externas de la plataforma cuando se realizan pagos en la cadena (swaps en la cadena) y cuando se enrutan pagos a través de la Red Lightning.
Al elegir recibir bitcoin en la cadena, se muestra un resumen de la tasa de minería (`fee_mining`) y la tasa de intercambio (`fee_swap`). El `payout_amount` para recibir on-chain se calcula de la siguiente manera:
Al elegir recibir bitcoin en la cadena, se muestra un resumen de la tarifa de minería (`fee_mining`) y la tarifa de intercambio (`fee_swap`). El `payout_amount` para recibir on-chain se calcula de la siguiente manera:
````
payout_amount = trade_sats - fee_sats - fee_mining - fee_swap
````
La tasa de intercambio es una tasa adicional que RoboSats cobra por hacer el pago en la cadena y la tasa de minería es la tasa de la tasa en la cadena en sats/vbyte que se puede personalizar para adaptarse a sus necesidades. Consulte [Entender > Pagos en cadena](/docs/es/on-chain-payouts/) para obtener información adicional sobre los pagos en cadena.
La tarifa de intercambio es una tarifa adicional que RoboSats cobra por hacer el pago on-chain y la tarifa de minería es la tarifa de la tarifa en la cadena en sats/vbyte que se puede personalizar para adaptarse a sus necesidades. Consulte [Entender > Pagos on-chain](/docs/es/on-chain-payouts/) para obtener información adicional sobre los pagos on-chain.
RoboSats aprovecha la velocidad y la seguridad de la Red Lightning, por lo tanto los pagos enviados a través de la Red Lightning pueden incurrir en gastos dependiendo de la "ruta" necesaria que el pago debe tomar.
Los usuarios pueden recibir pagos de forma privada a través de [lnproxy](https://lnproxy.org/), una sencilla herramienta de privacidad de la Red Lightning, pero su presupuesto de enrutamiento puede aumentar para cubrir las tarifas adicionales en las que incurre el servidor lnproxy. Consulte [Best Practices > Proxy Wallets](/docs/es/proxy-wallets/) para obtener más información sobre la recepción privada.
Los usuarios pueden recibir pagos de forma privada a través de [lnproxy](https://lnproxy.org/), una sencilla herramienta de privacidad de la Red Lightning, pero su presupuesto de enrutamiento puede aumentar para cubrir las tarifas adicionales en las que incurre el servidor lnproxy. Consulte [Mejores Practicas > Proxy Wallets](/docs/es/proxy-wallets/) para obtener más información sobre la recepción privada.
El usuario tiene la opción de especificar el presupuesto de enrutamiento de Lightning Network, que puede ayudar a reducir los fallos de enrutamiento. Consulta [Quick Start > Lightning Network](/docs/es/lightning/) para obtener más información sobre los fallos de enrutamiento.
El usuario tiene la opción de especificar el presupuesto de enrutamiento de Lightning Network, que puede ayudar a reducir los fallos de enrutamiento. Consulta [Acceso Rápido > Lightning Network](/docs/es/lightning/) para obtener más información sobre los fallos de enrutamiento.
{% include improve %}
{% include improve_es %}

View File

@ -45,4 +45,4 @@ El cuadro de diálogo de resumen de intercambio muestra el valor actual de las c
<img src="/assets/images/understand/14-on-chain-payouts/exchange-summary.png"/>
</div>
% include improve %}
% include improve_es %}

View File

@ -0,0 +1,23 @@
---
layout: single
title: "Contribuye"
permalink: /contribute/es/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/handshake-angle.svg"/>Contribuye'
nav: contribute
src: "_pages/docs/es/contribute/00-contribute.md"
---
Robosats es un proyecto totalmente de código abierto y, como tal, ¡un esfuerzo impulsado por la comunidad! Puedes ayudar a RoboSats a mejorar de muchas maneras diferentes (ni siquiera necesitas saber codificar). Ayuda traduciendo, creando guías, simplemente diciendo a otros que usen RoboSats, ¡y mucho más!
Échales un vistazo:
1. [Desarrollo](/contribute/es/code/)
2. [Traducciones](/contribute/es/languages/)
3. [Liquidez Lightning](/contribute/es/liquidity/)
4. [Guías y video tutoriales](/contribute/es/guides/)
5. [Arte](/contribute/es/art/)
6. [Comparte](/contribute/es/outreach/)
7. [Dona](/contribute/es/donate/)
{% include improve_es %}

View File

@ -0,0 +1,97 @@
---
layout: single
title: "Develop RoboSats"
permalink: /contribute/es/code/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/code.svg"/>Code'
nav: contribute
toc: true
toc_sticky: true
src: "_pages/es/contribute/01-development.md"
---
Todo el mundo puede contribuir al desarrollo del proyecto de código abierto RoboSats. Si estás buscando un lugar donde empezar a contribuir, entonces echa un vistazo a la lista de temas que comparten la etiqueta ["good first issue"](https://github.com/RoboSats/robosats/issues?q=is%3Aopen+is%3Aissue+label%3A "good+first+issue"); estos temas son buenos para los recién llegados.
Esta guía de contribución se basa en la [Guía de contribución de Bisq](https://github.com/bisq-network/bisq/blob/master/CONTRIBUTING.md). Seguir las mejores prácticas del software libre ayuda a que el desarrollo se mantenga organizado a medida que el proyecto crece con nuevas características y se optimiza continuamente. Los futuros colaboradores te agradecerán que sigas estas buenas prácticas y que tu trabajo sea más fácil de desarrollar.
## Canales de comunicación
*!!! Cuidado con los estafadores que se hacen pasar por administradores de RoboSats. Los administradores NUNCA te llamarán o enviarán mensajes privados.*
- **Simplex:** [Grupo principal RoboSats](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2F0YuTwO05YJWS8rkjn9eLJDjQhFKvIYd8d4xG8X1blIU%3D%40smp8.simplex.im%2FyEX_vdhWew_FkovCQC3mRYRWZB1j_cBq%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAnrf9Jw3Ajdp4EQw71kqA64VgsIIzw8YNn68WjF09jFY%253D%26srv%3Dbeccx4yfxxbvyhqypaavemqurytl6hozr47wfc7uuecacjqdvwpw2xid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22hWnMVPnJl-KT3-virDk0JA%3D%3D%22%7D). ¿Tienes preguntas o un problema? Encuentra apoyo comunitario en el chat público del grupo SimpleX. Si quieres pasar el rato con otros robots geniales y aprender más sobre RoboSats, entonces esas discusiones ocurren en los chats de grupo SimpleX, Nostr y Matrix.
- **Nostr:** [Grupo General RoboSats](https://snort.social/e/note1tfwvglg8xz8420pfgav0dc9mqekv02nkpck2axefklrema7lk6wszmwxdy). Pasa el rato con otros robots geniales y no dudes en hacer preguntas sobre RoboSats. Además, la cuenta [Nostr RoboSats](https://snort.social/p/npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82) (npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82) proporciona actualizaciones importantes del proyecto, consejos y trucos sobre el uso de RoboSats y otros comentarios centrados en la privacidad. Las preguntas y la participación son bienvenidas. Recuerda: los problemas que requieran la ayuda del personal de RoboSats deben dirigirse al chat principal del grupo SimpleX, donde las respuestas son más rápidas y el personal puede investigar más a fondo su problema.
- **Matrix:** [Grupo de Desarrollo RoboSats](https://matrix.to/#/#robosats:matrix.org). Principal grupo de chat de comunicación de desarrolladores donde tienen lugar discusiones abiertas y técnicas sobre el desarrollo. La discusión sobre los cambios en el código se realiza en GitHub issues y pull requests (PRs).
- **Twitter:** [RoboSats](https://twitter.com/RoboSats). Anuncia actualizaciones del proyecto, comparte consejos y trucos sobre el uso de RoboSats y debate otros temas relacionados con la privacidad. No dudes en hacer preguntas y compartir tu experiencia con RoboSats. El personaje "Robotoshi", un robot amante de la privacidad y a veces descarado, dirige el Twitter de RoboSats e intenta responder a todas las preguntas. Ten en cuenta que el chat público del grupo Simplex antes mencionado puede ser más eficaz para buscar ayuda técnica y que los usuarios que busquen ayuda en disputas serán dirigidos al chat SimpleX.
## Flujo de trabajo de los colaboradores
Todos los colaboradores de RoboSats envían cambios a través de pull requests. El flujo de trabajo es el siguiente:
- Fork el repositorio
- Crear una rama a partir de la rama `main`
- Haz commit de los cambios
- Elimina/Squash commits redundantes o innecesarios
- Envíe un pull request desde tu rama a la rama `main` del repositorio principal
- Realiza cambios en el pull request si los revisores lo solicitan y pide una nueva revisión
Los pull requests deben centrarse en un único cambio. No mezcle, por ejemplo, refactorizaciones con una corrección de errores o la implementación de una nueva característica. Esta práctica facilita a los colaboradores la revisión de cada pull request.
## Revisión de Pull Requests
Robosats sigue el flujo de revisión establecido por el proyecto Bitcoin Core. Lo siguiente es una adaptación de la [Bitcoin Core contributor documentation](https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md#peer-review):
Cualquiera puede participar en la revisión por pares que se expresa mediante comentarios en el pull request. Típicamente los revisores revisarán el código en busca de errores obvios, así como probar el parche y opinar sobre los méritos técnicos del parche. Los mantenedores del proyecto tienen en cuenta la revisión por pares a la hora de determinar si hay consenso para fusionar una pull request (recuerda que las discusiones pueden haberse repartido entre GitHub y Telegram). El siguiente lenguaje se utiliza en los comentarios de pull-request:
- `ACK` significa "He probado el código y estoy de acuerdo en que se fusione";
- `NACK` significa "No estoy de acuerdo en que esto se fusione", y debe ir acompañado de una justificación técnica sólida. Los NACK que no vayan acompañados de una justificación pueden no tenerse en cuenta;
- `utACK` significa "No he probado el código, pero lo he revisado y parece correcto, estoy de acuerdo en que se fusione";
- El `concepto ACK` significa "Estoy de acuerdo con el principio general de esta solicitud de extracción";
- `Nit` se refiere a problemas triviales, a menudo no bloqueantes.
Tenga en cuenta que los Pull Requests marcados con `NACK` y/o `Change requested` de GitHub se cierran a los 30 días si no se atienden.
## Compensación para desarrolladores (Programa piloto)
[Consulta el estado actual de las tareas compensadas para desarrolladores en el proyecto de Github](https://github.com/users/Reckless-Satoshi/projects/2/views/5)
Por el momento, RoboSats es un proyecto joven y sin financiación, pero ha demostrado la capacidad de generar ingresos suficientes para cubrir a duras penas los costes operativos. Un programa de compensación a los desarrolladores es la mejor manera de garantizar el apoyo sostenido de la base de código. Por el momento, las contribuciones de código al núcleo del proyecto recibirán pequeñas recompensas más parecidas a una propina que a una compensación monetaria significativa. El procedimiento piloto para el desarrollo compensado:
1. El desarrollador abre un PR con la descripción del trabajo que va a realizar, incluyendo opcionalmente la cantidad de Sats que cree que merece el trabajo.
2. Se produce una oferta/negociación para fijar una cantidad de Sats hasta llegar a un acuerdo. Todo el mundo es bienvenido a expresar su opinión sobre si la compensación es adecuada para el RP.
3. El trabajo se lleva a cabo: ¡construir, construir, construir!
4. La revisión tiene lugar. Una vez que los mantenedores dan el visto bueno a la fusión...
5. El desarrollador presenta una factura LN (con un largo plazo de vencimiento). La factura se paga en el momento de la fusión.
Cada paso (negociación, envío de código, revisión y envío de factura) debe realizarse públicamente en GitHub (es decir, nada de mensajes privados ni similares). Póngase en contacto con el jefe del equipo de desarrollo (@reckless-satoshi) por adelantado si tiene dudas sobre si su contribución es adecuada para recibir una compensación. Actualmente, sólo las contribuciones a la funcionalidad y mantenimiento del frontend o backend son elegibles para compensaciones (por el momento, esto excluye: arte, traducciones, etc.).
## Convenciones de estilo y codificación
### Configurar nombre de usuario Git y metadatos de correo electrónico
Ver https://help.github.com/articles/setting-your-username-in-git/ para instrucciones.
### Escribir mensajes de commits bien formados
De https://chris.beams.io/posts/git-commit/#seven-rules:
1. Separa el asunto del cuerpo con una línea en blanco
2. Limite la línea de asunto a 50 caracteres (*)
3. Escriba el asunto en mayúsculas
4. No termine el asunto con un punto
5. Utilice el modo imperativo en el asunto
6. Envuelva el cuerpo a 72 caracteres (*)
7. Utilice el cuerpo para explicar qué y por qué en lugar de cómo.
### Firma tus commits con GPG
Ver https://github.com/blog/2144-gpg-signature-verification para más información y
https://help.github.com/articles/signing-commits-with-gpg/ para instrucciones.
### Use un editor que soporte Editorconfig
La configuración [.editorconfig](.editorconfig) de este repositorio asegura una gestión consistente de los espacios en blanco. La mayoría de los editores modernos lo soportan de forma nativa o con un plugin. Vea http://editorconfig.org para más detalles.
### Mantener limpio el historial de git
Es muy importante mantener el historial git claro, ligero y fácilmente navegable. Esto significa que los contribuidores deben asegurarse de que sus pull requests incluyen sólo commits significativos (si son redundantes o fueron añadidas después de una revisión, deben ser eliminadas) y _no merge commits_.

View File

@ -0,0 +1,52 @@
---
layout: single
title: "Traduce RoboSats"
permalink: /contribute/es/languages/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/language.svg"/>Traducción'
nav: contribute
toc: true
toc_sticky: true
src: "_pages/es/contribute/02-languages.md"
---
RoboSats es una forma de cambiar bitcoin por **cualquier moneda del mundo**. Por ello, muchos usuarios sólo encontrarán útil esta herramienta si está disponible en un idioma que entiendan. Traducir RoboSats a un nuevo idioma es una de las contribuciones más valiosas al proyecto. Pone la plataforma a disposición de nuevos públicos, aumenta el alcance de esta genial herramienta de libertad y, en consecuencia, incrementa la liquidez de la cartera de pedidos para que aún más usuarios apilen Sats en privado.
No hay mucho texto en RoboSats; sin embargo, podría ser mejor dividir el trabajo con otro contribuyente. Puedes ponerte en contacto con las [comunidades RoboSats](https://learn.robosats.com/contribute/es/code/#canales-de-comunicación) y encontrar usuarios dispuestos a dividir la tarea.
## Cómo contribuir con una nueva traducción
Simplemente crea un nuevo archivo de traducción en `frontend/static/locales` [enlace a GitHub](https://github.com/RoboSats/robosats/tree/main/frontend/static/locales). En `locales` hay un único archivo con un diccionario json para cada idioma. Para crear una nueva traducción, simplemente copia `es.json` (el texto maestro) en un nuevo archivo con el nombre del idioma [código ISO 639 de dos caracteres](https://www.loc.gov/standards/iso639-2/php/English_list.php).
## Directrices
El diccionario `.json` de cada idioma contiene pares de claves y valores con el siguiente formato {"clave1": "valor1", "clave2": "valor2", ...}. La mayoría de las claves son frases literales en inglés. Simplemente hay que traducirlas a la derecha, por ejemplo, para traducir el botón `Make Order` al español, se editaría el fichero json para que tuviera este aspecto `{... "Make Order": "Crear Orden",...}`.
### 1. **No todas las teclas son frases explícitas.**
Algunas claves no son la sentencia en inglés, sino un nombre de variable. Por ejemplo, "phone_unsafe_alert". En este caso, debes echar un vistazo al valor originalmente en `en.json`.
### 2. **El diccionario de idioma está dividido en 9 secciones.**
La primera clave de cada sección es una referencia y no es necesario traducirla. Por ejemplo, la segunda sección comienza con la clave:valor `"USER GENERATION PAGE - UserGenPage.js": "Landing Page and User Generation"`. No es necesario traducirlo; es sólo información para que el traductor entienda en qué parte de la aplicación va a trabajar.
### 3. **Intenta mantener una longitud similar a la de la frase original.**
En la mayoría de los casos no pasa nada si la traducción es más corta. Sin embargo, las traducciones con un mayor número de caracteres pueden romper la interfaz de usuario. No siempre es posible ceñirse a la longitud de la frase en inglés. En esos casos, es posible que haya que modificar la interfaz de usuario. Póngase en contacto con la persona responsable de dicho cambio.
### 4. **Algunas frases contienen variables.**
Por ejemplo, {{currencyCode}}. Insertará el código de moneda donde se encuentre la variable. Por ejemplo, `"Paga 30 {{currencyCode}}"` se renderizará como "Paga 30 USD".
### 5. **Algunas frases contienen etiquetas HTML.**
Estas etiquetas suelen ser hipervínculos. Por ejemplo, en `{"phone_unsafe_alert": "Use <1>Tor Browser</1> y visite el sitio <3>Onion</3>."}` el texto hijo de <1> (Tor Browser) enlazará con el sitio web Tor Download, y los hijos de <3> enlazarán con el sitio RoboSats Onion.
### 6. **Es mejor traducir de arriba a abajo del archivo .json**.
Algunos textos son de alta prioridad, otros de baja prioridad. Es probable que algunas claves cambien pronto o que no sean tan relevantes para el usuario de la aplicación. Los archivos de traducción se ordenan de arriba a abajo por la prioridad de la traducción.
### 7. **Usa un corrector ortográfico.**
Sí, por favor! 😉
### 8. **Entiende el contexto; ¿dónde se mostrará esta cadena?**
Las traducciones literales pueden no funcionar bien en algunos idiomas. Mientras que en inglés la redacción es siempre similar independientemente de la posición en la interfaz de usuario, en algunos idiomas puede ser muy diferente si estás traduciendo un botón (el usuario está realizando una acción) o si simplemente estás traduciendo un tooltip. Podría ser inteligente traducir las cadenas mientras se mira la aplicación. Sin embargo, muchas cadenas sólo pueden encontrarse mientras se opera. El sitio testnet RoboSats es genial para este uso. Puedes explorar toda la app simplemente interactuando con ella usando una wallet testnet Lightning. Sin embargo, si no puedes encontrar dónde se muestra una cadena, puede ser más rápido simplemente escribir un mensaje en el [grupo SimpleX](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2F0YuTwO05YJWS8rkjn9eLJDjQhFKvIYd8d4xG8X1blIU%3D%40smp8.simplex.im%2FyEX_vdhWew_FkovCQC3mRYRWZB1j_cBq%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAnrf9Jw3Ajdp4EQw71kqA64VgsIIzw8YNn68WjF09jFY%253D%26srv%3Dbeccx4yfxxbvyhqypaavemqurytl6hozr47wfc7uuecacjqdvwpw2xid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22hWnMVPnJl-KT3-virDk0JA%3D%3D%22%7D).
### 9. **¡Felicítate a ti mismo!**
En serio. ¡Es tan impresionante que estés ayudando a construir herramientas de libertad!
{% include improve_es %}

View File

@ -0,0 +1,34 @@
---
layout: single
title: "Abre un canal"
permalink: /contribute/es/liquidity/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/circle-nodes.svg"/>LN liquidity'
nav: contribute
toc: true
toc_sticky: true
src: "_pages/docs/es/contribute/03-liquidity.md"
---
Una forma de contribuir a RoboSats es abrir un canal al [nodo coordinador experimental de RoboSats](https://amboss.space/node/0282eb467bc073833a039940392592bf10cf338a830ba4e392c1667d7697654c7e) y proporcionar al nodo liquidez de salida. Basta con utilizar la plataforma para vender bitcoin y empujar la liquidez hacia el extremo de RoboSats.
## RoboSats no es un nodo de enrutamiento
RoboSats no es un nodo de enrutamiento típico de la Lightning Network. Un nodo destinado a enrutar pagos quiere canales equilibrados para maximizar las posibilidades de éxito en el reenvío de pagos. El nodo coordinador experimental RoboSats quiere maximizar:
1. La cantidad de HTLCs concurrentes pendientes sin fallo (bono/escrow).
2. La fiabilidad de los pagos entrantes que se abonan a los usuarios, independientemente del canal.
Dicho esto, no importa si toda la liquidez saliente del nodo coordinador experimental RoboSats se concentra en dos canales, siempre y cuando, cuando sea necesario pagar a un comprador, los nodos conectados encaminen eficazmente el pago. La concentración de liquidez en unos pocos canales sólo es un problema para los nodos mal conectados.
## Vendedores de Bitcoin que abren canales
Como ejemplo, un vendedor crea un nuevo nodo y su único canal es con el nodo coordinador experimental RoboSats. Empujan liquidez al extremo de RoboSats y, en consecuencia, el nodo coordinador experimental RoboSats no puede usar ese mismo canal para entregar los Sats al comprador. El canal se considera liquidez "sin salida".
Por este motivo, la apertura de un canal al nodo coordinador experimental RoboSats sólo es útil para el proveedor de liquidez (vendedor), ya que no incurre en gastos de enrutamiento y tiene una mayor fiabilidad de enrutamiento. Cuando un canal está completamente saturado (y el vendedor ya no puede empujar liquidez), entonces se cierra y los Sats se utilizan para abrir canales de salida a un peer fiable.
## Compradores de Bitcoin Abriendo Canales
Como comprador, abrir canales es menos útil. Hacerlo sólo mejoraría la fiabilidad. Tenga en cuenta que al abrir un canal directo con el nodo coordinador experimental RoboSats, ¡toda la liquidez estará de su lado! Por lo tanto, ese canal no sería útil para recibir un pago de inmediato.
{% include improve_es %}

View File

@ -0,0 +1,29 @@
---
layout: single
title: "Guías"
permalink: /contribute/es/guides/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/graduation-cap.svg"/>Guías'
nav: contribute
toc: true
toc_sticky: true
src: "_pages/docs/es/contribute/04-guides.md"
---
Aunque RoboSats se esfuerza por ser una experiencia de compra/venta fluida e intuitiva, ¡muchos usuarios siguen prefiriendo confiar en guías y tutoriales para aplicaciones que nunca han utilizado antes! Ayúdanos escribiendo tu propia guía detallando tu experiencia con RoboSats.
Las guías, los tutoriales, las demostraciones, etc. son complementos muy valiosos para el sitio web de RoboSats. Hay tantas características interesantes de RoboSats que puede haber guías genéricas (cómo comprar, vender, intercambiar, etc.) y también muchas guías específicas (cómo utilizar métodos específicos de intercambio, recepción en cadena, recepción en factura envuelta, etc.).
## Cosas a tener en cuenta
Para proporcionar a sus lectores/espectadores la información más precisa sobre la plataforma, considere consultar brevemente la documentación de RoboSats aquí en [learn.robosats.com](https://learn.robosats.com/es/). Allí encontrarás muchas características y aspectos de RoboSats con todo detalle, así como algunos [tutoriales creados anteriormente](https://learn.robosats.com/watch/es/) que pueden servirte de referencia para tu tutorial.
Si usted tiene preguntas persistentes que no se responden en la documentación, entonces por favor no dude en llegar y preguntar en el [grupo de apoyo público SimpleX](https://learn.robosats.com/contribute/code/#communication-channels).
Si estás tratando de hacer una demostración en vivo de RoboSats para una reunión o conferencia, ¡hay compañeros robots dispuestos en los grupos de Telegram antes mencionados que estarían encantados de echar una mano robótica! No hay nada mejor (y más útil) para los novatos que ver RoboSats en vivo y en acción.
## Cómo añadir tu guía aquí
Una vez que hayas creado una guía, ¡puedes solicitar que se añada al sitio de documentación de RoboSats! ¡Basta con crear una solicitud de extracción en el GitHub!
{% include improve_es %}

View File

@ -0,0 +1,21 @@
---
layout: single
title: "Arte & Memes"
permalink: /contribute/es/art/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/palette.svg"/>Arte'
nav: contribute
toc: true
toc_sticky: true
src: "_pages/docs/es/contribute/05-art.md"
---
¿Tienes talento artístico? Considera la posibilidad de dibujar fan arts y promocionar RoboSats a través de dulces imágenes. Una imagen vale más que mil palabras, y además genera más participación que los artículos largos. No buscamos a Vincent van Gogh ni a Pablo Picasso, sino a personas con ganas de dibujar y de compartir la buena noticia de la compra/venta entre iguales.
## Ideas
Aquí no hay límites. Si quieres hacer una lluvia de ideas, no dudes en enviar un mensaje a los [grupos públicos de apoyo SimpleX](https://learn.robosats.com/contribute/es/code/#canales-de-comunicación). ¡El coordinador de arte RoboSats es [@Red_Purdy](https://twitter.com/Red_Purdy) y puede ayudar a proporcionar ideas!
Un ejemplo del uso del arte para crear compromiso con la comunidad incluye [Telegram stickers](https://t.me/addstickers/Robosats1). Las pegatinas enlazadas muestran a la casi mascota Robotoshi.
{% include improve_es %}

View File

@ -0,0 +1,25 @@
---
layout: single
title: "Comparte"
permalink: /contribute/es/outreach/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/bullhorn.svg"/>Comparte'
nav: contribute
toc: true
toc_sticky: true
src: "_pages/docs/es/contribute/06-outreach.md"
---
La mejor forma de apoyar a RoboSats es utilizarlo y recomendar a los demás que lo prueben. Sin pares que aporten liquidez a los libros de órdenes, las bolsas peer-to-peer como la nuestra dejarían de existir. Cuando los usuarios utilizan RoboSats e invitan a otros a probarlo, la liquidez aumenta y la plataforma puede admitir aún más usuarios.
Lo mejor que podemos hacer es razonar con los usuarios por qué deben valorar su privacidad y evitar las bolsas contrarias a la privacidad. Consulte este [artículo](https://bitcoinmagazine.com/culture/the-value-of-p2p-bitcoin-exchanges), escrito por un colaborador de RoboSats, en el que se explican algunas de las razones por las que los usuarios deberían plantearse proteger su privacidad y utilizar intercambios P2P como RoboSats.
## Redes sociales
Las redes sociales son una gran oportunidad para la publicidad boca a boca de RoboSats. Si has tenido una buena experiencia con RoboSats o tienes algo interesante que decir sobre el proyecto, ¡hazlo saber! Grítalo desde el cielo de los robots.
Por ejemplo, puedes publicarlo en Nostr y etiquetar la cuenta de Nostr de RoboSats (npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqk3m82) para que pueda compartirse con los demás. O, si estás en Twitter, crea un tweet y etiqueta la cuenta [RoboSats Twitter](https://twitter.com/RoboSats).
¡Cualquier ayuda será muy apreciada en este sector! Más liquidez en el libro de órdenes atrae a más usuarios y, por lo tanto, ¡más usuarios pueden aprovechar las ventajas de comprar y vender bitcoin de forma privada!
{% include improve_es %}

View File

@ -0,0 +1,54 @@
---
layout: single
classes: wide
title: "Dona al equipo del proyecto RoboSats"
permalink: /contribute/es/donate/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/bitcoin.svg"/>Dona'
nav: contribute
src: "_pages/docs/es/contribute/07-donate.md"
---
No creemos que el desarrollo de RoboSats deba depender de las donaciones para mantenerse con vida. El objetivo del proyecto es generar ingresos suficientes para cubrir los costes de desarrollo, servidor, liquidez y promoción. La **mejor manera de donar a RoboSats es utilizar activamente la herramienta** y contárselo a tus amigos.
Sin embargo, algunos bitcoiners muy entusiastas se ponen en contacto con nosotros para impulsar el desarrollo y la longevidad de RoboSats. Apreciamos mucho estas donaciones, sobre todo porque la plataforma es todavía muy joven y sigue funcionando con pérdidas netas.
Puedes donar de las siguientes maneras:
- **Envíanos un zapp en Nostr:**
Todos los zaps de Nostr se destinarán al equipo de medios sociales.
Aquí está la cuenta de nPub para RoboSats :
```
npub1p2psats79rypr8lpnl9t5qdekfp700x660qsgw284xvq4s09lqrqqk3m82
```
- **Sugiere directamente a los desarrolladores que estén trabajando en las funciones que te gusten.** Consulta los [PR activos](https://github.com/RoboSats/robosats/pulls) y muestra tu apoyo a los desarrolladores a través de las sugerencias Lightning. Simplemente escribe un mensaje, por ejemplo "@nombre_del_desarrollador, me gustaría financiar el desarrollo de esta función con 6000 Sats". El desarrollador debería responder con una factura LN con un largo tiempo de expiración.
- **Haz una donación a los devs de RoboSats via Paynym (BIP47): [{{site.robosats.paynym}}](https://paynym.is/{{site.robosats.paynym}})** código paynym:
<div align="center">
<img style="border-radius: 50%; border: 4px solid #555;filter: drop-shadow(1px 1px 1px #000000);width:200px;height:200px" src="https://pbs.twimg.com/profile_images/1524391291475406850/ULKOymid_400x400.jpg"/><br/>
<b>⚡RoboSats⚡</b>
</div>
```
{{site.robosats.paynym_code}}
```
- **Tip the lead developer via Paynym (BIP47): [{{site.robosats.leaddev_paynym}}](https://paynym.is/{{site.robosats.leaddev_paynym}})** código paynym:
<div align="center">
<img style="border-radius: 50%; border: 4px solid #555;filter: drop-shadow(1px 1px 1px #000000);width:200px;height:200px" src="https://pbs.twimg.com/profile_images/1501319536477282305/M7De9qEE_400x400.jpg"/><br/>
<b>⚡Reckless_Satoshi⚡</b>
</div>
```
{{site.robosats.leaddev_paynym_code}}
```
- **Tip the [experimental RoboSats coordinator](https://amboss.space/node/{{site.robosats.node_id}}) via KeySend:**
<div>
<lightning-widget name="Experimental Coordinator" accent="#9c27b0" to="{{site.robosats.node_id}}" image="https://pbs.twimg.com/profile_images/1524391291475406850/ULKOymid_400x400.jpg"/>
<script src="https://embed.twentyuno.net/js/app.js"></script>
</div>

View File

@ -0,0 +1,72 @@
---
layout: splash
permalink: /es/
styled_title: 'Aprende <svg style="width:52px;height:52px;vertical-align:middle;fill:currentColor;position:relative;top:-8px;filter:drop-shadow(1px 1px 2px rgb(0 0 0 / 0.4))" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 850 650" enable-background="new 0 0 850 650" xml:space="preserve">
<g>
<path d="M602.336,731.51c16.747-16.94,29.249-35.524,37.504-56.694c18.792-48.193,16.967-94.996-10.46-139.81
c-10.255-16.756-24.983-29.293-39.461-42.103c-67.731-59.932-135.412-119.919-203.104-179.895
c-0.368-0.326-0.644-0.755-1.331-1.579c18.529-12.477,36.983-24.903,55.872-37.62c-9.61-6.799-18.917-13.385-28.648-20.27
c11.763-14.483,23.273-28.656,34.738-42.773c13.313,7.081,24.784,5.523,32.075-4.132c6.395-8.467,5.794-20.59-1.412-28.52
c-7.011-7.713-19.494-9.295-28.343-3.592c-10.274,6.623-12.651,17.652-6.576,31.65c-22.681,16.451-45.436,32.955-68.921,49.989
c9.33,6.786,18.246,13.271,27.611,20.084c-9.232,8.573-18.09,16.797-27.064,25.131c-68.348-47.917-134.895-38.158-199.771,10.745
c0-100.562,0-201.3,0-302.535c1.811-0.082,3.562-0.23,5.313-0.23c97.991-0.011,195.983-0.214,293.973,0.094
c37.661,0.119,75.351,1.898,112.093,11.01c52.81,13.096,95.741,40.904,125.379,87.462c13.802,21.681,20.643,45.764,23.136,71.039
c3.595,36.436,1.313,72.517-8.858,107.873c-11.943,41.515-37.09,74.011-69.641,101.357c-16.133,13.552-33.803,24.811-52.581,34.343
c-1.3,0.659-2.533,1.445-4.148,2.375c80.735,102.152,161.255,204.034,242.318,306.6C761.843,731.51,682.637,731.51,602.336,731.51z
"/>
<path d="M282.877,389.186c25.706-0.109,46.42,20.376,46.55,46.038c0.131,25.994-20.404,46.852-46.238,46.96
c-25.588,0.108-46.928-21.172-46.758-46.627C236.602,409.95,257.291,389.295,282.877,389.186z"/>
<path d="M445.93,607.736c0.705-26.031,21.515-46.381,46.915-45.881c26.295,0.52,46.657,21.756,45.918,47.887
c-0.721,25.455-21.862,45.67-47.178,45.104C465.779,654.273,445.244,633.082,445.93,607.736z"/>
<path d="M175.223,550.758c23.365,20.689,46.15,40.865,69.337,61.396c-4.974,5.619-9.792,11.063-14.91,16.846
c-5.634-4.988-11.167-9.738-16.519-14.684c-3.131-2.896-5.343-2.492-8.415,0.467c-9.944,9.58-20.234,18.801-29.493,27.332
C175.223,613.414,175.223,582.512,175.223,550.758z"/>
<path d="M379.124,731.533c-30.045,0-59.057,0-89.151,0c8.955-9.23,17.236-17.769,25.724-26.519
c-6.368-5.709-12.409-11.127-18.739-16.803c4.904-5.559,9.594-10.877,14.65-16.608C334.013,691.492,356.2,711.186,379.124,731.533z
"/>
</g>
</svg>obosats'
header:
overlay_color: "#5e616c"
overlay_image: /assets/images/misc/learn-robosats-home.png
cta_label: '<svg style="width:30px;height:26px;vertical-align:middle;fill:currentColor;filter:drop-shadow(1px 1px 2px rgb(0 0 0 / 0.4))" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="M188.3 147.1C195.8 142.8 205.1 142.1 212.5 147.5L356.5 235.5C363.6 239.9 368 247.6 368 256C368 264.4 363.6 272.1 356.5 276.5L212.5 364.5C205.1 369 195.8 369.2 188.3 364.9C180.7 360.7 176 352.7 176 344V167.1C176 159.3 180.7 151.3 188.3 147.1V147.1zM512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256zM256 48C141.1 48 48 141.1 48 256C48 370.9 141.1 464 256 464C370.9 464 464 370.9 464 256C464 141.1 370.9 48 256 48z"/></svg> Aprende a usarlo ahora'
cta_url: "/watch/es/"
caption:
excerpt: 'Una forma sencilla y privada de cambiar bitcoin por monedas nacionales.<br /> <svg style="width:26px;height:26px;vertical-align:middle;fill:currentColor;filter:drop-shadow(1px 1px 2px rgb(0 0 0 / 0.4))" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M240.5 224H352C365.3 224 377.3 232.3 381.1 244.7C386.6 257.2 383.1 271.3 373.1 280.1L117.1 504.1C105.8 513.9 89.27 514.7 77.19 505.9C65.1 497.1 60.7 481.1 66.59 467.4L143.5 288H31.1C18.67 288 6.733 279.7 2.044 267.3C-2.645 254.8 .8944 240.7 10.93 231.9L266.9 7.918C278.2-1.92 294.7-2.669 306.8 6.114C318.9 14.9 323.3 30.87 317.4 44.61L240.5 224z"/></svg><small> <a href="https://robosats.com">Usa RoboSats con el navegador Tor</a></small> <br/> <svg style="width:26px;height:26px;vertical-align:middle;fill:currentColor;filter:drop-shadow(1px 1px 2px rgb(0 0 0 / 0.4))" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc. --><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg><small> <a href="https://github.com/RoboSats/robosats">Página del proyecto en Github</a></small>'
feature_row:
- image_path: /assets/images/misc/feature-fast.png
alt: "fast"
title: "Lightning Fast"
excerpt: "Intercambiar P2P nunca ha sido tan rápido! <br/>Las facturas retenidas de Lightning sirven como fianzas para una alta seguridad y velocidad. ¡De principio a fin antes de que el siguiente bloque sea minado!"
url: "/docs/fast/"
btn_class: "btn--primary"
btn_label: "Aprender mas"
- image_path: /assets/images/misc/feature-private.png
alt: "private"
title: "Absolutamente Privado"
excerpt: "Las mejores prácticas de privacidad por defecto. Simple y libre de KYC. Generarás un avatar Robot aleatorio de un solo uso. El intercambio es sólo Tor.<br/>"
url: "/docs/private/"
btn_class: "btn--primary"
btn_label: "Aprender mas"
- image_path: /assets/images/misc/feature-open-source.png
alt: "FLOSS"
title: "Codigo abierto"
excerpt: 'RoboSats es totalmente de código abierto y siempre lo será. Construido por robots como tú.{::nomarkdown}<div style="content-align:center"><p style="margin-top: -5px;margin-bottom: 0px"><iframe style="display: inline-block;" src="https://ghbtns.com/github-btn.html?user=reckless-satoshi&repo=robosats&type=star&count=true&size=large" frameborder="0" scrolling="0" width="150px" height="30px"></iframe><iframe style="display: inline-block;" src="https://ghbtns.com/github-btn.html?user=reckless-satoshi&repo=robosats&type=fork&count=true&size=large" frameborder="0" scrolling="0" width="150px" height="30px"></iframe></p></div>{:/nomarkdown}'
url: "https://github.com/RoboSats/robosats/blob/main/LICENSE"
btn_class: "btn--primary"
btn_label: "Ver licencia"
---
{% include feature_row %}
#### Sponsors
<div style="display: flex; justify-content: center; align-items: center; align-content: center;">
<div style="margin: 10px;"><a href="https://www.hrf.org" title="Human Right Foundation"><img src="/assets/images/sponsors/hrf.png" width="300px"/></a></div>
</div>
#### Reviews
<div style="display: flex; justify-content: center; align-items: center; align-content: center;">
<div style="margin: 10px;"><a href="https://www.athena-alpha.com/robosats-review/" title="Athena Alpha - RoboSats Review"><img src="/assets/images/reviews/athena_alpha.webp" width="200px"></a></div>
<div style="margin: 10px;"><a href="https://kycnot.me/exchange/robosats" title="KYC Not Me - RoboSats Review"><img src="/assets/images/reviews/kycnotme.webp" width="200px"></a></div>
<div style="margin: 10px;"><a href="https://bitcoinmagazine.com/business/robosats-private-bitcoin-exchange" title="Bitcoin Magazine - RoboSats Review"><img src="/assets/images/reviews/bitcoin_magazine.webp" width="210px"></a></div>
<div style="margin: 10px;"><a href="https://h17n.com/exchange/robosats/" title="H17N Bitcoin - RoboSats Review"><img src="/assets/images/reviews/h17n_bitcoin.jpg" width="210px"></a></div>
</div>

View File

@ -0,0 +1,13 @@
---
layout: single
classes: wide
title: "RoboSats Estadisticas"
permalink: /stats/es/
sidebar:
title: '<img id="side-icon-verybig" src="/assets/vector/chart-column.svg"/> Estadisticas'
nav: docs
src: "_pages/docs/es/stats.md"
---
<div class="flourish-embed" data-src="story/1599170"><script src="https://public.flourish.studio/resources/embed.js"></script></div>
Maintained by [AntonopulosL](https://twitter.com/antonopulosl)

View File

@ -1,7 +1,7 @@
openapi: 3.0.3
info:
title: RoboSats REST API
version: 0.5.3
version: 0.5.4
x-logo:
url: https://raw.githubusercontent.com/Reckless-Satoshi/robosats/main/frontend/static/assets/images/robosats-0.1.1-banner.png
backgroundColor: '#FFFFFF'
@ -1006,6 +1006,19 @@ components:
type: string
network:
type: string
min_order_size:
type: integer
description: Minimum order size in Sats
max_order_size:
type: integer
description: Maximum order size in Sats
swap_enabled:
type: boolean
description: Whether the option for onchain swap payouts is available or
not
max_swap:
type: integer
description: Maximum size for onchain swap payouts in Sats
maker_fee:
type: number
format: double
@ -1041,6 +1054,9 @@ components:
- lifetime_volume
- lnd_version
- maker_fee
- max_order_size
- max_swap
- min_order_size
- network
- node_alias
- node_id
@ -1049,6 +1065,7 @@ components:
- num_public_buy_orders
- num_public_sell_orders
- robosats_running_commit_hash
- swap_enabled
- taker_fee
- version
ListOrder:

View File

@ -14,9 +14,9 @@
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@mui/base": "^5.0.0-beta.7",
"@mui/icons-material": "^5.15.3",
"@mui/icons-material": "^5.15.9",
"@mui/lab": "^5.0.0-alpha.136",
"@mui/material": "^5.15.3",
"@mui/material": "^5.15.9",
"@mui/system": "^5.15.3",
"@mui/x-data-grid": "^6.19.2",
"@mui/x-date-pickers": "^6.19.2",
@ -30,7 +30,7 @@
"i18next-browser-languagedetector": "^7.2.0",
"i18next-http-backend": "^2.4.2",
"install": "^0.13.0",
"js-sha256": "^0.10.1",
"js-sha256": "^0.11.0",
"leaflet": "^1.9.4",
"light-bolt11-decoder": "^3.0.0",
"npm": "^10.4.0",
@ -1880,9 +1880,9 @@
"dev": true
},
"node_modules/@babel/runtime": {
"version": "7.23.6",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz",
"integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==",
"version": "7.23.9",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz",
"integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
@ -2207,28 +2207,28 @@
}
},
"node_modules/@floating-ui/core": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz",
"integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==",
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz",
"integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==",
"dependencies": {
"@floating-ui/utils": "^0.1.3"
"@floating-ui/utils": "^0.2.1"
}
},
"node_modules/@floating-ui/dom": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
"integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz",
"integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==",
"dependencies": {
"@floating-ui/core": "^1.4.2",
"@floating-ui/utils": "^0.1.3"
"@floating-ui/core": "^1.6.0",
"@floating-ui/utils": "^0.2.1"
}
},
"node_modules/@floating-ui/react-dom": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz",
"integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==",
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz",
"integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==",
"dependencies": {
"@floating-ui/dom": "^1.5.1"
"@floating-ui/dom": "^1.6.1"
},
"peerDependencies": {
"react": ">=16.8.0",
@ -3106,20 +3106,20 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
"version": "5.15.3",
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.3.tgz",
"integrity": "sha512-sWeihiVyxdJjpLkp8SHkTy9kt2M/o11M60G1MzwljGL2BXdM3Ktzqv5QaQHdi00y7Y1ulvtI3GOSxP2xU8mQJw==",
"version": "5.15.9",
"resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.9.tgz",
"integrity": "sha512-CSDpVevGaxsvMkiYBZ8ztki1z/eT0mM2MqUT21eCRiMz3DU4zQw5rXG5ML/yTuJF9Z2Wv9SliIeaRAuSR/9Nig==",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mui-org"
}
},
"node_modules/@mui/icons-material": {
"version": "5.15.3",
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.3.tgz",
"integrity": "sha512-7LEs8AnO2Se/XYH+CcJndRsGAE+M8KAExiiQHf0V11poqmPVGcbbY82Ry2IUYf9+rOilCVnWI18ErghZ625BPQ==",
"version": "5.15.9",
"resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.9.tgz",
"integrity": "sha512-6tLQoM6RylQuDnHR6qQay0G0pJgKmrhn5MIm0IfrwtmSO8eV5iUFR+nNUTXsWa24gt7ZbIKnJ962UlYaeXa4bg==",
"dependencies": {
"@babel/runtime": "^7.23.6"
"@babel/runtime": "^7.23.9"
},
"engines": {
"node": ">=12.0.0"
@ -3181,19 +3181,19 @@
}
},
"node_modules/@mui/material": {
"version": "5.15.3",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.3.tgz",
"integrity": "sha512-DODBBMouyq1B5f3YkEWL9vO8pGCxuEGqtfpltF6peMJzz/78tJFyLQsDas9MNLC/8AdFu2BQdkK7wox5UBPTAA==",
"version": "5.15.9",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.9.tgz",
"integrity": "sha512-kbHTZDcFmN8GHKzRpImUEl9AJfFWI/0Kl+DsYVT3kHzQWUuHiKm3uHXR1RCOqr7H8IgHFPdbxItmCSQ/mj7zgg==",
"dependencies": {
"@babel/runtime": "^7.23.6",
"@mui/base": "5.0.0-beta.30",
"@mui/core-downloads-tracker": "^5.15.3",
"@mui/system": "^5.15.3",
"@mui/types": "^7.2.12",
"@mui/utils": "^5.15.3",
"@babel/runtime": "^7.23.9",
"@mui/base": "5.0.0-beta.36",
"@mui/core-downloads-tracker": "^5.15.9",
"@mui/system": "^5.15.9",
"@mui/types": "^7.2.13",
"@mui/utils": "^5.15.9",
"@types/react-transition-group": "^4.4.10",
"clsx": "^2.0.0",
"csstype": "^3.1.2",
"clsx": "^2.1.0",
"csstype": "^3.1.3",
"prop-types": "^15.8.1",
"react-is": "^18.2.0",
"react-transition-group": "^4.4.5"
@ -3225,16 +3225,16 @@
}
},
"node_modules/@mui/material/node_modules/@mui/base": {
"version": "5.0.0-beta.30",
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.30.tgz",
"integrity": "sha512-dc38W4W3K42atE9nSaOeoJ7/x9wGIfawdwC/UmMxMLlZ1iSsITQ8dQJaTATCbn98YvYPINK/EH541YA5enQIPQ==",
"version": "5.0.0-beta.36",
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.36.tgz",
"integrity": "sha512-6A8fYiXgjqTO6pgj31Hc8wm1M3rFYCxDRh09dBVk0L0W4cb2lnurRJa3cAyic6hHY+we1S58OdGYRbKmOsDpGQ==",
"dependencies": {
"@babel/runtime": "^7.23.6",
"@floating-ui/react-dom": "^2.0.4",
"@mui/types": "^7.2.12",
"@mui/utils": "^5.15.3",
"@babel/runtime": "^7.23.9",
"@floating-ui/react-dom": "^2.0.8",
"@mui/types": "^7.2.13",
"@mui/utils": "^5.15.9",
"@popperjs/core": "^2.11.8",
"clsx": "^2.0.0",
"clsx": "^2.1.0",
"prop-types": "^15.8.1"
},
"engines": {
@ -3264,12 +3264,12 @@
}
},
"node_modules/@mui/private-theming": {
"version": "5.15.3",
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.3.tgz",
"integrity": "sha512-Q79MhVMmywC1l5bMsMZq5PsIudr1MNPJnx9/EqdMP0vpz5iNvFpnLmxsD7d8/hqTWgFAljI+LH3jX8MxlZH9Gw==",
"version": "5.15.9",
"resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.9.tgz",
"integrity": "sha512-/aMJlDOxOTAXyp4F2rIukW1O0anodAMCkv1DfBh/z9vaKHY3bd5fFf42wmP+0GRmwMinC5aWPpNfHXOED1fEtg==",
"dependencies": {
"@babel/runtime": "^7.23.6",
"@mui/utils": "^5.15.3",
"@babel/runtime": "^7.23.9",
"@mui/utils": "^5.15.9",
"prop-types": "^15.8.1"
},
"engines": {
@ -3290,13 +3290,13 @@
}
},
"node_modules/@mui/styled-engine": {
"version": "5.15.3",
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.3.tgz",
"integrity": "sha512-+d5XZCTeemOO/vBfWGEeHgTm8fjU1Psdgm+xAw+uegycO2EnoA/EfGSaG5UwZ6g3b66y48Mkxi35AggShMr88w==",
"version": "5.15.9",
"resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.9.tgz",
"integrity": "sha512-NRKtYkL5PZDH7dEmaLEIiipd3mxNnQSO+Yo8rFNBNptY8wzQnQ+VjayTq39qH7Sast5cwHKYFusUrQyD+SS4Og==",
"dependencies": {
"@babel/runtime": "^7.23.6",
"@babel/runtime": "^7.23.9",
"@emotion/cache": "^11.11.0",
"csstype": "^3.1.2",
"csstype": "^3.1.3",
"prop-types": "^15.8.1"
},
"engines": {
@ -3321,17 +3321,17 @@
}
},
"node_modules/@mui/system": {
"version": "5.15.3",
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.3.tgz",
"integrity": "sha512-ewVU4eRgo4VfNMGpO61cKlfWmH7l9s6rA8EknRzuMX3DbSLfmtW2WJJg6qPwragvpPIir0Pp/AdWVSDhyNy5Tw==",
"version": "5.15.9",
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.9.tgz",
"integrity": "sha512-SxkaaZ8jsnIJ77bBXttfG//LUf6nTfOcaOuIgItqfHv60ZCQy/Hu7moaob35kBb+guxVJnoSZ+7vQJrA/E7pKg==",
"dependencies": {
"@babel/runtime": "^7.23.6",
"@mui/private-theming": "^5.15.3",
"@mui/styled-engine": "^5.15.3",
"@mui/types": "^7.2.12",
"@mui/utils": "^5.15.3",
"clsx": "^2.0.0",
"csstype": "^3.1.2",
"@babel/runtime": "^7.23.9",
"@mui/private-theming": "^5.15.9",
"@mui/styled-engine": "^5.15.9",
"@mui/types": "^7.2.13",
"@mui/utils": "^5.15.9",
"clsx": "^2.1.0",
"csstype": "^3.1.3",
"prop-types": "^15.8.1"
},
"engines": {
@ -3360,9 +3360,9 @@
}
},
"node_modules/@mui/system/node_modules/clsx": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
"integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz",
"integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==",
"engines": {
"node": ">=6"
}
@ -3381,11 +3381,11 @@
}
},
"node_modules/@mui/utils": {
"version": "5.15.3",
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.3.tgz",
"integrity": "sha512-mT3LiSt9tZWCdx1pl7q4Q5tNo6gdZbvJel286ZHGuj6LQQXjWNAh8qiF9d+LogvNUI+D7eLkTnj605d1zoazfg==",
"version": "5.15.9",
"resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.9.tgz",
"integrity": "sha512-yDYfr61bCYUz1QtwvpqYy/3687Z8/nS4zv7lv/ih/6ZFGMl1iolEvxRmR84v2lOYxlds+kq1IVYbXxDKh8Z9sg==",
"dependencies": {
"@babel/runtime": "^7.23.6",
"@babel/runtime": "^7.23.9",
"@types/prop-types": "^15.7.11",
"prop-types": "^15.8.1",
"react-is": "^18.2.0"
@ -5912,9 +5912,9 @@
"integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="
},
"node_modules/csstype": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
"integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
},
"node_modules/d": {
"version": "1.0.1",
@ -9932,9 +9932,9 @@
}
},
"node_modules/js-sha256": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.10.1.tgz",
"integrity": "sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw=="
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.11.0.tgz",
"integrity": "sha512-6xNlKayMZvds9h1Y1VWc0fQHQ82BxTXizWPEtEeGvmOUYpBRy4gbWroHLpzowe6xiQhHpelCQiE7HEdznyBL9Q=="
},
"node_modules/js-tokens": {
"version": "4.0.0",

View File

@ -53,9 +53,9 @@
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
"@mui/base": "^5.0.0-beta.7",
"@mui/icons-material": "^5.15.3",
"@mui/icons-material": "^5.15.9",
"@mui/lab": "^5.0.0-alpha.136",
"@mui/material": "^5.15.3",
"@mui/material": "^5.15.9",
"@mui/system": "^5.15.3",
"@mui/x-data-grid": "^6.19.2",
"@mui/x-date-pickers": "^6.19.2",
@ -69,7 +69,7 @@
"i18next-browser-languagedetector": "^7.2.0",
"i18next-http-backend": "^2.4.2",
"install": "^0.13.0",
"js-sha256": "^0.10.1",
"js-sha256": "^0.11.0",
"leaflet": "^1.9.4",
"light-bolt11-decoder": "^3.0.0",
"npm": "^10.4.0",

View File

@ -38,7 +38,7 @@
"eslint-plugin-react-hooks": "^4.6.0",
"jest": "^29.5.0",
"metro-react-native-babel-preset": "^0.75.1",
"prettier": "^3.2.4",
"prettier": "^3.2.5",
"react-test-renderer": "18.2.0",
"typescript": "^5.3.3"
}
@ -12369,9 +12369,9 @@
}
},
"node_modules/prettier": {
"version": "3.2.4",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz",
"integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==",
"version": "3.2.5",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz",
"integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
"dev": true,
"bin": {
"prettier": "bin/prettier.cjs"

View File

@ -42,7 +42,7 @@
"eslint-plugin-react-hooks": "^4.6.0",
"jest": "^29.5.0",
"metro-react-native-babel-preset": "^0.75.1",
"prettier": "^3.2.4",
"prettier": "^3.2.5",
"react-test-renderer": "18.2.0",
"typescript": "^5.3.3"
},

View File

@ -20,11 +20,11 @@ git+https://github.com/RoboSats/Robohash.git
gunicorn==21.2.0
psycopg2==2.9.9
SQLAlchemy==2.0.16
django-import-export==3.3.6
django-import-export==3.3.7
requests[socks]
python-gnupg==0.5.2
daphne==4.0.0
daphne==4.1.0
drf-spectacular==0.27.1
drf-spectacular-sidecar==2024.1.1
drf-spectacular-sidecar==2024.2.1
django-cors-headers==4.3.1
base91==1.0.1

View File

@ -1,4 +1,4 @@
coverage==7.4.1
ruff==0.1.14
ruff==0.2.1
drf-openapi-tester==2.3.3
pre-commit==3.6.0
pre-commit==3.6.1

View File

@ -7,6 +7,7 @@ from django.urls import reverse
from api.models import Currency, Order
from api.tasks import cache_market
from django.contrib.admin.sites import AdminSite
from control.models import BalanceLog
from control.tasks import compute_node_balance, do_accounting
from tests.test_api import BaseAPITestCase
@ -14,6 +15,8 @@ from tests.utils.node import add_invoice, set_up_regtest_network
from tests.utils.pgp import sign_message
from tests.utils.trade import Trade
from api.admin import OrderAdmin
def read_file(file_path):
"""
@ -44,6 +47,15 @@ class TradeTest(BaseAPITestCase):
# Take the first node balances snapshot
compute_node_balance()
def assert_order_logs(self, order_id):
order = Order.objects.get(id=order_id)
order_admin = OrderAdmin(model=Order, admin_site=AdminSite())
try:
result = order_admin._logs(order)
self.assertIsInstance(result, str)
except Exception as e:
self.fail(f"Exception occurred: {e}")
def test_login_superuser(self):
"""
Test the login functionality for the superuser.
@ -225,6 +237,7 @@ class TradeTest(BaseAPITestCase):
data["satoshis"], "Relative pricing order has non-null Satoshis"
)
self.assertIsNone(data["taker"], "New order's taker is not null")
self.assert_order_logs(data["id"])
def test_get_order_created(self):
"""
@ -270,6 +283,8 @@ class TradeTest(BaseAPITestCase):
# Cancel order to avoid leaving pending HTLCs after a successful test
trade.cancel_order()
self.assert_order_logs(data["id"])
def test_publish_order(self):
"""
Tests a trade from order creation to published (maker bond locked).
@ -298,6 +313,8 @@ class TradeTest(BaseAPITestCase):
# Cancel order to avoid leaving pending HTLCs after a successful test
trade.cancel_order()
self.assert_order_logs(data["id"])
def test_pause_unpause_order(self):
"""
Tests pausing and unpausing a public order
@ -323,6 +340,8 @@ class TradeTest(BaseAPITestCase):
# Cancel order to avoid leaving pending HTLCs after a successful test
trade.cancel_order()
self.assert_order_logs(data["id"])
def test_make_and_take_order(self):
"""
Tests a trade from order creation to taken.
@ -362,6 +381,8 @@ class TradeTest(BaseAPITestCase):
# Cancel order to avoid leaving pending HTLCs after a successful test
trade.cancel_order()
self.assert_order_logs(data["id"])
def test_make_and_lock_contract(self):
"""
Tests a trade from order creation to taker bond locked.
@ -407,6 +428,8 @@ class TradeTest(BaseAPITestCase):
# Maker cancels order to avoid leaving pending HTLCs after a successful test
trade.cancel_order()
self.assert_order_logs(data["id"])
def test_trade_to_locked_escrow(self):
"""
Tests a trade from order creation until escrow locked, before
@ -455,6 +478,8 @@ class TradeTest(BaseAPITestCase):
trade.cancel_order(trade.maker_index)
trade.cancel_order(trade.taker_index)
self.assert_order_logs(data["id"])
def test_trade_to_submitted_invoice(self):
"""
Tests a trade from order creation until escrow locked and
@ -509,6 +534,8 @@ class TradeTest(BaseAPITestCase):
trade.cancel_order(trade.maker_index)
trade.cancel_order(trade.taker_index)
self.assert_order_logs(data["id"])
def test_trade_to_confirm_fiat_received_LN(self):
"""
Tests a trade from order creation until fiat received is confirmed by seller/taker
@ -534,6 +561,8 @@ class TradeTest(BaseAPITestCase):
self.assertFalse(data["taker_locked"])
self.assertFalse(data["escrow_locked"])
self.assert_order_logs(data["id"])
def test_successful_LN(self):
"""
Tests a trade from order creation until Sats sent to buyer
@ -561,6 +590,8 @@ class TradeTest(BaseAPITestCase):
self.assertIsHash(data["maker_summary"]["preimage"])
self.assertIsHash(data["maker_summary"]["payment_hash"])
self.assert_order_logs(data["id"])
def test_successful_onchain(self):
"""
Tests a trade from order creation until Sats sent to buyer
@ -588,6 +619,8 @@ class TradeTest(BaseAPITestCase):
self.assertIsInstance(data["maker_summary"]["address"], str)
self.assertIsHash(data["maker_summary"]["txid"])
self.assert_order_logs(data["id"])
def test_cancel_public_order(self):
"""
Tests the cancellation of a public order
@ -667,6 +700,8 @@ class TradeTest(BaseAPITestCase):
)
self.assertEqual(data["expiry_reason"], Order.ExpiryReasons.NMBOND)
self.assert_order_logs(data["id"])
def test_public_order_expires(self):
"""
Tests the expiration of a public order
@ -698,6 +733,8 @@ class TradeTest(BaseAPITestCase):
)
self.assertEqual(data["expiry_reason"], Order.ExpiryReasons.NTAKEN)
self.assert_order_logs(data["id"])
def test_taken_order_expires(self):
"""
Tests the expiration of a public order
@ -731,6 +768,8 @@ class TradeTest(BaseAPITestCase):
)
self.assertEqual(data["expiry_reason"], Order.ExpiryReasons.NESINV)
self.assert_order_logs(data["id"])
def test_escrow_locked_expires(self):
"""
Tests the expiration of a public order
@ -765,6 +804,8 @@ class TradeTest(BaseAPITestCase):
)
self.assertEqual(data["expiry_reason"], Order.ExpiryReasons.NINVOI)
self.assert_order_logs(data["id"])
def test_chat(self):
"""
Tests the chatting REST functionality
@ -871,6 +912,8 @@ class TradeTest(BaseAPITestCase):
Order.Status.MLD,
)
self.assert_order_logs(data["id"])
def test_order_expires_after_only_maker_messaged(self):
"""
Tests the expiration of an order in chat where taker never messaged
@ -911,6 +954,8 @@ class TradeTest(BaseAPITestCase):
Order.Status.TLD,
)
self.assert_order_logs(data["id"])
def test_withdraw_reward_after_unilateral_cancel(self):
"""
Tests withdraw rewards as taker after maker cancels order unilaterally
@ -979,6 +1024,8 @@ class TradeTest(BaseAPITestCase):
Order.Status.DIS,
)
self.assert_order_logs(data["id"])
def test_ticks(self):
"""
Tests the historical ticks serving endpoint after creating a contract