diff --git a/CHANGELOG.md b/CHANGELOG.md index 0791659b9..3514a11ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Docs: Added a dedicated page for makers. +- Docs: Improved the refund and punish page. - ASB: Fixed an issue where the ASB would silently fail if the publication of the Monero refund transaction failed. ## [1.0.0-rc.12] - 2025-01-14 - + +- GUI: Fixed a bug where the CLI wasn't passed the correct Monero node. +- ## [1.0.0-rc.11] - 2024-12-22 - ASB: The `history` command will now display additional information about each swap such as the amounts involved, the current state and the txid of the Bitcoin lock transaction. diff --git a/docs/pages/_meta.json b/docs/pages/_meta.json index a45006730..7e1891266 100644 --- a/docs/pages/_meta.json +++ b/docs/pages/_meta.json @@ -3,5 +3,6 @@ "getting_started": "Getting Started", "usage": "Usage", "advanced": "Advanced", + "becoming_a_maker": "Becoming a Maker", "donate": "Donate" } \ No newline at end of file diff --git a/docs/pages/advanced/swap_on_testnet.mdx b/docs/pages/advanced/swap_on_testnet.mdx index 0f33d055b..c0a9fc7b5 100644 --- a/docs/pages/advanced/swap_on_testnet.mdx +++ b/docs/pages/advanced/swap_on_testnet.mdx @@ -1,10 +1,12 @@ # Swapping on Testnet -Swapping on the testnet is a great way to test out the swap functionality without risking your mainnet assets. The testnet is a separate network from the mainnet, and the assets on the testnet are worthless. -To be exact, `testnet3` bitcoin will be swapped for `stagenet` Monero. You will need to set up two wallets to perform a swap: +Swapping on testnet is a great way to test out the swap functionality without risking your mainnet assets. +The _testnet_ is a separate network from the _mainnet_, only used for testing the blockchains. +The assets on testnet are worthless. +When we talk about "testnet", what we actually mean is the `Testnet3` network for Bitcoin and the `Stagenet` network for Monero. +You will need a wallet in each of these networks to perform a swap. -- A Testnet3 Electrum Wallet (Bitcoin) -- A Stagenet Monero GUI Wallet +Here are the steps to set up the wallets using Electrum and Monero GUI. ## Electrum @@ -24,7 +26,7 @@ import { Tabs, Tab } from 'nextra/components' ``` - If you install Electrum on Windows, you will have two programs you can start. One of them is called "Electrum Testnet". + Open the `Electrum Testnet` program from your start menu. @@ -32,11 +34,14 @@ To get some free Testnet coins visit a faucet like [this](https://testnet-faucet ## Monero -If you use the `monero-wallet-cli` you simply need to start it with the `--stagenet` flag. If you use the GUI you can follow [this](https://www.youtube.com/watch?v=5E4aO3UAqJo) tutorial. A list of stagenet remote nodes can be found [here](https://monero.fail/?chain=monero&network=stagenet). +If you use `monero-wallet-cli` you simply need to start it with the `--stagenet` flag. +If you use the GUI you can follow [this](https://www.youtube.com/watch?v=5E4aO3UAqJo) tutorial. +A list of stagenet remote nodes can be found [here](https://monero.fail/?chain=monero&network=stagenet). ## Launching the GUI -View the [Installation Instructions](../getting_started/install_instructions) if you haven't already installed the GUI. Then start the GUI in testnet mode. +View the [Installation Instructions](../getting_started/install_instructions) if you haven't already installed the GUI. +Then start the GUI in testnet mode. @@ -51,4 +56,5 @@ View the [Installation Instructions](../getting_started/install_instructions) if -From here on you can follow the [Complete your first swap](../usage/first_swap) guide with the difference that you will be using the testnet wallets. The process is the same, but you will be using the testnet wallets instead of the mainnet wallets. +From here on you can follow the [Complete your first swap](../usage/first_swap) guide. +The process is the same, but you will be using the testnet wallets instead of the mainnet wallets. diff --git a/docs/pages/becoming_a_maker/_meta.json b/docs/pages/becoming_a_maker/_meta.json new file mode 100644 index 000000000..b2b8e6f3b --- /dev/null +++ b/docs/pages/becoming_a_maker/_meta.json @@ -0,0 +1,3 @@ +{ + "overview": "Overview" +} \ No newline at end of file diff --git a/docs/pages/becoming_a_maker/overview.mdx b/docs/pages/becoming_a_maker/overview.mdx new file mode 100644 index 000000000..478b5864b --- /dev/null +++ b/docs/pages/becoming_a_maker/overview.mdx @@ -0,0 +1,274 @@ +import { Callout } from 'nextra/components' + +## An Overview of Becoming a Maker + +Makers run an automated swap backend (`asb`), which users can connect to and swap with. +The `asb` accepts Bitcoin and sells Monero, for a fee. + +The `asb` needs to communicate with the Bitcoin and Monero blockchains. +For this, it uses `monero-wallet-rpc` for Monero and `electrs` for Bitcoin. + +It's also strongly recommended to run your own Monero and Bitcoin nodes. + +## Docker Compose setup + +We maintain a Docker Compose configuration ([link](https://github.com/UnstoppableSwap/asb-docker-compose)) that automatically starts and manages these services: + +- `asb` (the maker service, connecting to `monero-wallet-rpc` and `electrs`) +- `monero-wallet-rpc` (an RPC server, managing the Monero wallet and connecting to `monerod`) +- `electrs` (a Bitcoin blockchain indexer, connecting to `bitcoind`) +- `monerod` (a Monero node, connecting to the Monero blockchain) +- `bitcoind` (a Bitcoin node, connecting to the Bitcoin blockchain) + +To run this setup you'll need Docker and Docker Compose installed. + +### Getting started + +Now you can clone the configuration repo and `cd` into it. +We're going to setup an asb on mainnet. +If you want to setup for testnet, go into the `testnet` directory instead. +All other steps remain the same. + +```bash +git clone https://github.com/UnstoppableSwap/asb-docker-compose.git +cd asb-docker-compose/mainnet +``` + +The directory contains three files: the docker compose file, the enviroment variables file and the asb configuration file. +The directory structure looks like this: + +```bash +asb-docker-compose/mainnet/ +├─ config_mainnet.toml # asb configuration +├─ docker-compose.yml # docker compose configuration +├─ .env # port configuration for docker compose +``` + +The `docker-compose.yml` and `.env` files are part of the docker compose setup. +We will prioritize the asb configuration file in this guide, because you probably don't want to change the docker compose setup. + +### Usage and commands + +_This list is also available in the [repository](https://github.com/UnstoppableSwap/asb-docker-compose/), including variations for testnet._ + +First, make sure you're in the directory with the `docker-compose.yml` file: + +```bash copy +cd asb-docker-compose/mainnet +``` + +If you aren't familiar with docker compose, here are the most important commands: + +| Command | Description | +| --- | --- | +| `docker compose up -d` | Start all services. | +| `docker compose down` | Stop all services. | +| `docker compose ps` | List all currently running services. | +| `docker compose pull` | Pull the latest images for all services. You need to run `docker compose up -d` after this to actually update the services. | +| `docker compose logs -f` | Access the logs of all services. To only get the logs of a specific service, use `docker compose logs -f `. To only see the last e.g. 100 lines, use `docker compose logs -f --tail 100`. | + +You can also execute `asb` commands, to get the history of swaps for example: + +```bash copy +docker compose exec mainnet_asb asb --config=/asb-data/config_mainnet.toml history +``` + +Below is a list of asb commands you can use. +Some of them require access to some resources, in which case you'll need to stop the asb first and then resume afterwards: + +```bash copy +docker compose down +docker compose exec mainnet_asb asb --config=/asb-data/config_mainnet.toml +docker compose up -d +``` + +| Command | Description | +| --- | --- | +| `help` | Prints a list of available options and commands (under _subcommands_). | +| `history` | Prints a list of all previous and current swaps. | +| `start` | Starts the asb. This is automatically done when you run `docker compose up -d`. | +| `config` | Prints the current configuration. | +| `export-bitcoin-wallet` | Prints the internal bitcoin wallet descriptor which can be used to access the asb's bitcoin wallet. | +| `withdraw-btc --address ` | Withdraws Bitcoin from the internal wallet into a specified address. | + +### Asb Configuration + +Let's have a look at the asb configuration file. +It is used to configure the behaviour of the asb. +It uses the TOML language ([docs](https://toml.io/)). + +The file has different sections, each with different configuration options: + +- `maker`: specifies the core behaviour of the asb +- `bitcoin`: specifies the Bitcoin configuration +- `monero`: specifies the Monero configuration +- `tor`: specifies the Tor configuration +- `data`: specifies the data directory +- `network`: specifies the networking configuration + + +#### Maker Section + +The most important section is the `[maker]` section, which specifies the core behaviour of the asb. +This is what a standard maker section looks like: + +```toml filename="config_mainnet.toml" +[maker] +min_buy_btc = 0.001 +max_buy_btc = 0.1 +ask_spread = 0.02 +price_ticker_ws_url = "wss://ws.kraken.com/" + +# ... +``` + +Below an explanation of what each option does: + +| Option | Description | +| --- | --- | +| `min_buy_btc` | The minimum amount of Bitcoin the asb will buy from takers, in BTC. | +| `max_buy_btc` | The maximum amount of Bitcoin the asb will buy from takers, in BTC. | +| `ask_spread` | The markup the asb will charge compared to the market price, as a factor. The market price is fetched via the `price_ticker_ws_url`. A value of `0.02` means the asb will charge 2% more than the market price. | +| `price_ticker_ws_url` | The URL of a websocket that provides the market price. The default is the Kraken API, but you can build your own websocket server which mimics the Kraken API. | + +### Bitcoin Section + +The `bitcoin` section specifies a few details about the asb's interaction with the Bitcoin blockchain. +We do not recommend changing these settings, however we document them for completeness sake. + +```toml filename="config_mainnet.toml" +# ... + +[bitcoin] +target_block = 1 +electrum_rpc_url = "tcp://mainnet_electrs:50001" +network = "Mainnet" + +# ... +``` + +| Option | Description | +| --- | --- | +| `target_block` | This determines the block height that the asb will try to get it's Bitcoin transactions confirmed at. The default value of `1` means the asb will try to get it's transactions confirmed in the next block. | +| `electrum_rpc_url` | The URL of the _electrs_ server the asb will connect to. The _electrs_ server is is used to interact with the Bitcoin blockchain. The default URL points to the docker-hosted _electrs_ server. | +| `network` | The Bitcoin network the asb will connect to. | + +### Monero Section + +The `monero` section specifies a few details about the asb's interaction with the Monero blockchain. +We do not recommend changing these settings, however we document them for completeness sake. + +```toml filename="config_mainnet.toml" +# ... + +[monero] +wallet_rpc_url = "http://mainnet_monero-wallet-rpc:18083/json_rpc" +network = "Mainnet" + +# ... +``` + +| Option | Description | +| --- | --- | +| `wallet_rpc_url` | The URL of the _monero-wallet-rpc_ server the asb will connect to. The _monero-wallet-rpc_ server is is used to interact with the Monero blockchain. The default URL points to the docker-hosted _monero-wallet-rpc_ server. | +| `network` | The Monero network the asb will connect to. | + +### Tor Section + +The `tor` section specifies the asb's onion service (hidden service) configuration. +An onion service can be used to make the asb publicly accessible without exposing the server's IP address or requiring an opened port ([further reading](https://community.torproject.org/onion-services/overview/)). + +```toml filename="config_mainnet.toml" +# ... + +[tor] +register_hidden_service = true +hidden_service_num_intro_points = 5 + +# ... +``` + +| Option | Description | +| --- | --- | +| `register_hidden_service` | Whether the asb should register an onion service. | +| `hidden_service_num_intro_points` | If the asb registers an onion service, this specifies the number of introduction points the asb will use. | + + +### Network Section + +The `network` section specifies the asb's networking configuration. +This includes: + - which rendezvous points the asb will connect to, + - on which port, and + - external addresses the asb will advertise to the rendezvous points. + + +These addresses are specified using the multiaddr format ([link](https://multiformats.io/multiaddr)). +A multiaddr combines all necessary information into a single string. + +For example, the first rendezvous point's multiaddr specifies the rendezvous point at the DNS address `discover.unstoppableswap.net`, on port `8888` with the peer ID `12D3KooWA6cnqJpVnreBVnoro8midDL9Lpzmg8oJPoAGi7YYaamE`. + + +```toml filename="config_mainnet.toml" +# ... + +[network] +# the ip and port the asb will listen on +listen = ["/ip4/0.0.0.0/tcp/9939"] + +# the rendezvous points the asb will connect to (address, port and peer id) +rendezvous_point = [ + "/dns4/discover.unstoppableswap.net/tcp/8888/p2p/12D3KooWA6cnqJpVnreBVnoro8midDL9Lpzmg8oJPoAGi7YYaamE" +] + +# the external addresses the asb will advertise to the rendezvous points (only address) +external_addresses = [ + # e.g. "/dns4/your.domain.com/tcp/9939/p2p/your1peer2id" +] +``` + +| Option | Description | Format | +| --- | --- | --- | +| `listen` | The ip and port the asb will listen on. The IP address `0.0.0.0` means the asb will listen on all IP addresses. Remember that the asb service is running in a docker container. Make sure the port is the same as in the `.env` file. | This multiaddr should only include an IP address and a port number. | +| `rendezvous_point` | A list of rendezvous points the asb will connect to. | These multiaddrs should include an address (e.g. IPv4, IPv6, DNS), a port number and a peer ID. | +| `external_addresses` | A list of external addresses the asb will advertise to the rendezvous points. If you registered a domain, you can add it here. If you enabled the onion service, it will be included automatically, so you don't need to specify the onion address. | These multiaddrs should only include an address (e.g. IPv4, IPv6, DNS). | + + +Et, voilà! +You've successfully configured your asb. + +### Default Configuration + +This is what the default configuration might look like. + +```toml filename="config_mainnet.toml" copy +[maker] +min_buy_btc = 0.001 +max_buy_btc = 0.1 +ask_spread = 0.02 +price_ticker_ws_url = "wss://ws.kraken.com/" + +[bitcoin] +electrum_rpc_url = "tcp://mainnet_electrs:50001" +target_block = 1 +network = "Mainnet" + +[monero] +wallet_rpc_url = "http://mainnet_monero-wallet-rpc:18083/json_rpc" +network = "Mainnet" + +[tor] +register_hidden_service = true +hidden_service_num_intro_points = 5 + +[data] +dir = "/asb-data/" + +[network] +listen = ["/ip4/0.0.0.0/tcp/9939"] +rendezvous_point = [ + "/dns4/discover.unstoppableswap.net/tcp/8888/p2p/12D3KooWA6cnqJpVnreBVnoro8midDL9Lpzmg8oJPoAGi7YYaamE", + "/dns4/eratosthen.es/tcp/7798/p2p/12D3KooWAh7EXXa2ZyegzLGdjvj1W4G3EXrTGrf6trraoT1MEobs" +] +external_addresses = [] +``` diff --git a/docs/pages/donate.mdx b/docs/pages/donate.mdx index f1b47a6b3..0dbfa9b86 100644 --- a/docs/pages/donate.mdx +++ b/docs/pages/donate.mdx @@ -4,10 +4,10 @@ We rely on generous donors like you to keep development moving forward. To bring If you interested in a partnership or want to support the project in a way that requires coordination with the contributors, contact [`@binarybaron:matrix.org`](https://matrix.to/#/@binarybaron:matrix.org) on Matrix. -```copy filename="Monero Donation Address" +```raw filename="Monero" copy 49LEH26DJGuCyr8xzRAzWPUryzp7bpccC7Hie1DiwyfJEyUKvMFAethRLybDYrFdU1eHaMkKQpUPebY4WT3cSjEvThmpjPa ``` -```copy filename="Bitcoin Donation Address" +```raw filename="Bitcoin Donation Address" copy bc1qz6lfs0r206396a9psunmkfpqh7sdf2zh3e7tnf -``` \ No newline at end of file +``` diff --git a/docs/pages/getting_started/install_instructions.mdx b/docs/pages/getting_started/install_instructions.mdx index 8d8f4748c..45b7c743d 100644 --- a/docs/pages/getting_started/install_instructions.mdx +++ b/docs/pages/getting_started/install_instructions.mdx @@ -2,9 +2,14 @@ import { Tabs } from 'nextra/components' # Installation +To install the app you can either download ready-to-use binaries or build it from source. +Unless you know what you're doing, you probably want to use the precompiled binaries. + +## Precompiled binaries + Precompiled binaries of the _GUI_ are available for most platforms. Simply download the appropriate binary for your system and follow the instructions. - + 1. Download the latest release from GitHub [here](https://github.com/UnstoppableSwap/core/releases/download/1.0.0-rc.4/UnstoppableSwap_1.0.0-rc.4_x64-setup.exe) 2. Open the downloaded `.exe` installer @@ -32,4 +37,28 @@ Precompiled binaries of the _GUI_ are available for most platforms. Simply downl ./UnstoppableSwap_1.0.0-rc.4_amd64.AppImage ``` + + Due to limitations with our CI pipeline, we currently can't provide precompiled binaries for arm64 linux systems. + + +## Building from source + +If you want to build the application from source you'll need to have the following tools installed: + +- `cargo` ([installation](https://www.rust-lang.org/tools/install)) and `cargo tauri` ([installation](https://v2.tauri.app/reference/cli/) and [prerequisites](https://v2.tauri.app/start/prerequisites/)) +- `node` ([installation](https://nodejs.org/en/download/)) and `yarn` (version 1.22, not 4.x) +- `dprint` (`cargo install dprint@0.39.1`) +- `typeshare` (`cargo install typeshare-cli`) + +After that you only need to clone the repository and run the following commands: + +```bash +git clone https://github.com/UnstoppableSwap/core.git +cd core/src-tauri +cargo tauri build # may take a while +``` + +This will create the `core/target/release/bundle` folder which contains the executable in a platform specific folder. +By default this will compile the binary the platform you are currently on. +You can configure this using options for the `cargo tauri build` command ([docs](https://v2.tauri.app/reference/cli/#build)). diff --git a/docs/pages/index.mdx b/docs/pages/index.mdx index 937e84420..a771d3156 100644 --- a/docs/pages/index.mdx +++ b/docs/pages/index.mdx @@ -3,7 +3,8 @@ import { Cards } from 'nextra/components' # Introduction -**UnstoppableSwap** is a protocol _and_ desktop application for swapping Monero and Bitcoin. We use atomic swaps to make trustless and private trades possible. +**UnstoppableSwap** is a protocol _and_ desktop application for swapping Monero and Bitcoin. +It uses atomic swaps to make trustless and private trades possible without the need for a centralized exchange. ## Quick Start @@ -14,4 +15,19 @@ To start using UnstoppableSwap, you need to install the application. Then you ca - \ No newline at end of file + + +## What is an Atomic Swap? + +Atomic swaps are cross-blockchain transactions that are executed without the need for a centralized exchange. +They are _atomic_ because the protocol guarantees that you will not lose your assets if the swap fails[^1]. + +## How does UnstoppableSwap work? + +**UnstoppableSwap** is a protocol _and_ desktop application. +When you run the app, you can connect to and swap with different _makers_. +_Makers_ are users who run the UnstoppableSwap protocol on their own computer or server to provide liquidity. +They buy your Bitcoin and in return give you Monero. +Each maker can set their own prices and fees. + +[^1]: The guarantee only holds when the protocol is followed. \ No newline at end of file diff --git a/docs/pages/usage/refund_punish.mdx b/docs/pages/usage/refund_punish.mdx index 260218167..e880fe774 100644 --- a/docs/pages/usage/refund_punish.mdx +++ b/docs/pages/usage/refund_punish.mdx @@ -1,24 +1,69 @@ + +import { Callout } from 'nextra/components' + # Cancel, Refund, and Punish explained -Atomic Swaps offer a lot of security and privacy benefits, but they also come with some responsibilities. It is important to recognize that Atomic Swaps are trustless, but not risk-free. As long as you follow the rules of the protocol, you can be sure that you will not lose your funds. +Atomic Swaps offer a lot of security and privacy benefits, but they also come with some responsibilities. +As long as you follow the rules of the protocol, you can be sure that you will not lose your funds. + + +If you want to learn more about the technical details, you can read the paper _Atomic Swaps between Bitcoin and Monero by Philipp Hoenisch and Lucas Soriano del Pino_ ([link](https://arxiv.org/abs/2101.12332)) or read this COMIT blog post ([link](https://comit.network/blog/2020/10/06/monero-bitcoin/)). + -If you want to learn more about technical details, you can read this paper: [Atomic Swaps between Bitcoin and Monero, _Philipp Hoenisch, Lucas Soriano del Pino_](https://arxiv.org/abs/2101.12332) or read this [blog post](https://comit.network/blog/2020/10/06/monero-bitcoin/). +We have chosen to include a fairly technical explanation here. +The GUI will guide you through the process and make it as easy as possible. -We have chosen to include a fairly technical explanation here. However, the GUI will guide you through the process and make it as easy as possible. You do not need to manually do any of the steps described here. + +Be sure to click the "Resume" button of your swap, if you aren't already resuming it. +Otherwise, the GUI cannot perform the necessary actions. +You do not need to manually do any of the specific steps described here. + ## Cancel -If the _maker_ has not been able to redeem the Bitcoin within 12 hours (72 Bitcoin blocks) from the start of the swap, the swap will be cancelled. -This is done by either you or the _maker_ publishing a special Bitcoin transaction called the `Bitcoin Cancel Transaction`. -As soon as this transaction is included in the Bitcoin blockchain, the swap is locked in a state where only the [_Refund_](#refund) and [_Punish_](#punish) paths can be activated. The _Happy Path_ path where you redeem the Monero is no longer possible. +If the maker has not been able to redeem the Bitcoin (that you locked) within ~12 hours (72 Bitcoin blocks) from the start of the swap[^1], the swap will be cancelled. +This is done either by you or by the maker, by publishing a special Bitcoin transaction called the _Bitcoin cancel transaction_, or _tx_cancel_. +As soon as this transaction is confirmed, the swap is locked in a state where only the [_refund_](#refund) and [_punish_](#punish) paths can be activated. + +[^1]: To be exact, the time frame is ~12 hours (72 Bitcoin blocks) from the _confirmation_ of the Bitcoin _lock_ transaction. ## Refund -As soon as the swap is cancelled, you can refund your Bitcoin. This is done by publishing the `Bitcoin Refund Transaction` on the Bitcoin blockchain. -If this is done within 24 hours (144 Bitcoin blocks) from the inclusion of the `Bitcoin Cancel Transaction`, you will get your Bitcoin back. -If you do not refund your Bitcoin within this time frame, the _maker_ can punish you. This is a security measure to ensure that you do not cancel the swap and then refuse to refund your Bitcoin which would result in the _maker_ losing their Monero. +As soon as the swap is cancelled, you can refund your Bitcoin. +The GUI will do this automatically for you. +This is done by publishing the Bitcoin _refund_ transaction, or _tx_refund_. +This must be done within ~24 hours (144 Bitcoin blocks) from the confirmation of the Bitcoin _cancel_ transaction. + + +If the Bitcoin is not refunded within this time frame, the maker can [_punish_](#punish) you. +This is a security measure to ensure that malicious actors can't refund their Bitcoin while the maker loses their Monero. +You may still be able to redeem the Monero, if the maker [cooperates](#cooperative-redeem). + ## Punish -If you do not refund your Bitcoin within 24 hours (144 Bitcoin blocks) from the inclusion of the `Bitcoin Cancel Transaction`, the _maker_ will _punish_ you. This will result in the _maker_ taking your Bitcoin as a penalty for not refunding it in time. -Even if this state is reached and the _maker_ has punished you, there's still hope to redeem the Monero. The _maker_ can choose to allow you to redeem the Monero by transmitting a secret key to you. This however is at the discretion of the _maker_ and they are not obligated to do so. \ No newline at end of file +If you do not refund your Bitcoin within ~24 hours (~144 Bitcoin blocks) from the confirmation of the _Bitcoin cancel transaction_, the maker will _punish_ you. +This is done by redeeming the Bitcoin that you locked earlier. +At this point, you can no longer _refund_ the swap and get back your Bitcoin. + + +You may still be able to _complete_ the swap by redeeming the Monero. + + +## Cooperative Redeem + +If the maker has punished you, you may still be able to _complete_ the swap by redeeming the Monero. +This requires the maker to cooperate. +Most makers do cooperate, since the alternative is that the Monero will be locked in the swap forever. + +To attempt a cooperative redeem, simply resume the swap. +A request will be made to the maker to send you the secret key. +If the request fails (e.g. because of network issues), you can still try again later. +There is no time limit for this. + +Once the GUI receives the secret key, it will automatically redeem the Monero to the address you specified when you started the swap. + + +With most makers, you can still redeem the Monero even after being punished. +This is, however, purely voluntary and we advise against relying on this. + diff --git a/docs/theme.config.jsx b/docs/theme.config.jsx index bb11f2dae..d2ba8fee0 100644 --- a/docs/theme.config.jsx +++ b/docs/theme.config.jsx @@ -1,7 +1,7 @@ export default { logo: UnstoppableSwap, project: { - link: "https://github.com/UnstoppableSwap/unstoppableswap-docs", + link: "https://github.com/UnstoppableSwap/core", }, primaryHue: 14.3, primarySaturation: 90.68, diff --git a/src-gui/.env.development b/src-gui/.env.development index de6b09b0f..76c862e4b 100644 --- a/src-gui/.env.development +++ b/src-gui/.env.development @@ -1,2 +1,2 @@ # You can configure the address of a locally running testnet asb. It'll displayed in the GUI. This is useful for testing -# VITE_TESTNET_STUB_PROVIDER_ADDRESS=/ip4/127.0.0.1/tcp/9939/p2p/12D3KooWLaHSfwTW99GpqBZntLodmrFyzockGSVbL6grbN7HXo8x +VITE_TESTNET_STUB_PROVIDER_ADDRESS=/onion3/clztcslas7hlfrprevcdo3l6bczwa3cumr2b5up5nsumsj7sqgd3p2qd:9939/p2p/12D3KooWS1DtT4JmZoAS6m4wZcxXnUB3eVFNvW8hSPrAyCtVSSYm \ No newline at end of file diff --git a/src-gui/.gitignore b/src-gui/.gitignore index 544dca014..59077db2c 100644 --- a/src-gui/.gitignore +++ b/src-gui/.gitignore @@ -29,3 +29,4 @@ src/models/tauriModel.ts # Env files .env* +.env.* diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index b1f09744a..e4b962968 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -7,7 +7,7 @@ "frontendDist": "../src-gui/dist", "beforeBuildCommand": { "cwd": "../src-gui", - "script": "yarn run build" + "script": "yarn install && yarn run build" } }, "app": {