diff --git a/README.md b/README.md
index 80e46d2a..ce9d44d3 100644
--- a/README.md
+++ b/README.md
@@ -1,11 +1,11 @@
-
+

[](https://app.codacy.com/gh/haveno-dex/haveno/dashboard)
- 
- [](https://github.com/orgs/haveno-dex/projects/2) |
+ 
+ [](https://github.com/orgs/haveno-dex/projects/2) |
[](https://twitter.com/havenodex)
- [](https://matrix.to/#/#haveno:monero.social) [](https://github.com/haveno-dex/.github/blob/master/CODE_OF_CONDUCT.md)
+ [](https://matrix.to/#/#haveno:monero.social) [](https://github.com/haveno-dex/.github/blob/master/CODE_OF_CONDUCT.md)
## What is Haveno?
@@ -83,4 +83,4 @@ If you are using a wallet that supports OpenAlias (like the 'official' CLI and G
`1AKq3CE1yBAnxGmHXbNFfNYStcByNDc5gQ`
-
\ No newline at end of file
+
diff --git a/core/src/main/java/bisq/core/api/CoreAccountService.java b/core/src/main/java/bisq/core/api/CoreAccountService.java
index 95ff2593..e0c9b9ec 100644
--- a/core/src/main/java/bisq/core/api/CoreAccountService.java
+++ b/core/src/main/java/bisq/core/api/CoreAccountService.java
@@ -92,14 +92,14 @@ public class CoreAccountService {
if (accountExists()) throw new IllegalStateException("Cannot create account if account already exists");
keyRing.generateKeys(password);
this.password = password;
- for (AccountServiceListener listener : listeners) listener.onAccountCreated();
+ for (AccountServiceListener listener : new ArrayList
(listeners)) listener.onAccountCreated();
}
public void openAccount(String password) throws IncorrectPasswordException {
if (!accountExists()) throw new IllegalStateException("Cannot open account if account does not exist");
if (keyRing.unlockKeys(password, false)) {
this.password = password;
- for (AccountServiceListener listener : listeners) listener.onAccountOpened();
+ for (AccountServiceListener listener : new ArrayList(listeners)) listener.onAccountOpened();
} else {
throw new IllegalStateException("keyRing.unlockKeys() returned false, that should never happen");
}
@@ -110,13 +110,13 @@ public class CoreAccountService {
String oldPassword = this.password;
keyStorage.saveKeyRing(keyRing, oldPassword, password);
this.password = password;
- for (AccountServiceListener listener : listeners) listener.onPasswordChanged(oldPassword, password);
+ for (AccountServiceListener listener : new ArrayList(listeners)) listener.onPasswordChanged(oldPassword, password);
}
public void closeAccount() {
if (!isAccountOpen()) throw new IllegalStateException("Cannot close unopened account");
keyRing.lockKeys(); // closed account means the keys are locked
- for (AccountServiceListener listener : listeners) listener.onAccountClosed();
+ for (AccountServiceListener listener : new ArrayList(listeners)) listener.onAccountClosed();
}
public void backupAccount(int bufferSize, Consumer consume, Consumer error) {
diff --git a/core/src/main/java/bisq/core/provider/ProvidersRepository.java b/core/src/main/java/bisq/core/provider/ProvidersRepository.java
index 4359fe55..6d2d6025 100644
--- a/core/src/main/java/bisq/core/provider/ProvidersRepository.java
+++ b/core/src/main/java/bisq/core/provider/ProvidersRepository.java
@@ -23,7 +23,6 @@ import com.google.inject.Inject;
import javax.inject.Named;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@@ -35,7 +34,7 @@ import javax.annotation.Nullable;
@Slf4j
public class ProvidersRepository {
- private static final List DEFAULT_NODES = Arrays.asList(
+ private static final List DEFAULT_NODES = List.of(
"http://gbmks3wzvdzu5xq6gnqpj2qz3262tcr36iltagk37udcbwzsbfazq3yd.onion/" // Haveno
);
@@ -104,8 +103,8 @@ public class ProvidersRepository {
if (useLocalhostForP2P) {
// If we run in localhost mode we don't have the tor node running, so we need a clearnet host
// Use localhost for using a locally running provider
- // providers = Collections.singletonList("http://localhost:8078");
- providers = Collections.singletonList("https://price.haveno.network/"); // Haveno
+
+ providers = List.of("http://localhost:8078/", "https://price.haveno.network/");
} else {
providers = DEFAULT_NODES;
}
diff --git a/docs/installing.md b/docs/installing.md
index 0f62ccf1..e17bd82a 100644
--- a/docs/installing.md
+++ b/docs/installing.md
@@ -8,7 +8,7 @@ On Ubuntu: `sudo apt install make wget git openjdk-11-jdk`. The Monero binaries
## Build Haveno
-If it's the first time you are building Haveno, run the following commands to download the repository, the needed dependencies, and build the latest release:
+If it's the first time you are building Haveno, run the following commands to download the repository, the needed dependencies, and build the latest release:
```
git clone https://github.com/haveno-dex/haveno.git
@@ -68,6 +68,8 @@ If you don't use *screen*, open 4 terminal windows and run in each one of them:
1. `make seednode-local`
2. `make user1-desktop-local` or if you want to run user1 as a daemon: `make user1-daemon-local`
3. `make user2-desktop-local` or if you want to run user2 as a daemon: `make user2-daemon-local`
+ 4. `make arbitrator-desktop-local` or if you want to run arbitrator as a daemon: `make arbitrator-daemon-local`
+ 5. Optionally run a [local price node](https://github.com/haveno-dex/haveno-pricenode/blob/main/README.md)
If this is the first time launching the arbitrator desktop application, register the arbitrator after the interface opens. Go to the *Account* tab and press `cmd+r`. Confirm the registration of the arbitrator.