Compare commits
14 commits
Author | SHA1 | Date | |
---|---|---|---|
11f70a8d3d | |||
5413a41d62 | |||
e0cf3b05df | |||
1e14441297 | |||
efb4823a78 | |||
ff3ed55d29 | |||
0ec5b3bbd5 | |||
4c444533bf | |||
c13522175f | |||
570f63cb86 | |||
e143b86791 | |||
05d9796bb9 | |||
46cac08f42 | |||
285b853a58 |
2
.github/workflows/codacy-code-reporter.yml
vendored
|
@ -7,7 +7,7 @@ permissions:
|
|||
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository == 'haveno-dex/haveno'
|
||||
if: github.repository == 'MoneroEcosystem/haveno'
|
||||
name: Publish coverage
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
|
|
|
@ -132,8 +132,7 @@ configure([project(':cli'),
|
|||
project(':seednode'),
|
||||
project(':statsnode'),
|
||||
project(':inventory'),
|
||||
project(':apitest'),
|
||||
//project(':bot')
|
||||
project(':apitest')
|
||||
]) {
|
||||
|
||||
apply plugin: 'application'
|
||||
|
|
|
@ -49,6 +49,7 @@ import haveno.core.api.model.MarketPriceInfo;
|
|||
import haveno.core.api.model.PaymentAccountForm;
|
||||
import haveno.core.api.model.PaymentAccountFormField;
|
||||
import haveno.core.app.AppStartupState;
|
||||
import haveno.core.filter.Filter;
|
||||
import haveno.core.monetary.Price;
|
||||
import haveno.core.offer.Offer;
|
||||
import haveno.core.offer.OfferDirection;
|
||||
|
@ -73,6 +74,7 @@ import java.util.Set;
|
|||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeoutException;
|
||||
import java.util.function.Consumer;
|
||||
import haveno.network.p2p.peers.peerexchange.Peer;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import monero.common.MoneroRpcConnection;
|
||||
|
@ -102,6 +104,7 @@ public class CoreApi {
|
|||
private final CoreWalletsService walletsService;
|
||||
private final TradeStatisticsManager tradeStatisticsManager;
|
||||
private final CoreNotificationService notificationService;
|
||||
private final CoreNetworkService networkService;
|
||||
private final XmrConnectionService xmrConnectionService;
|
||||
private final XmrLocalNode xmrLocalNode;
|
||||
|
||||
|
@ -119,6 +122,7 @@ public class CoreApi {
|
|||
CoreWalletsService walletsService,
|
||||
TradeStatisticsManager tradeStatisticsManager,
|
||||
CoreNotificationService notificationService,
|
||||
CoreNetworkService networkService,
|
||||
XmrConnectionService xmrConnectionService,
|
||||
XmrLocalNode xmrLocalNode) {
|
||||
this.config = config;
|
||||
|
@ -134,6 +138,7 @@ public class CoreApi {
|
|||
this.walletsService = walletsService;
|
||||
this.tradeStatisticsManager = tradeStatisticsManager;
|
||||
this.notificationService = notificationService;
|
||||
this.networkService = networkService;
|
||||
this.xmrConnectionService = xmrConnectionService;
|
||||
this.xmrLocalNode = xmrLocalNode;
|
||||
}
|
||||
|
@ -355,6 +360,25 @@ public class CoreApi {
|
|||
notificationService.sendNotification(notification);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Network
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//public void addNetworkListener(NetworkListener listener) {
|
||||
// networkService.addListener(listener);
|
||||
//}
|
||||
public Set<Peer> getOnlinePeers() {
|
||||
return networkService.getOnlinePeers();
|
||||
}
|
||||
|
||||
public Set<Peer> getOnlineSeedNodes() {
|
||||
return networkService.getOnlineSeedNodePeers();
|
||||
}
|
||||
|
||||
public Filter getFilter() {
|
||||
return networkService.getFilter();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Disputes
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -392,7 +416,11 @@ public class CoreApi {
|
|||
coreDisputeAgentsService.unregisterDisputeAgent(disputeAgentType, resultHandler, errorMessageHandler);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
public void getRegisteredDisputeAgents(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
|
||||
//coreDisputeAgentsService.getRegisteredDisputeAgents(resultHandler, errorMessageHandler);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////s//////////////////////////////////////////////
|
||||
// Offers
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
|
|
@ -161,6 +161,17 @@ class CoreDisputeAgentsService {
|
|||
}
|
||||
}
|
||||
|
||||
// void getRegisteredDisputeAgents(ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
|
||||
// if (!p2PService.isBootstrapped())
|
||||
// throw new IllegalStateException("p2p service is not bootstrapped yet");
|
||||
//
|
||||
// arbitratorManager.getObservableMap().forEach(entry -> {
|
||||
// if (arbitrator != null) {
|
||||
// log.info("Registered arbitrator: {}", arbitrator.getNodeAddress().getFullAddress());
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
|
||||
private void registerArbitrator(NodeAddress nodeAddress,
|
||||
List<String> languageCodes,
|
||||
ECKey ecKey,
|
||||
|
|
61
core/src/main/java/haveno/core/api/CoreNetworkService.java
Normal file
|
@ -0,0 +1,61 @@
|
|||
package haveno.core.api;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Singleton;
|
||||
import java.util.Set;
|
||||
|
||||
import haveno.network.p2p.peers.peerexchange.Peer;
|
||||
import haveno.core.filter.Filter;
|
||||
import haveno.core.filter.FilterManager;
|
||||
import haveno.network.p2p.peers.PeerManager;
|
||||
|
||||
import lombok.NonNull;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Singleton
|
||||
@Slf4j
|
||||
public class CoreNetworkService {
|
||||
|
||||
private final PeerManager peerManager;
|
||||
private final FilterManager filterManager;
|
||||
|
||||
@Inject
|
||||
public CoreNetworkService(PeerManager peerManager
|
||||
, FilterManager filterManager) {
|
||||
this.peerManager = peerManager;
|
||||
this.filterManager = filterManager;
|
||||
}
|
||||
|
||||
//public void addListener(@NonNull NetworkListener listener) {
|
||||
// synchronized (lock) {
|
||||
// listeners.add(listener);
|
||||
// }
|
||||
//}
|
||||
|
||||
Set<Peer> getOnlinePeers() {
|
||||
return peerManager.getLivePeers();
|
||||
}
|
||||
|
||||
Set<Peer> getOnlineSeedNodePeers() {
|
||||
return peerManager.getLiveSeedNodePeers();
|
||||
}
|
||||
|
||||
Filter getFilter() {
|
||||
return filterManager.getFilter();
|
||||
}
|
||||
|
||||
//public void sendNetworMessage(@NonNull NetworkMessage network_message) {
|
||||
// synchronized (lock) {
|
||||
// for (Iterator<NetworkListener> iter = listeners.iterator(); iter.hasNext(); ) {
|
||||
// NetworkListener listener = iter.next();
|
||||
// try {
|
||||
// listener.onMessage(network_message);
|
||||
// } catch (RuntimeException e) {
|
||||
// log.warn("Failed to send network envelope to listener {}: {}", listener, e.getMessage());
|
||||
// iter.remove();
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
9
core/src/main/java/haveno/core/api/NetworkListener.java
Normal file
|
@ -0,0 +1,9 @@
|
|||
package haveno.core.api;
|
||||
|
||||
import haveno.proto.grpc.NetworkMessage;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
public interface NetworkListener {
|
||||
void onMessage(@NonNull NetworkMessage network_message);
|
||||
}
|
62
core/src/main/java/haveno/core/api/model/PeerInfo.java
Normal file
|
@ -0,0 +1,62 @@
|
|||
package haveno.core.api.model;
|
||||
|
||||
import haveno.core.api.model.builder.PeerInfoBuilder;
|
||||
import haveno.network.p2p.peers.peerexchange.Peer;
|
||||
import haveno.common.Payload;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class PeerInfo implements Payload {
|
||||
|
||||
private final String nodeAddress;
|
||||
private final List<Integer> capabilities;
|
||||
|
||||
public static PeerInfo toPeerInfo(Peer peer) {
|
||||
return getBuilder(peer)
|
||||
.build();
|
||||
}
|
||||
|
||||
public PeerInfo(PeerInfoBuilder builder) {
|
||||
this.nodeAddress = builder.getNodeAddress();
|
||||
this.capabilities = builder.getCapabilities();
|
||||
}
|
||||
|
||||
private static PeerInfoBuilder getBuilder(Peer peer) {
|
||||
return new PeerInfoBuilder()
|
||||
.withNodeAddress(peer.getNodeAddress().getFullAddress());
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// PROTO BUFFER
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
public static PeerInfo fromProto(haveno.proto.grpc.PeerInfo proto) {
|
||||
return new PeerInfoBuilder()
|
||||
.withNodeAddress(proto.getNodeAddress())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public haveno.proto.grpc.PeerInfo toProtoMessage() {
|
||||
haveno.proto.grpc.PeerInfo.Builder builder = haveno.proto.grpc.PeerInfo.newBuilder()
|
||||
.setNodeAddress(nodeAddress);
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "PeerInfo{" + "\n" +
|
||||
" " + nodeAddress.toString() + "\n" +
|
||||
'}';
|
||||
}
|
||||
|
||||
public String getNodeAddress() {
|
||||
return nodeAddress;
|
||||
}
|
||||
|
||||
public List<Integer> getCapabilities() {
|
||||
return capabilities;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package haveno.core.api.model.builder;
|
||||
|
||||
import haveno.core.api.model.PeerInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* A builder helps avoid bungling use of a large OfferInfo constructor
|
||||
* argument list. If consecutive argument values of the same type are not
|
||||
* ordered correctly, the compiler won't complain but the resulting bugs could
|
||||
* be hard to find and fix.
|
||||
*/
|
||||
|
||||
public final class PeerInfoBuilder {
|
||||
|
||||
private String nodeAddress;
|
||||
|
||||
private List<Integer> capabilities;
|
||||
|
||||
public PeerInfoBuilder withNodeAddress(String nodeAddress) {
|
||||
this.nodeAddress = nodeAddress;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PeerInfoBuilder withCapabilities(List<Integer> capabilities) {
|
||||
this.capabilities = capabilities;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PeerInfo build() {
|
||||
return new PeerInfo(this);
|
||||
}
|
||||
|
||||
public String getNodeAddress() {
|
||||
return nodeAddress;
|
||||
}
|
||||
|
||||
public List<Integer> getCapabilities() {
|
||||
return capabilities;
|
||||
}
|
||||
|
||||
}
|
5
core/src/main/java/haveno/core/app/EventBusSetup.java
Normal file
|
@ -0,0 +1,5 @@
|
|||
package haveno.core.app;
|
||||
|
||||
public class EventBusSetup {
|
||||
|
||||
}
|
|
@ -126,7 +126,7 @@ public abstract class HavenoExecutable implements GracefulShutDownHandler, Haven
|
|||
System.exit(EXIT_FAILURE);
|
||||
} catch (Throwable ex) {
|
||||
System.err.println("fault: An unexpected error occurred. " +
|
||||
"Please file a report at https://github.com/haveno-dex/haveno/issues");
|
||||
"Please file a report at https://github.com/MoneroEcosystem/haveno");
|
||||
ex.printStackTrace(System.err);
|
||||
System.exit(EXIT_FAILURE);
|
||||
}
|
||||
|
@ -142,6 +142,7 @@ public abstract class HavenoExecutable implements GracefulShutDownHandler, Haven
|
|||
CommonSetup.setup(config, this);
|
||||
CoreSetup.setup(config);
|
||||
|
||||
|
||||
addCapabilities();
|
||||
|
||||
// If application is JavaFX application we need to wait until it is initialized
|
||||
|
|
|
@ -169,15 +169,19 @@ public class MobileNotificationService {
|
|||
doSend = true;
|
||||
break;
|
||||
case OFFER:
|
||||
doSend = true;
|
||||
break;
|
||||
case TRADE:
|
||||
doSend = true;
|
||||
break;
|
||||
case DISPUTE:
|
||||
doSend = useTradeNotificationsProperty.get();
|
||||
doSend = true;
|
||||
break;
|
||||
case PRICE:
|
||||
doSend = usePriceNotificationsProperty.get();
|
||||
doSend = true;
|
||||
break;
|
||||
case MARKET:
|
||||
doSend = useMarketNotificationsProperty.get();
|
||||
doSend = true;
|
||||
break;
|
||||
case ERASE:
|
||||
doSend = true;
|
||||
|
|
|
@ -107,11 +107,11 @@ public class XmrWalletService extends XmrWalletBase {
|
|||
|
||||
// monero configuration
|
||||
public static final int NUM_BLOCKS_UNLOCK = 10;
|
||||
public static final String MONERO_BINS_DIR = Config.appDataDir().getAbsolutePath();
|
||||
public static final String MONERO_BINS_DIR = System.getenv().getOrDefault("MONERO_BINS_DIR", Config.appDataDir().getAbsolutePath());
|
||||
public static final String MONERO_WALLET_RPC_NAME = Utilities.isWindows() ? "monero-wallet-rpc.exe" : "monero-wallet-rpc";
|
||||
public static final String MONERO_WALLET_RPC_PATH = MONERO_BINS_DIR + File.separator + MONERO_WALLET_RPC_NAME;
|
||||
public static final MoneroTxPriority PROTOCOL_FEE_PRIORITY = MoneroTxPriority.DEFAULT;
|
||||
public static final int MONERO_LOG_LEVEL = 1; // monero library log level, -1 to disable
|
||||
public static final int MONERO_LOG_LEVEL = -1; // monero library log level, -1 to disable
|
||||
private static final MoneroNetworkType MONERO_NETWORK_TYPE = getMoneroNetworkType();
|
||||
private static final MoneroWalletRpcManager MONERO_WALLET_RPC_MANAGER = new MoneroWalletRpcManager();
|
||||
private static final String MONERO_WALLET_RPC_USERNAME = "haveno_user";
|
||||
|
|
|
@ -1002,7 +1002,7 @@ portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=T
|
|||
(with seller receiving full trade amount back as well). \
|
||||
This way, there is no security risk, and only trade fees are lost. \n\n\
|
||||
You can request a reimbursement for lost trade fees here: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing \
|
||||
but funds have been locked in the deposit transaction.\n\n\
|
||||
If the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open \
|
||||
|
@ -1011,18 +1011,18 @@ portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=
|
|||
their security deposits (with seller receiving full trade amount back as well). \
|
||||
Otherwise the trade amount should go to the buyer. \n\n\
|
||||
You can request a reimbursement for lost trade fees here: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\n\
|
||||
Error: {0}\n\n\
|
||||
It might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation \
|
||||
ticket to get advice from Haveno mediators. \n\n\
|
||||
If the error was critical and the trade cannot be completed, you might have lost your trade fee. \
|
||||
Request a reimbursement for lost trade fees here: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\n\
|
||||
The trade cannot be completed and you might \
|
||||
have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\n\
|
||||
Do you want to move the trade to failed trades?\n\n\
|
||||
|
@ -2141,7 +2141,7 @@ popup.headline.error=Error
|
|||
popup.doNotShowAgain=Don't show again
|
||||
popup.reportError.log=Open log file
|
||||
popup.reportError.gitHub=Report to GitHub issue tracker
|
||||
popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/haveno-dex/haveno/issues.\n\
|
||||
popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/MoneroEcosystem/haveno/issues.\n\
|
||||
The above error message will be copied to the clipboard when you click either of the buttons below.\n\
|
||||
It will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report.
|
||||
|
||||
|
@ -2264,17 +2264,17 @@ popup.shutDownInProgress.msg=Shutting down application can take a few seconds.\n
|
|||
|
||||
popup.attention.forTradeWithId=Attention required for trade with ID {0}
|
||||
popup.attention.welcome.stagenet=Welcome to the Haveno test instance!\n\n\
|
||||
This platform allows you to test Haveno's protocol. Make sure to follow the instructions[HYPERLINK:https://github.com/haveno-dex/haveno/blob/master/docs/installing.md].\n\n\
|
||||
If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
|
||||
This platform allows you to test Haveno's protocol. Make sure to follow the instructions[HYPERLINK:https://github.com/MoneroEcosystem/haveno/blob/master/docs/installing.md].\n\n\
|
||||
If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\
|
||||
This is a test instance. Do not use real money!
|
||||
popup.attention.welcome.mainnet=Welcome to Haveno!\n\n\
|
||||
This platform allows you to trade Monero for fiat currencies or other cryptocurrencies in a decentralized way.\n\n\
|
||||
Get started by creating a new payment account then making or taking an offer.\n\n\
|
||||
If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].
|
||||
If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].
|
||||
popup.attention.welcome.mainnet.test=Welcome to Haveno!\n\n\
|
||||
This platform allows you to trade Monero for fiat currencies or other cryptocurrencies in a decentralized way.\n\n\
|
||||
Get started by creating a new payment account then making or taking an offer.\n\n\
|
||||
If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
|
||||
If you encounter any problem, please let us know by opening an issue [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\
|
||||
Haveno was recently released for public testing. Please use small amounts!
|
||||
|
||||
popup.info.multiplePaymentAccounts.headline=Multiple payment accounts available
|
||||
|
|
|
@ -967,7 +967,7 @@ portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=Z
|
|||
(přičemž prodejce také obdrží plnou částku obchodu). \
|
||||
Tímto způsobem nehrozí žádné bezpečnostní riziko a jsou ztraceny pouze obchodní poplatky.\n\n\
|
||||
O vrácení ztracených obchodních poplatků můžete požádat zde: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Zpožděná výplatní transakce chybí, \
|
||||
ale prostředky byly v depozitní transakci uzamčeny.\n\n\
|
||||
Pokud kupujícímu chybí také odložená výplatní transakce, bude poučen, aby platbu NEPOSLAL a místo toho otevřel \
|
||||
|
@ -976,18 +976,18 @@ portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=
|
|||
svých bezpečnostních vkladů (přičemž prodejce také obdrží plnou částku obchodu). \
|
||||
Jinak by částka obchodu měla jít kupujícímu.\n\n\
|
||||
O vrácení ztracených obchodních poplatků můžete požádat zde: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=Během provádění obchodního protokolu došlo k chybě.\n\n
|
||||
Chyba: {0}\n\n\
|
||||
Je možné, že tato chyba není kritická a obchod lze dokončit normálně. Pokud si nejste jisti, otevřete si mediační úkol \
|
||||
a získejte radu od mediátorů Haveno.\n\n\
|
||||
Pokud byla chyba kritická a obchod nelze dokončit, možná jste ztratili obchodní poplatek. \
|
||||
O vrácení ztracených obchodních poplatků požádejte zde: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=Obchodní kontrakt není stanoven.\n\n\
|
||||
Obchod nelze dokončit a možná jste ztratili poplatek \
|
||||
za obchodování. Pokud ano, můžete požádat o vrácení ztracených obchodních poplatků zde: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=Obchodní protokol narazil na některé problémy.\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Obchodní protokol narazil na vážný problém.\n\n{0}\n\n\
|
||||
Chcete obchod přesunout do neúspěšných obchodů?\n\n\
|
||||
|
@ -2099,7 +2099,7 @@ popup.headline.error=Chyba
|
|||
popup.doNotShowAgain=Znovu nezobrazovat
|
||||
popup.reportError.log=Otevřít log
|
||||
popup.reportError.gitHub=Nahlaste problém na GitHub
|
||||
popup.reportError={0}\n\nChcete-li nám pomoci vylepšit software, nahlaste tuto chybu otevřením nového problému na adrese https://github.com/haveno-dex/haveno/issues.\n\
|
||||
popup.reportError={0}\n\nChcete-li nám pomoci vylepšit software, nahlaste tuto chybu otevřením nového problému na adrese https://github.com/MoneroEcosystem/haveno/issues.\n\
|
||||
Výše uvedená chybová zpráva bude zkopírována do schránky po kliknutí na některé z níže uvedených tlačítek.\n\
|
||||
Usnadníte ladění, pokud zahrnete soubor haveno.log stisknutím tlačítka 'Otevřít log soubor', uložením kopie a připojením ke hlášení chyby.
|
||||
|
||||
|
@ -2222,17 +2222,17 @@ popup.shutDownInProgress.msg=Vypnutí aplikace může trvat několik sekund.\nPr
|
|||
|
||||
popup.attention.forTradeWithId=Je třeba věnovat pozornost obchodu ID {0}
|
||||
popup.attention.welcome.stagenet=Vítejte v testovací instanci Haveno!\n\n\
|
||||
Tato platforma umožňuje testovat protokol Haveno. Ujistěte se, že postupujete podle pokynů [HYPERLINK:https://github.com/haveno-dex/haveno/blob/master/docs/installing.md].\n\n\
|
||||
Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
|
||||
Tato platforma umožňuje testovat protokol Haveno. Ujistěte se, že postupujete podle pokynů [HYPERLINK:https://github.com/MoneroEcosystem/haveno/blob/master/docs/installing.md].\n\n\
|
||||
Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\
|
||||
Jedná se o testovací instanci. Nepoužívejte skutečné peníze!
|
||||
popup.attention.welcome.mainnet=Vítejte v Haveno!\n\n\
|
||||
Tato platforma umožňuje decentralizovaně obchodovat s měnou Monero za fiat měny nebo jiné kryptoměny.\n\n\
|
||||
Začněte tím, že si vytvoříte nový platební účet a poté vytvoříte nebo přijmete nabídku.\n\n\
|
||||
Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].
|
||||
Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].
|
||||
popup.attention.welcome.mainnet.test=Vítejte v Haveno!\n\n\
|
||||
Tato platforma umožňuje decentralizovaně obchodovat s měnou Monero za fiat měny nebo jiné kryptoměny.\n\n\
|
||||
Začněte tím, že si vytvoříte nový platební účet a poté vytvoříte nebo přijmete nabídku.\n\n\
|
||||
Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
|
||||
Pokud narazíte na nějaký problém, dejte nám prosím vědět [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\
|
||||
Systém Haveno byl nedávno uvolněn k veřejnému testování. Používejte prosím nízké částky!
|
||||
|
||||
popup.info.multiplePaymentAccounts.headline=K dispozici jsou účty a více platebními metodami
|
||||
|
|
|
@ -821,10 +821,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=Sie haben bereits akzept
|
|||
portfolio.pending.failedTrade.taker.missingTakerFeeTx=Die Transaktion der Abnehmer-Gebühr fehlt.\n\nOhne diese tx kann der Handel nicht abgeschlossen werden. Keine Gelder wurden gesperrt und keine Handelsgebühr wurde bezahlt. Sie können diesen Handel zu den fehlgeschlagenen Händeln verschieben.
|
||||
portfolio.pending.failedTrade.maker.missingTakerFeeTx=Die Transaktion der Abnehmer-Gebühr fehlt.\n\nOhne diese tx kann der Handel nicht abgeschlossen werden. Keine Gelder wurden gesperrt. Ihr Angebot ist für andere Händler weiterhin verfügbar. Sie haben die Ersteller-Gebühr also nicht verloren. Sie können diesen Handel zu den fehlgeschlagenen Händeln verschieben.
|
||||
portfolio.pending.failedTrade.missingDepositTx=Eine Einzahlungstransaktion fehlt.\n\nDiese Transaktion ist erforderlich, um den Handel abzuschließen. Bitte stellen Sie sicher, dass Ihre Wallet vollständig mit der Monero-Blockchain synchronisiert ist.\n\nSie können diesen Handel in den Bereich „Fehlgeschlagene Trades“ verschieben, um ihn zu deaktivieren.
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=Die verzögerte Auszahlungstransaktion fehlt, aber die Gelder wurden in der Einzahlungstransaktion gesperrt.\n\nBitte schicken Sie KEINE Geld-(Traditional-) oder Crypto-Zahlungen an den XMR Verkäufer, weil ohne die verzögerte Auszahlungstransaktion später kein Schlichtungsverfahren eröffnet werden kann. Stattdessen öffnen Sie ein Vermittlungs-Ticket mit Cmd/Strg+o. Der Vermittler sollte vorschlagen, dass beide Handelspartner ihre vollständige Sicherheitskaution zurückerstattet bekommen (und der Verkäufer auch seinen Handels-Betrag). Durch diese Vorgehensweise entsteht kein Sicherheitsrisiko und es geht ausschließlich die Handelsgebühr verloren.\n\nSie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Die verzögerte Auszahlungstransaktion fehlt, aber die Gelder wurden in der Einzahlungstransaktion gesperrt.\n\nWenn dem Käufer die verzögerte Auszahlungstransaktion auch fehlt, wird er dazu aufgefordert die Bezahlung NICHT zu schicken und stattdessen ein Vermittlungs-Ticket zu eröffnen. Sie sollten auch ein Vermittlungs-Ticket mit Cmd/Strg+o öffnen.\n\nWenn der Käufer die Zahlung noch nicht geschickt hat, sollte der Vermittler vorschlagen, dass beide Handelspartner ihre Sicherheitskaution vollständig zurückerhalten (und der Verkäufer auch den Handels-Betrag). Anderenfalls sollte der Handels-Betrag an den Käufer gehen.\n\nSie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=Während der Ausführung des Handel-Protokolls ist ein Fehler aufgetreten.\n\nFehler: {0}\n\nEs kann sein, dass dieser Fehler nicht gravierend ist und der Handel ganz normal abgeschlossen werden kann. Wenn Sie sich unsicher sind, öffnen Sie ein Vermittlungs-Ticket um den Rat eines Haveno Vermittlers zu erhalten.\n\nWenn der Fehler gravierend war, kann der Handel nicht abgeschlossen werden und Sie haben vielleicht die Handelsgebühr verloren. Sie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=Der Handelsvertrag ist nicht festgelegt.\n\nDer Handel kann nicht abgeschlossen werden und Sie haben möglicherweise die Handelsgebühr verloren. Sollte das der Fall sein, können Sie eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier beantragen: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=Die verzögerte Auszahlungstransaktion fehlt, aber die Gelder wurden in der Einzahlungstransaktion gesperrt.\n\nBitte schicken Sie KEINE Geld-(Traditional-) oder Crypto-Zahlungen an den XMR Verkäufer, weil ohne die verzögerte Auszahlungstransaktion später kein Schlichtungsverfahren eröffnet werden kann. Stattdessen öffnen Sie ein Vermittlungs-Ticket mit Cmd/Strg+o. Der Vermittler sollte vorschlagen, dass beide Handelspartner ihre vollständige Sicherheitskaution zurückerstattet bekommen (und der Verkäufer auch seinen Handels-Betrag). Durch diese Vorgehensweise entsteht kein Sicherheitsrisiko und es geht ausschließlich die Handelsgebühr verloren.\n\nSie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Die verzögerte Auszahlungstransaktion fehlt, aber die Gelder wurden in der Einzahlungstransaktion gesperrt.\n\nWenn dem Käufer die verzögerte Auszahlungstransaktion auch fehlt, wird er dazu aufgefordert die Bezahlung NICHT zu schicken und stattdessen ein Vermittlungs-Ticket zu eröffnen. Sie sollten auch ein Vermittlungs-Ticket mit Cmd/Strg+o öffnen.\n\nWenn der Käufer die Zahlung noch nicht geschickt hat, sollte der Vermittler vorschlagen, dass beide Handelspartner ihre Sicherheitskaution vollständig zurückerhalten (und der Verkäufer auch den Handels-Betrag). Anderenfalls sollte der Handels-Betrag an den Käufer gehen.\n\nSie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=Während der Ausführung des Handel-Protokolls ist ein Fehler aufgetreten.\n\nFehler: {0}\n\nEs kann sein, dass dieser Fehler nicht gravierend ist und der Handel ganz normal abgeschlossen werden kann. Wenn Sie sich unsicher sind, öffnen Sie ein Vermittlungs-Ticket um den Rat eines Haveno Vermittlers zu erhalten.\n\nWenn der Fehler gravierend war, kann der Handel nicht abgeschlossen werden und Sie haben vielleicht die Handelsgebühr verloren. Sie können eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier erbitten: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=Der Handelsvertrag ist nicht festgelegt.\n\nDer Handel kann nicht abgeschlossen werden und Sie haben möglicherweise die Handelsgebühr verloren. Sollte das der Fall sein, können Sie eine Rückerstattung der verlorenen gegangenen Handelsgebühren hier beantragen: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=Das Handels-Protokoll hat ein paar Probleme gefunden.\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Das Handels-Protokoll hat ein schwerwiegendes Problem gefunden.\n\n{0}\n\nWollen Sie den Handel zu den fehlgeschlagenen Händeln verschieben?\n\nSie können keine Vermittlungs- oder Schlichtungsverfahren auf der Seite für fehlgeschlagene Händel eröffnen, aber Sie können einen fehlgeschlagene Handel wieder auf die Seite der offenen Händeln zurück verschieben.
|
||||
portfolio.pending.failedTrade.txChainValid.moveToFailed=Das Handels-Protokoll hat ein paar Probleme gefunden.\n\n{0}\n\nDie Transaktionen des Handels wurden veröffentlicht und die Gelder sind gesperrt. Verschieben Sie den Handel nur dann zu den fehlgeschlagenen Händeln, wenn Sie sich wirklich sicher sind. Dies könnte Optionen zur Behebung des Problems verhindern.\n\nWollen Sie den Handel zu den fehlgeschlagenen Händeln verschieben?\n\nSie können keine Vermittlungs- oder Schlichtungsverfahren auf der Seite für fehlgeschlagene Händel eröffnen, aber Sie können einen fehlgeschlagene Handel wieder auf die Seite der offenen Händeln zurück verschieben.
|
||||
|
@ -1590,7 +1590,7 @@ popup.headline.error=Fehler
|
|||
popup.doNotShowAgain=Nicht erneut anzeigen
|
||||
popup.reportError.log=Protokolldatei öffnen
|
||||
popup.reportError.gitHub=Auf GitHub-Issue-Tracker melden
|
||||
popup.reportError={0}\n\nUm uns bei der Verbesserung der Software zu helfen, erstellen Sie bitte einen Fehler-Bericht auf https://github.com/haveno-dex/haveno/issues.\nDie Fehlermeldung wird in die Zwischenablage kopiert, wenn Sie auf einen der Knöpfe unten klicken.\nEs wird das Debuggen einfacher machen, wenn Sie die haveno.log Datei anfügen indem Sie "Logdatei öffnen" klicken, eine Kopie speichern und diese dem Fehler-Bericht anfügen.
|
||||
popup.reportError={0}\n\nUm uns bei der Verbesserung der Software zu helfen, erstellen Sie bitte einen Fehler-Bericht auf https://github.com/MoneroEcosystem/haveno/issues.\nDie Fehlermeldung wird in die Zwischenablage kopiert, wenn Sie auf einen der Knöpfe unten klicken.\nEs wird das Debuggen einfacher machen, wenn Sie die haveno.log Datei anfügen indem Sie "Logdatei öffnen" klicken, eine Kopie speichern und diese dem Fehler-Bericht anfügen.
|
||||
|
||||
popup.error.tryRestart=Versuchen Sie bitte Ihre Anwendung neu zu starten und überprüfen Sie Ihre Netzwerkverbindung um zu sehen, ob Sie das Problem beheben können.
|
||||
popup.error.takeOfferRequestFailed=Es ist ein Fehler aufgetreten, als jemand versuchte eins Ihrer Angebote anzunehmen:\n{0}
|
||||
|
|
|
@ -820,10 +820,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=You've already accepted
|
|||
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.missingDepositTx=یک تراکنش واریز مفقود است.\n\nاین تراکنش برای تکمیل معامله لازم است. لطفاً اطمینان حاصل کنید که کیف پول شما بهطور کامل با بلاکچین مونرو همگامسازی شده است.\n\nمیتوانید این معامله را به بخش «معاملات ناموفق» منتقل کنید تا غیرفعال شود.
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
|
@ -1586,7 +1586,7 @@ popup.headline.error=خطا
|
|||
popup.doNotShowAgain=دوباره نشان نده
|
||||
popup.reportError.log=باز کردن فایل گزارش
|
||||
popup.reportError.gitHub=گزارش به پیگیر مسائل GitHub
|
||||
popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/haveno-dex/haveno/issues.\nThe above error message will be copied to the clipboard when you click either of the buttons below.\nIt will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report.
|
||||
popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/MoneroEcosystem/haveno/issues.\nThe above error message will be copied to the clipboard when you click either of the buttons below.\nIt will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report.
|
||||
|
||||
popup.error.tryRestart=لطفاً سعی کنید برنامه را مجدداً راه اندازی کنید و اتصال شبکه خود را بررسی کنید تا ببینید آیا می توانید مشکل را حل کنید یا خیر.
|
||||
popup.error.takeOfferRequestFailed=وقتی کسی تلاش کرد تا یکی از پیشنهادات شما را بپذیرد خطایی رخ داد:\n{0}
|
||||
|
|
|
@ -822,10 +822,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=Vous avez déjà accept
|
|||
portfolio.pending.failedTrade.taker.missingTakerFeeTx=Le frais de transaction du preneur est manquant.\n\nSans ce tx, le trade ne peut être complété. Aucun fonds ont été verrouillés et aucun frais de trade a été payé. Vous pouvez déplacer ce trade vers les trade échoués.
|
||||
portfolio.pending.failedTrade.maker.missingTakerFeeTx=Le frais de transaction du pair preneur est manquant.\n\nSans ce tx, le trade ne peut être complété. Aucun fonds ont été verrouillés. Votre offre est toujours valable pour les autres traders, vous n'avez donc pas perdu le frais de maker. Vous pouvez déplacer ce trade vers les trades échoués.
|
||||
portfolio.pending.failedTrade.missingDepositTx=Une transaction de dépôt est manquante.\n\nCette transaction est nécessaire pour compléter la transaction. Veuillez vous assurer que votre portefeuille est entièrement synchronisé avec la blockchain Monero.\n\nVous pouvez déplacer cette transaction dans la section « Transactions échouées » pour la désactiver.
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=La transaction de paiement différée est manquante, mais les fonds ont été verrouillés dans la transaction de dépôt.\n\nVeuillez NE PAS envoyer de Fiat ou d'crypto au vendeur de XMR, car avec le tx de paiement différé, le jugemenbt ne peut être ouvert. À la place, ouvrez un ticket de médiation avec Cmd/Ctrl+O. Le médiateur devrait suggérer que les deux pair reçoivent tous les deux le montant total de leurs dépôts de sécurité (le vendeur aussi doit reçevoir le montant total du trade). De cette manière, il n'y a pas de risque de non sécurité, et seuls les frais du trade sont perdus.\n\nVous pouvez demander le remboursement des frais de trade perdus ici;\n[LIEN:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=La transaction de paiement différée est manquante, mais les fonds ont été verrouillés dans la transaction de dépôt.\n\nSi l'acheteur n'a pas non plus la transaction de paiement différée, il sera informé du fait de ne PAS envoyer le paiement et d'ouvrir un ticket de médiation à la place. Vous devriez aussi ouvrir un ticket de médiation avec Cmd/Ctrl+o.\n\nSi l'acheteur n'a pas encore envoyé le paiement, le médiateur devrait suggérer que les deux pairs reçoivent le montant total de leurs dépôts de sécurité (le vendeur doit aussi reçevoir le montant total du trade). Sinon, le montant du trade revient à l'acheteur.\n\nVous pouvez effectuer une demande de remboursement pour les frais de trade perdus ici: [LIEN:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=Il y'a eu une erreur durant l'exécution du protocole de trade.\n\nErreur: {0}\n\nIl est possible que cette erreur ne soit pas critique, et que le trade puisse être complété normalement. Si vous n'en êtes pas sûr, ouvrez un ticket de médiation pour avoir des conseils de la part des médiateurs de Haveno.\n\nSi cette erreur est critique et que le trade ne peut être complété, il est possible que vous ayez perdu le frais du trade. Effectuez une demande de remboursement ici: [LIEN:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=Le contrat de trade n'est pas complété.\n\nCe trade ne peut être complété et il est possible que vous ayiez perdu votre frais de trade. Dans ce cas, vous pouvez demander un remboursement des frais de trade perdus ici: [LIEN:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=La transaction de paiement différée est manquante, mais les fonds ont été verrouillés dans la transaction de dépôt.\n\nVeuillez NE PAS envoyer de Fiat ou d'crypto au vendeur de XMR, car avec le tx de paiement différé, le jugemenbt ne peut être ouvert. À la place, ouvrez un ticket de médiation avec Cmd/Ctrl+O. Le médiateur devrait suggérer que les deux pair reçoivent tous les deux le montant total de leurs dépôts de sécurité (le vendeur aussi doit reçevoir le montant total du trade). De cette manière, il n'y a pas de risque de non sécurité, et seuls les frais du trade sont perdus.\n\nVous pouvez demander le remboursement des frais de trade perdus ici;\n[LIEN:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=La transaction de paiement différée est manquante, mais les fonds ont été verrouillés dans la transaction de dépôt.\n\nSi l'acheteur n'a pas non plus la transaction de paiement différée, il sera informé du fait de ne PAS envoyer le paiement et d'ouvrir un ticket de médiation à la place. Vous devriez aussi ouvrir un ticket de médiation avec Cmd/Ctrl+o.\n\nSi l'acheteur n'a pas encore envoyé le paiement, le médiateur devrait suggérer que les deux pairs reçoivent le montant total de leurs dépôts de sécurité (le vendeur doit aussi reçevoir le montant total du trade). Sinon, le montant du trade revient à l'acheteur.\n\nVous pouvez effectuer une demande de remboursement pour les frais de trade perdus ici: [LIEN:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=Il y'a eu une erreur durant l'exécution du protocole de trade.\n\nErreur: {0}\n\nIl est possible que cette erreur ne soit pas critique, et que le trade puisse être complété normalement. Si vous n'en êtes pas sûr, ouvrez un ticket de médiation pour avoir des conseils de la part des médiateurs de Haveno.\n\nSi cette erreur est critique et que le trade ne peut être complété, il est possible que vous ayez perdu le frais du trade. Effectuez une demande de remboursement ici: [LIEN:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=Le contrat de trade n'est pas complété.\n\nCe trade ne peut être complété et il est possible que vous ayiez perdu votre frais de trade. Dans ce cas, vous pouvez demander un remboursement des frais de trade perdus ici: [LIEN:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=Le protocole de trade a rencontré quelques problèmes/\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Le protocole de trade a rencontré un problème critique.\n\n{0}\n\nVoulez-vous déplacer ce trade vers les trades échoués?\n\nVous ne pouvez pas ouvrir de médiations ou de jugements depuis la liste des trades échoués, mais vous pouvez redéplacer un trade échoué vers l'écran des trades ouverts quand vous le souhaitez.
|
||||
portfolio.pending.failedTrade.txChainValid.moveToFailed=Il y a des problèmes avec cet accord de transaction. \n\n{0}\n\nLa transaction de devis a été validée et les fonds ont été bloqués. Déplacer la transaction vers une transaction échouée uniquement si elle est certaine. Cela peut empêcher les options disponibles pour résoudre le problème. \n\nÊtes-vous sûr de vouloir déplacer cette transaction vers la transaction échouée? \n\nVous ne pouvez pas ouvrir une médiation ou un arbitrage dans une transaction échouée, mais vous pouvez déplacer une transaction échouée vers la transaction incomplète à tout moment.
|
||||
|
@ -1592,7 +1592,7 @@ popup.headline.error=Erreur
|
|||
popup.doNotShowAgain=Ne plus montrer
|
||||
popup.reportError.log=Ouvrir le dossier de log
|
||||
popup.reportError.gitHub=Signaler au Tracker de problème GitHub
|
||||
popup.reportError={0}\n\nAfin de nous aider à améliorer le logiciel, veuillez signaler ce bug en ouvrant un nouveau ticket de support sur https://github.com/haveno-dex/haveno/issues.\nLe message d''erreur ci-dessus sera copié dans le presse-papier lorsque vous cliquerez sur l''un des boutons ci-dessous.\nCela facilitera le dépannage si vous incluez le fichier haveno.log en appuyant sur "ouvrir le fichier de log", en sauvegardant une copie, et en l''attachant à votre rapport de bug.
|
||||
popup.reportError={0}\n\nAfin de nous aider à améliorer le logiciel, veuillez signaler ce bug en ouvrant un nouveau ticket de support sur https://github.com/MoneroEcosystem/haveno/issues.\nLe message d''erreur ci-dessus sera copié dans le presse-papier lorsque vous cliquerez sur l''un des boutons ci-dessous.\nCela facilitera le dépannage si vous incluez le fichier haveno.log en appuyant sur "ouvrir le fichier de log", en sauvegardant une copie, et en l''attachant à votre rapport de bug.
|
||||
|
||||
popup.error.tryRestart=Veuillez essayer de redémarrer votre application et vérifier votre connexion réseau pour voir si vous pouvez résoudre ce problème.
|
||||
popup.error.takeOfferRequestFailed=Une erreur est survenue pendant que quelqu''un essayait d''accepter l''un de vos ordres:\n{0}
|
||||
|
|
|
@ -821,10 +821,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=すでに受け入れて
|
|||
portfolio.pending.failedTrade.taker.missingTakerFeeTx=欠測テイカー手数料のトランザクション。\n\nこのtxがなければ、トレードを完了できません。資金はロックされず、トレード手数料は支払いませんでした。「失敗トレード」へ送ることができます。
|
||||
portfolio.pending.failedTrade.maker.missingTakerFeeTx=ピアのテイカー手数料のトランザクションは欠測します。\n\nこのtxがなければ、トレードを完了できません。資金はロックされませんでした。あなたのオファーがまだ他の取引者には有効ですので、メイカー手数料は失っていません。このトレードを「失敗トレード」へ送ることができます。
|
||||
portfolio.pending.failedTrade.missingDepositTx=入金トランザクションが見つかりません。\n\nこのトランザクションは取引を完了するために必要です。Moneroブロックチェーンとウォレットが完全に同期されていることを確認してください。\n\nこの取引を「失敗した取引」セクションに移動して、無効化することができます。
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=遅延支払いトランザクションは欠測しますが、資金は入金トランザクションにロックされました。\n\nこの法定通貨・アルトコイン支払いをXMR売り手に送信しないで下さい。遅延支払いtxがなければ、係争仲裁は開始されることができません。代りに、「Cmd/Ctrl+o」で調停チケットをオープンして下さい。調停者はおそらく両方のピアへセキュリティデポジットの全額を払い戻しを提案します(売り手はトレード金額も払い戻しを受ける)。このような方法でセキュリティーのリスクがなし、トレード手数料のみが失われます。\n\n失われたトレード手数料の払い戻し要求はここから提出できます: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=遅延支払いトランザクションは欠測しますが、資金は入金トランザクションにロックされました。\n\n買い手の遅延支払いトランザクションが同じく欠測される場合、相手は支払いを送信せず調停チケットをオープンするように指示されます。同様に「Cmd/Ctrl+o」で調停チケットをオープンするのは賢明でしょう。\n\n買い手はまだ支払いを送信しなかった場合、調停者はおそらく両方のピアへセキュリティデポジットの全額を払い戻しを提案します(売り手はトレード金額も払い戻しを受ける)。さもなければ、トレード金額は買い手に支払われるでしょう。\n\n失われたトレード手数料の払い戻し要求はここから提出できます: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=トレードプロトコルの実行にはエラーが生じました。\n\nエラー: {0}\n\nクリティカル・エラーではない可能性はあり、トレードは普通に完了できるかもしれない。迷う場合は調停チケットをオープンして、Haveno調停者からアドバイスを受けることができます。\n\nクリティカル・エラーでトレードが完了できなかった場合はトレード手数料は失われた可能性があります。失われたトレード手数料の払い戻し要求はここから提出できます: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=トレード契約書は設定されません。\n\nトレードは完了できません。トレード手数料は失われた可能性もあります。その場合は失われたトレード手数料の払い戻し要求はここから提出できます: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=遅延支払いトランザクションは欠測しますが、資金は入金トランザクションにロックされました。\n\nこの法定通貨・アルトコイン支払いをXMR売り手に送信しないで下さい。遅延支払いtxがなければ、係争仲裁は開始されることができません。代りに、「Cmd/Ctrl+o」で調停チケットをオープンして下さい。調停者はおそらく両方のピアへセキュリティデポジットの全額を払い戻しを提案します(売り手はトレード金額も払い戻しを受ける)。このような方法でセキュリティーのリスクがなし、トレード手数料のみが失われます。\n\n失われたトレード手数料の払い戻し要求はここから提出できます: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=遅延支払いトランザクションは欠測しますが、資金は入金トランザクションにロックされました。\n\n買い手の遅延支払いトランザクションが同じく欠測される場合、相手は支払いを送信せず調停チケットをオープンするように指示されます。同様に「Cmd/Ctrl+o」で調停チケットをオープンするのは賢明でしょう。\n\n買い手はまだ支払いを送信しなかった場合、調停者はおそらく両方のピアへセキュリティデポジットの全額を払い戻しを提案します(売り手はトレード金額も払い戻しを受ける)。さもなければ、トレード金額は買い手に支払われるでしょう。\n\n失われたトレード手数料の払い戻し要求はここから提出できます: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=トレードプロトコルの実行にはエラーが生じました。\n\nエラー: {0}\n\nクリティカル・エラーではない可能性はあり、トレードは普通に完了できるかもしれない。迷う場合は調停チケットをオープンして、Haveno調停者からアドバイスを受けることができます。\n\nクリティカル・エラーでトレードが完了できなかった場合はトレード手数料は失われた可能性があります。失われたトレード手数料の払い戻し要求はここから提出できます: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=トレード契約書は設定されません。\n\nトレードは完了できません。トレード手数料は失われた可能性もあります。その場合は失われたトレード手数料の払い戻し要求はここから提出できます: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=トレードプロトコルは問題に遭遇しました。\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=トレードプロトコルは深刻な問題に遭遇しました。\n\n{0}\n\nトレードを「失敗トレード」へ送りますか?\n\n「失敗トレード」画面から調停・仲裁を開始できませんけど、失敗トレードがいつでも「オープントレード」へ戻されることができます。
|
||||
portfolio.pending.failedTrade.txChainValid.moveToFailed=トレードプロトコルは問題に遭遇しました。\n\n{0}\n\nトレードのトランザクションは公開され、資金はロックされました。絶対に確信している場合のみにトレードを「失敗トレード」へ送りましょう。問題を解決できる選択肢に邪魔する可能性はあります。\n\nトレードを「失敗トレード」へ送りますか?\n\n「失敗トレード」画面から調停・仲裁を開始できませんけど、失敗トレードがいつでも「オープントレード」へ戻されることができます。
|
||||
|
@ -1590,7 +1590,7 @@ popup.headline.error=エラー
|
|||
popup.doNotShowAgain=次回から表示しない
|
||||
popup.reportError.log=ログファイルを開く
|
||||
popup.reportError.gitHub=GitHub issue trackerに報告
|
||||
popup.reportError={0}\n\nソフトウェアの改善に役立てるため、https://github.com/haveno-dex/haveno/issues で新しい issue を開いてこのバグを報告してください。\n下のボタンのいずれかをクリックすると、上記のエラーメッセージがクリップボードにコピーされます。\n「ログファイルを開く」を押して、コピーを保存し、バグレポートに添付されるhaveno.logファイル含めると、デバッグが容易になります。
|
||||
popup.reportError={0}\n\nソフトウェアの改善に役立てるため、https://github.com/MoneroEcosystem/haveno/issues で新しい issue を開いてこのバグを報告してください。\n下のボタンのいずれかをクリックすると、上記のエラーメッセージがクリップボードにコピーされます。\n「ログファイルを開く」を押して、コピーを保存し、バグレポートに添付されるhaveno.logファイル含めると、デバッグが容易になります。
|
||||
|
||||
popup.error.tryRestart=アプリケーションを再起動し、ネットワーク接続を確認して問題を解決できるかどうかを確認してください。
|
||||
popup.error.takeOfferRequestFailed=誰かがあなたのいずれかのオファーを受けようと時にエラーが発生しました:\n{0}
|
||||
|
|
|
@ -823,10 +823,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=Você já aceitou
|
|||
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.missingDepositTx=Uma transação de depósito está faltando.\n\nEssa transação é necessária para concluir a negociação. Por favor, certifique-se de que sua carteira esteja totalmente sincronizada com a blockchain do Monero.\n\nVocê pode mover esta negociação para a seção "Negociações Falhas" para desativá-la.
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
|
@ -1594,7 +1594,7 @@ popup.headline.error=Erro
|
|||
popup.doNotShowAgain=Não mostrar novamente
|
||||
popup.reportError.log=Abrir arquivo de log
|
||||
popup.reportError.gitHub=Reportar à lista de problemas no GitHub
|
||||
popup.reportError={0}\n\nPara nos ajudar a melhorar o aplicativo, reporte o bug criando um relatório (Issue) em nossa página do GitHub em https://github.com/haveno-dex/haveno/issues.\n\nA mensagem de erro exibida acima será copiada para a área de transferência quando você clicar qualquer um dos botões abaixo.\nA solução de problemas será mais fácil se você anexar o arquivo haveno.log ao clicar em "Abrir arquivo de log", salvando uma cópia e incluindo-a em seu relatório do problema (Issue) no GitHub.
|
||||
popup.reportError={0}\n\nPara nos ajudar a melhorar o aplicativo, reporte o bug criando um relatório (Issue) em nossa página do GitHub em https://github.com/MoneroEcosystem/haveno/issues.\n\nA mensagem de erro exibida acima será copiada para a área de transferência quando você clicar qualquer um dos botões abaixo.\nA solução de problemas será mais fácil se você anexar o arquivo haveno.log ao clicar em "Abrir arquivo de log", salvando uma cópia e incluindo-a em seu relatório do problema (Issue) no GitHub.
|
||||
|
||||
popup.error.tryRestart=Por favor, reinicie o aplicativo e verifique sua conexão de Internet para ver se o problema foi resolvido.
|
||||
popup.error.takeOfferRequestFailed=Houve um quando alguém tentou aceitar uma de suas ofertas:\n{0}
|
||||
|
|
|
@ -820,10 +820,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=You've already accepted
|
|||
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.missingDepositTx=Отсутствует транзакция депозита.\n\nЭта транзакция необходима для завершения сделки. Пожалуйста, убедитесь, что ваш кошелёк полностью синхронизирован с блокчейном Monero.\n\nВы можете переместить эту сделку в раздел "Неудачные сделки", чтобы деактивировать её.
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
|
@ -1587,7 +1587,7 @@ popup.headline.error=Ошибка
|
|||
popup.doNotShowAgain=Не показывать снова
|
||||
popup.reportError.log=Открыть файл журнала
|
||||
popup.reportError.gitHub=Сообщить о проблеме в Github
|
||||
popup.reportError={0}\n\nЧтобы помочь нам улучшить приложение, просьба сообщить об ошибке, открыв новую тему на https://github.com/haveno-dex/haveno/issues. \nСообщение об ошибке будет скопировано в буфер обмена при нажатии любой из кнопок ниже.\nЕсли вы прикрепите к отчету о неисправности файл журнала haveno.log, нажав «Открыть файл журнала» и сохранив его копию, это поможет нам разобраться с проблемой быстрее.
|
||||
popup.reportError={0}\n\nЧтобы помочь нам улучшить приложение, просьба сообщить об ошибке, открыв новую тему на https://github.com/MoneroEcosystem/haveno/issues. \nСообщение об ошибке будет скопировано в буфер обмена при нажатии любой из кнопок ниже.\nЕсли вы прикрепите к отчету о неисправности файл журнала haveno.log, нажав «Открыть файл журнала» и сохранив его копию, это поможет нам разобраться с проблемой быстрее.
|
||||
|
||||
popup.error.tryRestart=Попробуйте перезагрузить приложение и проверьте подключение к сети, чтобы попробовать решить проблему.
|
||||
popup.error.takeOfferRequestFailed=Произошла ошибка, когда контрагент попытался принять одно из ваших предложений:\n{0}
|
||||
|
|
|
@ -820,10 +820,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=You've already accepted
|
|||
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.missingDepositTx=ธุรกรรมเงินมัดจำหายไป\n\nธุรกรรมนี้จำเป็นสำหรับการดำเนินการซื้อขายให้เสร็จสมบูรณ์ กรุณาตรวจสอบให้แน่ใจว่า Wallet ของคุณได้ซิงค์กับบล็อกเชน Monero อย่างสมบูรณ์แล้ว\n\nคุณสามารถย้ายการซื้อขายนี้ไปยังส่วน "การซื้อขายที่ล้มเหลว" เพื่อปิดการใช้งานได้
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
|
@ -1587,7 +1587,7 @@ popup.headline.error=ผิดพลาด
|
|||
popup.doNotShowAgain=ไม่ต้องแสดงอีกครั้ง
|
||||
popup.reportError.log=เปิดไฟล์ที่บันทึก
|
||||
popup.reportError.gitHub=รายงานไปที่ตัวติดตามปัญหา GitHub
|
||||
popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/haveno-dex/haveno/issues.\nThe above error message will be copied to the clipboard when you click either of the buttons below.\nIt will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report.
|
||||
popup.reportError={0}\n\nTo help us to improve the software please report this bug by opening a new issue at https://github.com/MoneroEcosystem/haveno/issues.\nThe above error message will be copied to the clipboard when you click either of the buttons below.\nIt will make debugging easier if you include the haveno.log file by pressing "Open log file", saving a copy, and attaching it to your bug report.
|
||||
|
||||
popup.error.tryRestart=โปรดลองเริ่มแอปพลิเคชั่นของคุณใหม่และตรวจสอบการเชื่อมต่อเครือข่ายของคุณเพื่อดูว่าคุณสามารถแก้ไขปัญหาได้หรือไม่
|
||||
popup.error.takeOfferRequestFailed=เกิดข้อผิดพลาดขึ้นเมื่อมีคนพยายามรับข้อเสนอของคุณ: \n{0}
|
||||
|
|
|
@ -965,7 +965,7 @@ portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=G
|
|||
(satıcı da tam ticaret miktarını geri alır). \
|
||||
Bu şekilde, güvenlik riski yoktur ve yalnızca ticaret ücretleri kaybedilir. \n\n\
|
||||
Kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunabilirsiniz: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=Gecikmiş ödeme işlemi eksik \
|
||||
ancak fonlar depozito işleminde kilitlendi.\n\n\
|
||||
Eğer alıcı da gecikmiş ödeme işlemini eksikse, onlara ödemeyi göndermemeleri ve \
|
||||
|
@ -974,18 +974,18 @@ portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=
|
|||
tamamını geri almasını önermelidir (satıcı da tam ticaret miktarını geri alır). \
|
||||
Aksi takdirde ticaret miktarı alıcıya gitmelidir. \n\n\
|
||||
Kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunabilirsiniz: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=Ticaret protokolü yürütülürken bir hata oluştu.\n\n\
|
||||
Hata: {0}\n\n\
|
||||
Bu hata kritik olmayabilir ve ticaret normal şekilde tamamlanabilir. Emin değilseniz, \
|
||||
Haveno arabulucularından tavsiye almak için bir arabuluculuk bileti açın. \n\n\
|
||||
Eğer hata kritikse ve ticaret tamamlanamazsa, ticaret ücretinizi kaybetmiş olabilirsiniz. \
|
||||
Kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunun: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=Ticaret sözleşmesi ayarlanmadı.\n\n\
|
||||
Ticaret tamamlanamaz ve ticaret ücretinizi kaybetmiş olabilirsiniz. \
|
||||
Eğer öyleyse, kaybedilen ticaret ücretleri için burada geri ödeme talebinde bulunun: \
|
||||
[HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
[HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=Ticaret protokolü bazı sorunlarla karşılaştı.\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=Ticaret protokolü ciddi bir sorunla karşılaştı.\n\n{0}\n\n\
|
||||
Ticareti başarısız ticaretler arasına taşımak ister misiniz?\n\n\
|
||||
|
@ -2091,7 +2091,7 @@ popup.headline.error=Hata
|
|||
popup.doNotShowAgain=Tekrar gösterme
|
||||
popup.reportError.log=Günlük dosyasını aç
|
||||
popup.reportError.gitHub=GitHub hata izleyicisine bildir
|
||||
popup.reportError={0}\n\nYazılımı geliştirmemize yardımcı olmak için lütfen bu hatayı https://github.com/haveno-dex/haveno/issues adresinde yeni bir sorun açarak bildirin.\n\
|
||||
popup.reportError={0}\n\nYazılımı geliştirmemize yardımcı olmak için lütfen bu hatayı https://github.com/MoneroEcosystem/haveno/issues adresinde yeni bir sorun açarak bildirin.\n\
|
||||
Yukarıdaki hata mesajı, aşağıdaki düğmelerden birine tıkladığınızda panoya kopyalanacaktır.\n\
|
||||
Hata ayıklamayı kolaylaştırmak için \"Günlük dosyasını aç\" düğmesine basarak günlük dosyasını kaydedip hata raporunuza eklemeniz yararlı olacaktır.
|
||||
|
||||
|
@ -2214,17 +2214,17 @@ popup.shutDownInProgress.msg=Uygulamayı kapatmak birkaç saniye sürebilir.\nL
|
|||
|
||||
popup.attention.forTradeWithId=ID'si {0} olan ticaret için bildirim
|
||||
popup.attention.welcome.stagenet=Haveno test sürümüne hoş geldiniz!\n\n\
|
||||
Bu platform Haveno'nun protokolünü test etmenizi sağlar. Talimatları izlediğinizden emin olun [HYPERLINK:https://github.com/haveno-dex/haveno/blob/master/docs/installing.md].\n\n\
|
||||
Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
|
||||
Bu platform Haveno'nun protokolünü test etmenizi sağlar. Talimatları izlediğinizden emin olun [HYPERLINK:https://github.com/MoneroEcosystem/haveno/blob/master/docs/installing.md].\n\n\
|
||||
Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\
|
||||
Bu bir test sürümüdür. Gerçek para kullanmayın!
|
||||
popup.attention.welcome.mainnet=Haveno'ya hoş geldiniz!\n\n\
|
||||
Bu platform, Monero'yu itibari para birimleri veya diğer kripto para birimleriyle merkezi olmayan bir şekilde ticaret yapmanızı sağlar.\n\n\
|
||||
Yeni bir ödeme hesabı oluşturarak ve ardından bir teklif yaparak veya teklif alarak başlayın.\n\n\
|
||||
Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].
|
||||
Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].
|
||||
popup.attention.welcome.mainnet.test=Haveno'ya hoş geldiniz!\n\n\
|
||||
Bu platform, Monero'yu itibari para birimleri veya diğer kripto para birimleriyle merkezi olmayan bir şekilde ticaret yapmanızı sağlar.\n\n\
|
||||
Yeni bir ödeme hesabı oluşturarak ve ardından bir teklif yaparak veya teklif alarak başlayın.\n\n\
|
||||
Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/haveno-dex/haveno/issues/new].\n\n\
|
||||
Herhangi bir sorunla karşılaşırsanız, lütfen bir sorun bildirerek bize bildirin [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues/new].\n\n\
|
||||
Haveno kısa bir süre önce kamu testi için yayınlandı. Lütfen küçük miktarlar kullanın!
|
||||
|
||||
popup.info.multiplePaymentAccounts.headline=Birden fazla ödeme hesabı mevcut
|
||||
|
|
|
@ -820,10 +820,10 @@ portfolio.pending.mediationResult.popup.alreadyAccepted=You've already accepted
|
|||
portfolio.pending.failedTrade.taker.missingTakerFeeTx=The taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked and no trade fee has been paid. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.maker.missingTakerFeeTx=The peer's taker fee transaction is missing.\n\nWithout this tx, the trade cannot be completed. No funds have been locked. Your offer is still available to other traders, so you have not lost the maker fee. You can move this trade to failed trades.
|
||||
portfolio.pending.failedTrade.missingDepositTx=Một giao dịch ký quỹ đang bị thiếu.\n\nGiao dịch này là bắt buộc để hoàn tất giao dịch. Vui lòng đảm bảo ví của bạn được đồng bộ hoàn toàn với blockchain Monero.\n\nBạn có thể chuyển giao dịch này đến mục "Giao dịch thất bại" để vô hiệu hóa nó.
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/haveno-dex/haveno/issues]
|
||||
portfolio.pending.failedTrade.buyer.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing, but funds have been locked in the deposit transaction.\n\nPlease do NOT send the traditional or crypto payment to the XMR seller, because without the delayed payout tx, arbitration cannot be opened. Instead, open a mediation ticket with Cmd/Ctrl+o. The mediator should suggest that both peers each get back the the full amount of their security deposits (with seller receiving full trade amount back as well). This way, there is no security risk, and only trade fees are lost. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.seller.existingDepositTxButMissingDelayedPayoutTx=The delayed payout transaction is missing but funds have been locked in the deposit transaction.\n\nIf the buyer is also missing the delayed payout transaction, they will be instructed to NOT send the payment and open a mediation ticket instead. You should also open a mediation ticket with Cmd/Ctrl+o. \n\nIf the buyer has not sent payment yet, the mediator should suggest that both peers each get back the full amount of their security deposits (with seller receiving full trade amount back as well). Otherwise the trade amount should go to the buyer. \n\nYou can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.errorMsgSet=There was an error during trade protocol execution.\n\nError: {0}\n\nIt might be that this error is not critical, and the trade can be completed normally. If you are unsure, open a mediation ticket to get advice from Haveno mediators. \n\nIf the error was critical and the trade cannot be completed, you might have lost your trade fee. Request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.missingContract=The trade contract is not set.\n\nThe trade cannot be completed and you might have lost your trade fee. If so, you can request a reimbursement for lost trade fees here: [HYPERLINK:https://github.com/MoneroEcosystem/haveno/issues]
|
||||
portfolio.pending.failedTrade.info.popup=The trade protocol encountered some problems.\n\n{0}
|
||||
portfolio.pending.failedTrade.txChainInvalid.moveToFailed=The trade protocol encountered a serious problem.\n\n{0}\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
portfolio.pending.failedTrade.txChainValid.moveToFailed=The trade protocol encountered some problems.\n\n{0}\n\nThe trade transactions have been published and funds are locked. Only move the trade to failed trades if you are really sure. It might prevent options to resolve the problem.\n\nDo you want to move the trade to failed trades?\n\nYou cannot open mediation or arbitration from the failed trades view, but you can move a failed trade back to the open trades screen any time.
|
||||
|
@ -1589,7 +1589,7 @@ popup.headline.error=Lỗi
|
|||
popup.doNotShowAgain=Không hiển thị lại
|
||||
popup.reportError.log=Mở log file
|
||||
popup.reportError.gitHub=Báo cáo cho người theo dõi vấn đề GitHub
|
||||
popup.reportError={0}\n\nĐể giúp chúng tôi cải tiến phần mềm, vui lòng báo cáo lỗi này bằng cách mở một thông báo vấn đề mới tại https://github.com/haveno-dex/haveno/issues.\nTin nhắn lỗi phía trên sẽ được sao chép tới clipboard khi bạn ấn vào một nút bên dưới.\nSự cố sẽ được xử lý dễ dàng hơn nếu bạn đính kèm haveno.log file bằng cách nhấn "Mở log file", lưu bản sao, và đính kèm vào báo cáo lỗi.
|
||||
popup.reportError={0}\n\nĐể giúp chúng tôi cải tiến phần mềm, vui lòng báo cáo lỗi này bằng cách mở một thông báo vấn đề mới tại https://github.com/MoneroEcosystem/haveno/issues.\nTin nhắn lỗi phía trên sẽ được sao chép tới clipboard khi bạn ấn vào một nút bên dưới.\nSự cố sẽ được xử lý dễ dàng hơn nếu bạn đính kèm haveno.log file bằng cách nhấn "Mở log file", lưu bản sao, và đính kèm vào báo cáo lỗi.
|
||||
|
||||
popup.error.tryRestart=Hãy khởi động lại ứng dụng và kiểm tra kết nối mạng để xem bạn có thể xử lý vấn đề này hay không.
|
||||
popup.error.takeOfferRequestFailed=Có lỗi xảy ra khi ai đó cố gắng để nhận một trong các chào giá của bạn:\n{0}
|
||||
|
|
197
daemon/src/main/java/haveno/daemon/grpc/GrpcNetworkService.java
Normal file
|
@ -0,0 +1,197 @@
|
|||
package haveno.daemon.grpc;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
import com.google.protobuf.ByteString;
|
||||
|
||||
import io.grpc.Context;
|
||||
import io.grpc.ServerInterceptor;
|
||||
import io.grpc.stub.ServerCallStreamObserver;
|
||||
import io.grpc.stub.StreamObserver;
|
||||
|
||||
import haveno.core.api.CoreApi;
|
||||
import haveno.core.api.NetworkListener;
|
||||
import haveno.core.filter.Filter;
|
||||
import haveno.core.filter.PaymentAccountFilter;
|
||||
import haveno.daemon.grpc.interceptor.CallRateMeteringInterceptor;
|
||||
import haveno.daemon.grpc.interceptor.GrpcCallRateMeter;
|
||||
|
||||
import static haveno.daemon.grpc.interceptor.GrpcServiceRateMeteringConfig.getCustomRateMeteringInterceptor;
|
||||
import haveno.proto.grpc.NetworkMessage;
|
||||
import static haveno.proto.grpc.NetworkGrpc.getRegisterNetworkListenerMethod;
|
||||
import static haveno.proto.grpc.NetworkGrpc.getGetSeednodesMethod;
|
||||
import static haveno.proto.grpc.NetworkGrpc.getGetOnlinePeersMethod;
|
||||
import static haveno.proto.grpc.NetworkGrpc.getGetRegisteredArbitratorsMethod;
|
||||
import haveno.proto.grpc.GetRegisteredArbitratorsReply;
|
||||
import haveno.proto.grpc.GetRegisteredArbitratorsRequest;
|
||||
import haveno.proto.grpc.GetOnlinePeersRequest;
|
||||
import haveno.proto.grpc.GetSeednodesReply;
|
||||
import haveno.proto.grpc.GetOnlinePeersReply;
|
||||
import haveno.proto.grpc.GetSeednodesRequest;
|
||||
import haveno.network.p2p.peers.peerexchange.Peer;
|
||||
import haveno.proto.grpc.NetworkGrpc.NetworkImplBase;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import haveno.core.support.dispute.arbitration.arbitrator.Arbitrator;
|
||||
import haveno.proto.grpc.GetNetworkFilterReply;
|
||||
import haveno.proto.grpc.GetNetworkFilterRequest;
|
||||
import lombok.NonNull;
|
||||
import lombok.Value;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import protobuf.StoragePayload;
|
||||
|
||||
@Slf4j
|
||||
class GrpcNetworkService extends NetworkImplBase {
|
||||
|
||||
private final CoreApi coreApi;
|
||||
private final GrpcExceptionHandler exceptionHandler;
|
||||
|
||||
@Inject
|
||||
public GrpcNetworkService(CoreApi coreApi, GrpcExceptionHandler exceptionHandler) {
|
||||
this.coreApi = coreApi;
|
||||
this.exceptionHandler = exceptionHandler;
|
||||
}
|
||||
|
||||
//@Override
|
||||
//public void registerNetworkListener(RegisterNetworkListenerRequest request,
|
||||
// StreamObserver<NetworkMessage> responseObserver) {
|
||||
// Context ctx = Context.current().fork(); // context is independent for long-lived request
|
||||
// ctx.run(() -> {
|
||||
// try {
|
||||
// coreApi.addNetworkListener(new GrpcNetworkListener(responseObserver));
|
||||
// // No onNext / onCompleted, as the response observer should be kept open
|
||||
// } catch (Throwable t) {
|
||||
// exceptionHandler.handleException(log, t, responseObserver);
|
||||
// }
|
||||
// });
|
||||
//}
|
||||
|
||||
@Override
|
||||
public void getOnlinePeers(GetOnlinePeersRequest request,
|
||||
StreamObserver<GetOnlinePeersReply> responseObserver) {
|
||||
try {
|
||||
GetOnlinePeersReply.Builder replyBuilder = GetOnlinePeersReply.newBuilder();
|
||||
|
||||
for (Peer peer : coreApi.getOnlinePeers()) {
|
||||
replyBuilder.addPeers(
|
||||
haveno.proto.grpc.PeerInfo.newBuilder()
|
||||
.setNodeAddress(peer.getNodeAddress().getFullAddress())
|
||||
//.addAllCapabilities(peer.getCapabilities().stream().map(Integer::intValue).toList())
|
||||
.build());
|
||||
}
|
||||
|
||||
responseObserver.onNext(replyBuilder.build());
|
||||
responseObserver.onCompleted();
|
||||
} catch (Throwable t) {
|
||||
exceptionHandler.handleException(log, t, responseObserver);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSeednodes(GetSeednodesRequest request,
|
||||
StreamObserver<GetSeednodesReply> responseObserver) {
|
||||
try {
|
||||
GetSeednodesReply.Builder replyBuilder = GetSeednodesReply.newBuilder();
|
||||
|
||||
for (Peer peer : coreApi.getOnlineSeedNodes()) {
|
||||
replyBuilder.addPeers(
|
||||
haveno.proto.grpc.PeerInfo.newBuilder()
|
||||
.setNodeAddress(peer.getNodeAddress().getFullAddress())
|
||||
//.addAllCapabilities(peer.getCapabilities().stream().map(Integer::intValue).toList())
|
||||
.build());
|
||||
}
|
||||
|
||||
responseObserver.onNext(replyBuilder.build());
|
||||
responseObserver.onCompleted();
|
||||
} catch (Throwable t) {
|
||||
exceptionHandler.handleException(log, t, responseObserver);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getNetworkFilter(GetNetworkFilterRequest request,
|
||||
StreamObserver<GetNetworkFilterReply> responseObserver) {
|
||||
try {
|
||||
haveno.core.filter.Filter modelFilter = coreApi.getFilter();
|
||||
|
||||
protobuf.Filter.Builder grpcFilter = protobuf.Filter.newBuilder()
|
||||
.addAllNodeAddressesBannedFromTrading(modelFilter.getNodeAddressesBannedFromTrading())
|
||||
.addAllBannedOfferIds(modelFilter.getBannedOfferIds())
|
||||
.addAllArbitrators(modelFilter.getArbitrators().stream().map(a -> a.toString()).toList())
|
||||
.addAllSeedNodes(modelFilter.getSeedNodes().stream().map(n -> n.toString()).toList())
|
||||
.addAllBannedPaymentAccounts(
|
||||
modelFilter.getBannedPaymentAccounts().stream()
|
||||
.map(PaymentAccountFilter::toProtoMessage)
|
||||
.toList())
|
||||
.setSignatureAsBase64(modelFilter.getSignatureAsBase64())
|
||||
.setOwnerPubKeyBytes(ByteString.copyFrom(modelFilter.getOwnerPubKeyBytes()))
|
||||
.putAllExtraData(modelFilter.getExtraDataMap())
|
||||
.addAllBannedCurrencies(modelFilter.getBannedCurrencies())
|
||||
.addAllBannedPaymentMethods(modelFilter.getBannedPaymentMethods())
|
||||
.addAllPriceRelayNodes(modelFilter.getPriceRelayNodes())
|
||||
.setPreventPublicXmrNetwork(modelFilter.isPreventPublicXmrNetwork())
|
||||
.addAllXmrNodes(modelFilter.getXmrNodes())
|
||||
.setDisableTradeBelowVersion(modelFilter.getDisableTradeBelowVersion())
|
||||
.addAllMediators(modelFilter.getMediators())
|
||||
.addAllRefundAgents(modelFilter.getRefundAgents())
|
||||
.addAllBannedSignerPubKeys(modelFilter.getBannedAccountWitnessSignerPubKeys())
|
||||
.addAllXmrFeeReceiverAddresses(modelFilter.getXmrFeeReceiverAddresses())
|
||||
.setCreationDate(modelFilter.getCreationDate())
|
||||
.setSignerPubKeyAsHex(modelFilter.getSignerPubKeyAsHex())
|
||||
.addAllBannedPrivilegedDevPubKeys(modelFilter.getBannedPrivilegedDevPubKeys())
|
||||
.setDisableAutoConf(modelFilter.isDisableAutoConf())
|
||||
.addAllBannedAutoConfExplorers(modelFilter.getBannedAutoConfExplorers())
|
||||
.addAllNodeAddressesBannedFromNetwork(modelFilter.getNodeAddressesBannedFromNetwork())
|
||||
.setDisableApi(modelFilter.isDisableApi())
|
||||
.setDisableMempoolValidation(modelFilter.isDisableMempoolValidation());
|
||||
|
||||
GetNetworkFilterReply reply = GetNetworkFilterReply.newBuilder()
|
||||
.setFilter(grpcFilter)
|
||||
.build();
|
||||
|
||||
responseObserver.onNext(reply);
|
||||
responseObserver.onCompleted();
|
||||
} catch (Throwable t) {
|
||||
exceptionHandler.handleException(log, t, responseObserver);
|
||||
}
|
||||
}
|
||||
|
||||
// @Override
|
||||
// public void setNetworkFilter() {
|
||||
//
|
||||
// }
|
||||
|
||||
@Value
|
||||
private static class GrpcNetworkListener implements NetworkListener {
|
||||
|
||||
@NonNull
|
||||
StreamObserver<NetworkMessage> responseObserver;
|
||||
|
||||
@Override
|
||||
public void onMessage(@NonNull NetworkMessage network_message) {
|
||||
if (!((ServerCallStreamObserver<NetworkMessage>) responseObserver).isCancelled()) {
|
||||
responseObserver.onNext(network_message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final ServerInterceptor[] interceptors() {
|
||||
Optional<ServerInterceptor> rateMeteringInterceptor = rateMeteringInterceptor();
|
||||
return rateMeteringInterceptor.map(serverInterceptor ->
|
||||
new ServerInterceptor[]{serverInterceptor}).orElseGet(() -> new ServerInterceptor[0]);
|
||||
}
|
||||
|
||||
final Optional<ServerInterceptor> rateMeteringInterceptor() {
|
||||
return getCustomRateMeteringInterceptor(coreApi.getConfig().appDataDir, this.getClass())
|
||||
.or(() -> Optional.of(CallRateMeteringInterceptor.valueOf(
|
||||
new HashMap<>() {{
|
||||
put(getRegisterNetworkListenerMethod().getFullMethodName(), new GrpcCallRateMeter(10, SECONDS));
|
||||
}}
|
||||
)));
|
||||
}
|
||||
}
|
|
@ -52,6 +52,7 @@ public class GrpcServer {
|
|||
GrpcTradesService tradesService,
|
||||
GrpcWalletsService walletsService,
|
||||
GrpcNotificationsService notificationsService,
|
||||
GrpcNetworkService networkService,
|
||||
GrpcXmrConnectionService moneroConnectionsService,
|
||||
GrpcXmrNodeService moneroNodeService) {
|
||||
this.server = ServerBuilder.forPort(config.apiPort)
|
||||
|
@ -70,6 +71,7 @@ public class GrpcServer {
|
|||
.addService(interceptForward(notificationsService, notificationsService.interceptors()))
|
||||
.addService(interceptForward(moneroConnectionsService, moneroConnectionsService.interceptors()))
|
||||
.addService(interceptForward(moneroNodeService, moneroNodeService.interceptors()))
|
||||
.addService(interceptForward(networkService, networkService.interceptors()))
|
||||
.intercept(passwordAuthInterceptor)
|
||||
.build();
|
||||
coreContext.setApiUser(true);
|
||||
|
|
|
@ -216,7 +216,7 @@ public class HavenoAppMain extends HavenoExecutable {
|
|||
|
||||
// Set the dialog content
|
||||
VBox vbox = new VBox(10);
|
||||
ImageView logoImageView = new ImageView(ImageUtil.getImageByPath("logo_splash_light_mode.png"));
|
||||
ImageView logoImageView = new ImageView(ImageUtil.getImageByPath("logo_splash_light.png"));
|
||||
logoImageView.setFitWidth(342);
|
||||
logoImageView.setPreserveRatio(true);
|
||||
vbox.getChildren().addAll(logoImageView, passwordField, errorMessageField, versionField);
|
||||
|
|
|
@ -2283,7 +2283,6 @@ textfield */
|
|||
-fx-background-insets: 44;
|
||||
-fx-background-radius: 15;
|
||||
-fx-border-radius: 15;
|
||||
-fx-effect: dropshadow(gaussian, -bs-text-color-dropshadow-light-mode, 44, 0, 0, 0);
|
||||
}
|
||||
|
||||
.notification-popup-bg, .peer-info-popup-bg {
|
||||
|
|
|
@ -305,12 +305,8 @@ public class MainView extends InitializableView<StackPane, MainViewModel> {
|
|||
}
|
||||
});
|
||||
|
||||
// add spacer to center the nav buttons when window is small
|
||||
Region rightSpacer = new Region();
|
||||
HBox.setHgrow(rightSpacer, Priority.ALWAYS);
|
||||
|
||||
HBox primaryNav = new HBox(getLogoPane(), marketButton, getNavigationSpacer(), buyButton, getNavigationSpacer(),
|
||||
sellButton, getNavigationSpacer(), portfolioButtonWithBadge, getNavigationSpacer(), fundsButton, rightSpacer);
|
||||
sellButton, getNavigationSpacer(), portfolioButtonWithBadge, getNavigationSpacer(), fundsButton);
|
||||
|
||||
primaryNav.setAlignment(Pos.CENTER_LEFT);
|
||||
primaryNav.getStyleClass().add("nav-primary");
|
||||
|
|
|
@ -9,21 +9,21 @@
|
|||
-fx-text-fill: #dadada;
|
||||
|
||||
/* javafx elements */
|
||||
-fx-accent: #0b65da;
|
||||
-fx-accent: #F4511E;
|
||||
-fx-box-border: transparent;
|
||||
-fx-focus-color: #0c59bd;
|
||||
-fx-faint-focus-color: #0c59bd;
|
||||
-fx-focus-color: #F4511E;
|
||||
-fx-faint-focus-color: #F4511E;
|
||||
-fx-selection-bar: #0f87c3;
|
||||
-fx-selection-bar-non-focused: #4181d4;
|
||||
-fx-default-button: derive(-fx-accent, 95%);
|
||||
|
||||
/* haveno main colors */
|
||||
-bs-color-primary: #0b65da;
|
||||
-bs-color-primary-dark: #0c59bd;
|
||||
-bs-color-primary: #F4511E;
|
||||
-bs-color-primary-dark: #F4511E;
|
||||
-bs-text-color: white;
|
||||
-bs-background-color: black;
|
||||
-bs-background-color: #303030;
|
||||
-bs-background-gray: transparent;
|
||||
-bs-content-background-gray: black;
|
||||
-bs-content-background-gray: #303030;
|
||||
|
||||
/* fifty shades of gray */
|
||||
-bs-color-gray-13: #bbb;
|
||||
|
@ -128,7 +128,7 @@
|
|||
-bs-rd-tooltip-truncated: #afaeb0;
|
||||
|
||||
/*-bs-toggle-selected: rgb(12, 89, 189);*/
|
||||
-bs-toggle-selected: rgb(12, 89, 190);
|
||||
-bs-toggle-selected: #F4511E;
|
||||
-bs-warning: #db6300;
|
||||
-bs-buy: rgb(80, 180, 90);
|
||||
-bs-buy-focus: derive(-bs-buy, -50%);
|
||||
|
@ -578,15 +578,15 @@
|
|||
}
|
||||
|
||||
#image-logo-splash {
|
||||
-fx-image: url("../../images/logo_splash_dark_mode.png");
|
||||
-fx-image: url("../../images/logo_splash_dark.png");
|
||||
}
|
||||
|
||||
#image-logo-splash-testnet {
|
||||
-fx-image: url("../../images/logo_splash_testnet_dark_mode.png");
|
||||
-fx-image: url("../../images/logo_splash_testnet_dark.png");
|
||||
}
|
||||
|
||||
#image-logo-landscape {
|
||||
-fx-image: url("../../images/logo_landscape_dark_mode.png");
|
||||
-fx-image: url("../../images/logo_landscape_dark.png");
|
||||
}
|
||||
|
||||
.table-view .placeholder {
|
||||
|
|
|
@ -144,15 +144,15 @@
|
|||
}
|
||||
|
||||
#image-logo-splash {
|
||||
-fx-image: url("../../images/logo_splash_light_mode.png");
|
||||
-fx-image: url("../../images/logo_splash_light.png");
|
||||
}
|
||||
|
||||
#image-logo-splash-testnet {
|
||||
-fx-image: url("../../images/logo_splash_testnet_light_mode.png");
|
||||
-fx-image: url("../../images/logo_splash_testnet_light.png");
|
||||
}
|
||||
|
||||
#image-logo-landscape {
|
||||
-fx-image: url("../../images/logo_landscape_light_mode.png");
|
||||
-fx-image: url("../../images/logo_landscape_light.png");
|
||||
}
|
||||
|
||||
#charts .default-color0.chart-series-area-fill {
|
||||
|
|
BIN
desktop/src/main/resources/images/logo_landscape_dark.png
Normal file
After Width: | Height: | Size: 667 KiB |
Before Width: | Height: | Size: 48 KiB |
BIN
desktop/src/main/resources/images/logo_landscape_light.png
Normal file
After Width: | Height: | Size: 667 KiB |
Before Width: | Height: | Size: 22 KiB |
BIN
desktop/src/main/resources/images/logo_splash_dark.png
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 30 KiB |
BIN
desktop/src/main/resources/images/logo_splash_light.png
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 30 KiB |
BIN
desktop/src/main/resources/images/logo_splash_testnet_dark.png
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 24 KiB |
BIN
desktop/src/main/resources/images/logo_splash_testnet_light.png
Normal file
After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
@ -1,51 +0,0 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
NYeOG8Xnm4CxuWqUu0FDMv6BhkMCTz2X4xcnbtI=
|
||||
=9LRS
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -1,50 +0,0 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=AWz+
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -1,156 +0,0 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
vUTpzlk=
|
||||
=ZIr3
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -17,14 +17,15 @@ WORKDIR /home/haveno
|
|||
|
||||
RUN set -ex && git clone https://foss.haveno.com/haveno-network/haveno-core.git
|
||||
|
||||
WORKDIR /home/haveno/haveno-core
|
||||
WORKDIR /home/haveno/haveno
|
||||
|
||||
RUN git checkout master && \
|
||||
git reset --hard
|
||||
|
||||
|
||||
RUN make clean && make skip-tests
|
||||
|
||||
WORKDIR /home/haveno/haveno-core
|
||||
WORKDIR /home/haveno/haveno
|
||||
|
||||
ENTRYPOINT [ "./haveno-seednode" ]
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Thanks for wishing to help! Here there are some guidelines and information about the development process. We suggest you to join the [matrix](https://app.element.io/#/room/#haveno-development:monero.social) room `#haveno-development` (relayed on [IRC/Libera](irc://irc.libera.chat/#haveno-development)) and have a chat with the devs, so that we can help get you started.
|
||||
|
||||
Issues are tracked on GitHub. We use [a label system](https://github.com/haveno-dex/haveno/issues/50) and GitHub's [project boards](https://github.com/haveno-dex/haveno/projects) to simplify development. Make sure to take a look at those and to follow the priorities suggested.
|
||||
Issues are tracked on GitHub. We use [a label system](https://github.com/MoneroEcosystem/haveno/issues/50) and GitHub's [project boards](https://github.com/MoneroEcosystem/haveno/projects) to simplify development. Make sure to take a look at those and to follow the priorities suggested.
|
||||
|
||||
## General guidelines
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ For a more robust and decentralized deployment to VPS for reliable uptime, see t
|
|||
## Clone and build Haveno
|
||||
|
||||
```
|
||||
git clone https://github.com/haveno-dex/haveno.git
|
||||
git clone https://github.com/MoneroEcosystem/haveno.git
|
||||
cd haveno
|
||||
git checkout master
|
||||
make clean && make
|
||||
|
@ -39,17 +39,17 @@ For demonstration, we can use the first generated public/private keypair for all
|
|||
|
||||
Hardcode the public key(s) in these files:
|
||||
|
||||
- [AlertManager.java](https://github.com/haveno-dex/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/alert/AlertManager.java#L111)
|
||||
- [ArbitratorManager.java](https://github.com/haveno-dex/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/support/dispute/arbitration/arbitrator/ArbitratorManager.java#L81)
|
||||
- [FilterManager.java](https://github.com/haveno-dex/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/filter/FilterManager.java#L117)
|
||||
- [PrivateNotificationManager.java](https://github.com/haveno-dex/haveno/blob/mainnet_placeholders/core/src/main/java/haveno/core/alert/PrivateNotificationManager.java#L110)
|
||||
- [AlertManager.java](https://github.com/MoneroEcosystem/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/alert/AlertManager.java#L111)
|
||||
- [ArbitratorManager.java](https://github.com/MoneroEcosystem/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/support/dispute/arbitration/arbitrator/ArbitratorManager.java#L81)
|
||||
- [FilterManager.java](https://github.com/MoneroEcosystem/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/core/src/main/java/haveno/core/filter/FilterManager.java#L117)
|
||||
- [PrivateNotificationManager.java](https://github.com/MoneroEcosystem/haveno/blob/mainnet_placeholders/core/src/main/java/haveno/core/alert/PrivateNotificationManager.java#L110)
|
||||
|
||||
## Change the default folder name for Haveno application data
|
||||
|
||||
To avoid user data corruption when using multiple Haveno networks, change the default folder name for Haveno's application data on your network:
|
||||
|
||||
- Change `DEFAULT_APP_NAME` in [HavenoExecutable.java](https://github.com/haveno-dex/haveno/blob/64acf86fbea069b0ae9f9bce086f8ecce1e91b87/core/src/main/java/haveno/core/app/HavenoExecutable.java#L85).
|
||||
- Change `appName` throughout the [Makefile](https://github.com/haveno-dex/haveno/blob/64acf86fbea069b0ae9f9bce086f8ecce1e91b87/Makefile#L479) accordingly.
|
||||
- Change `DEFAULT_APP_NAME` in [HavenoExecutable.java](https://github.com/MoneroEcosystem/haveno/blob/64acf86fbea069b0ae9f9bce086f8ecce1e91b87/core/src/main/java/haveno/core/app/HavenoExecutable.java#L85).
|
||||
- Change `appName` throughout the [Makefile](https://github.com/MoneroEcosystem/haveno/blob/64acf86fbea069b0ae9f9bce086f8ecce1e91b87/Makefile#L479) accordingly.
|
||||
|
||||
For example, change "Haveno" to "HavenoX", which will use this application folder:
|
||||
|
||||
|
@ -59,7 +59,7 @@ For example, change "Haveno" to "HavenoX", which will use this application folde
|
|||
|
||||
## Change the P2P network version
|
||||
|
||||
To avoid interference with other networks, change `P2P_NETWORK_VERSION` in [Version.java](https://github.com/haveno-dex/haveno/blob/a7e90395d24ec3d33262dd5d09c5faec61651a51/common/src/main/java/haveno/common/app/Version.java#L83).
|
||||
To avoid interference with other networks, change `P2P_NETWORK_VERSION` in [Version.java](https://github.com/MoneroEcosystem/haveno/blob/a7e90395d24ec3d33262dd5d09c5faec61651a51/common/src/main/java/haveno/common/app/Version.java#L83).
|
||||
|
||||
For example, change it to `"B"`.
|
||||
|
||||
|
@ -114,9 +114,9 @@ Otherwise set `ARBITRATOR_ASSIGNS_TRADE_FEE_ADDRESS` to `false` and set the XMR
|
|||
|
||||
### Optionally start a price node
|
||||
|
||||
The price node is separated from Haveno and is run as a standalone service. To deploy a pricenode on both TOR and clearnet, see the instructions on the repository: https://github.com/haveno-dex/haveno-pricenode.
|
||||
The price node is separated from Haveno and is run as a standalone service. To deploy a pricenode on both TOR and clearnet, see the instructions on the repository: https://github.com/MoneroEcosystem/haveno-pricenode.
|
||||
|
||||
After the price node is built and deployed, add the price node to `DEFAULT_NODES` in [ProvidersRepository.java](https://github.com/haveno-dex/haveno/blob/3cdd88b56915c7f8afd4f1a39e6c1197c2665d63/core/src/main/java/haveno/core/provider/ProvidersRepository.java#L50).
|
||||
After the price node is built and deployed, add the price node to `DEFAULT_NODES` in [ProvidersRepository.java](https://github.com/MoneroEcosystem/haveno/blob/3cdd88b56915c7f8afd4f1a39e6c1197c2665d63/core/src/main/java/haveno/core/provider/ProvidersRepository.java#L50).
|
||||
|
||||
### Update the download URL
|
||||
|
||||
|
@ -124,7 +124,7 @@ Change every instance of `https://haveno.exchange/downloads` to your download UR
|
|||
|
||||
## Review all local changes
|
||||
|
||||
For comparison, placeholders to run on mainnet are marked [here on this branch](https://github.com/haveno-dex/haveno/tree/mainnet_placeholders).
|
||||
For comparison, placeholders to run on mainnet are marked [here on this branch](https://github.com/MoneroEcosystem/haveno/tree/mainnet_placeholders).
|
||||
|
||||
## Start users for testing
|
||||
|
||||
|
@ -155,8 +155,8 @@ However a [more robust VPS setup](./deployment-guide.md) should be used for actu
|
|||
|
||||
## Build the installers for distribution
|
||||
|
||||
To build the installers for distribution, first change `XMR_STAGENET` to `XMR_MAINNET` in [package.gradle](https://github.com/haveno-dex/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/desktop/package/package.gradle#L278).
|
||||
To build the installers for distribution, first change `XMR_STAGENET` to `XMR_MAINNET` in [package.gradle](https://github.com/MoneroEcosystem/haveno/blob/1bf83ecb8baa06b6bfcc30720f165f20b8f77025/desktop/package/package.gradle#L278).
|
||||
|
||||
Then [follow instructions](https://github.com/haveno-dex/haveno/blob/master/desktop/package/README.md) to build the installers for distribution.
|
||||
Then [follow instructions](https://github.com/MoneroEcosystem/haveno/blob/master/desktop/package/README.md) to build the installers for distribution.
|
||||
|
||||
Alternatively, the installers are built automatically by GitHub.
|
|
@ -8,7 +8,7 @@ This document is a guide for Haveno development.
|
|||
|
||||
## Run the UI proof of concept
|
||||
|
||||
Follow [instructions](https://github.com/haveno-dex/haveno-ui-poc) to run Haveno's UI proof of concept in a browser.
|
||||
Follow [instructions](https://github.com/MoneroEcosystem/haveno-ui-poc) to run Haveno's UI proof of concept in a browser.
|
||||
|
||||
This proof of concept demonstrates using Haveno's gRPC server with a web frontend (react and typescript) instead of Haveno's JFX application.
|
||||
|
||||
|
@ -20,19 +20,19 @@ Otherwise follow [instructions](import-haveno.md) to import Haveno into a Eclips
|
|||
|
||||
## Run end-to-end API tests
|
||||
|
||||
Follow [instructions](https://github.com/haveno-dex/haveno-ts#run-tests) to run end-to-end API tests in the UI project.
|
||||
Follow [instructions](https://github.com/MoneroEcosystem/haveno-ts#run-tests) to run end-to-end API tests in the UI project.
|
||||
|
||||
## Add new API functions and tests
|
||||
|
||||
1. Follow [instructions](https://github.com/haveno-dex/haveno-ts#run-tests) to run Haveno's existing API tests successfully.
|
||||
1. Follow [instructions](https://github.com/MoneroEcosystem/haveno-ts#run-tests) to run Haveno's existing API tests successfully.
|
||||
2. Define the new service or message in Haveno's [protobuf definition](../proto/src/main/proto/grpc.proto).
|
||||
3. Clean and build Haveno after modifying the protobuf definition: `make clean && make`
|
||||
4. Implement the new service in Haveno's backend, following existing patterns.<br>
|
||||
For example, the gRPC function to get offers is implemented by [`GrpcServer`](https://github.com/haveno-dex/haveno/blob/master/daemon/src/main/java/haveno/daemon/grpc/GrpcServer.java) > [`GrpcOffersService.getOffers(...)`](https://github.com/haveno-dex/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/daemon/src/main/java/haveno/daemon/grpc/GrpcOffersService.java#L102) > [`CoreApi.getOffers(...)`](https://github.com/haveno-dex/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/api/CoreApi.java#L403) > [`CoreOffersService.getOffers(...)`](https://github.com/haveno-dex/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/api/CoreOffersService.java#L131) > [`OfferBookService.getOffers()`](https://github.com/haveno-dex/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/offer/OfferBookService.java#L248).
|
||||
For example, the gRPC function to get offers is implemented by [`GrpcServer`](https://github.com/MoneroEcosystem/haveno/blob/master/daemon/src/main/java/haveno/daemon/grpc/GrpcServer.java) > [`GrpcOffersService.getOffers(...)`](https://github.com/MoneroEcosystem/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/daemon/src/main/java/haveno/daemon/grpc/GrpcOffersService.java#L102) > [`CoreApi.getOffers(...)`](https://github.com/MoneroEcosystem/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/api/CoreApi.java#L403) > [`CoreOffersService.getOffers(...)`](https://github.com/MoneroEcosystem/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/api/CoreOffersService.java#L131) > [`OfferBookService.getOffers()`](https://github.com/MoneroEcosystem/haveno/blob/060d9fa4f138ca07f596386972265782e5ec7b7a/core/src/main/java/haveno/core/offer/OfferBookService.java#L248).
|
||||
5. Build Haveno: `make`
|
||||
6. Update the gRPC client in haveno-ts: `npm install`
|
||||
7. Add the corresponding typescript method(s) to [HavenoClient.ts](https://github.com/haveno-dex/haveno-ts/blob/master/src/HavenoClient.ts) with clear and concise documentation.
|
||||
8. Add clean and comprehensive tests to [HavenoClient.test.ts](https://github.com/haveno-dex/haveno-ts/blob/master/src/HavenoClient.test.ts), following existing patterns.
|
||||
7. Add the corresponding typescript method(s) to [HavenoClient.ts](https://github.com/MoneroEcosystem/haveno-ts/blob/master/src/HavenoClient.ts) with clear and concise documentation.
|
||||
8. Add clean and comprehensive tests to [HavenoClient.test.ts](https://github.com/MoneroEcosystem/haveno-ts/blob/master/src/HavenoClient.test.ts), following existing patterns.
|
||||
9. Run the tests with `npm run test -- -t 'my test'` to run tests by name and `npm test` to run all tests together. Ensure all tests pass and there are no exception stacktraces in the terminals of Alice, Bob, or the arbitrator.
|
||||
10. Open pull requests to the haveno and haveno-ts projects for the backend and frontend implementations.
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ Restart the terminal for the changes to take effect.
|
|||
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 using a third party network, replace the repository URL with theirs:
|
||||
|
||||
```
|
||||
git clone https://github.com/haveno-dex/haveno.git
|
||||
git clone https://github.com/MoneroEcosystem/haveno.git
|
||||
cd haveno
|
||||
git checkout master
|
||||
make
|
||||
|
@ -107,7 +107,7 @@ If you don't use *screen* or *tmux*, open 4 terminal windows and run in each one
|
|||
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)
|
||||
5. Optionally run a [local price node](https://github.com/MoneroEcosystem/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.
|
||||
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=4SFl
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
|
@ -413,6 +413,24 @@ public final class PeerManager implements ConnectionListener, PersistedDataHost
|
|||
return latestLivePeers;
|
||||
}
|
||||
|
||||
public Set<Peer> getLiveSeedNodePeers() {
|
||||
int oldNumLatestLivePeers = latestLivePeers.size();
|
||||
|
||||
Set<Peer> currentLiveSeedNodePeers = getConnectedReportedPeers().stream()
|
||||
.filter(e -> isSeedNode(e))
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
long maxAge = new Date().getTime() - MAX_AGE_LIVE_PEERS;
|
||||
latestLivePeers.clear();
|
||||
Set<Peer> latestLiveSeedNodePeers = currentLiveSeedNodePeers.stream()
|
||||
.filter(peer -> peer.getDateAsLong() > maxAge)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
if (oldNumLatestLivePeers != latestLiveSeedNodePeers.size())
|
||||
log.info("Num of latestLiveSeedNodePeers={}", latestLiveSeedNodePeers.size());
|
||||
return latestLivePeers;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Capabilities
|
||||
|
@ -731,6 +749,10 @@ public final class PeerManager implements ConnectionListener, PersistedDataHost
|
|||
return maxConnections;
|
||||
}
|
||||
|
||||
public Set<NodeAddress> getSeedNodeAddresses() {
|
||||
return new HashSet<>(seedNodeAddresses);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Listeners
|
||||
|
|
|
@ -278,6 +278,8 @@ message NotificationMessage {
|
|||
KEEP_ALIVE = 2;
|
||||
TRADE_UPDATE = 3;
|
||||
CHAT_MESSAGE = 4;
|
||||
OFFER_UPDATE = 5;
|
||||
MARKET_UPDATE = 6;
|
||||
}
|
||||
|
||||
string id = 1;
|
||||
|
@ -1125,6 +1127,105 @@ message AddressBalanceInfo {
|
|||
bool is_address_unused = 4;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Network
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
service Network {
|
||||
rpc GetOnlinePeers (GetOnlinePeersRequest) returns (GetOnlinePeersReply) {
|
||||
}
|
||||
rpc GetSeednodes (GetSeednodesRequest) returns (GetSeednodesReply) {
|
||||
}
|
||||
rpc GetRegisteredArbitrators (GetRegisteredArbitratorsRequest) returns (GetRegisteredArbitratorsReply) {
|
||||
}
|
||||
rpc GetNetworkFilter (GetNetworkFilterRequest) returns (GetNetworkFilterReply) {
|
||||
}
|
||||
rpc SetNetworkFilter (SetNetworkFilterRequest) returns (SetNetworkFilterReply) {
|
||||
}
|
||||
rpc GetAlerts (GetAlertsRequest) returns (GetAlertsRequest) {
|
||||
}
|
||||
rpc RegisterNetworkListener (RegisterNetworkListenerRequest) returns (stream NetworkMessage) {
|
||||
}
|
||||
}
|
||||
|
||||
message RegisterNetworkListenerRequest {
|
||||
}
|
||||
|
||||
message NetworkMessage {
|
||||
NetworkEnvelope network_envelope = 1;
|
||||
}
|
||||
|
||||
message PeerInfo {
|
||||
enum Capability {
|
||||
SEED_NODE = 0;
|
||||
MEDIATION = 1;
|
||||
SIGNED_ACCOUNT_AGE_WITNESS = 2;
|
||||
REFUND_AGENT = 3;
|
||||
TRADE_STATISTICS_HASH_UPDATE = 4;
|
||||
NO_ADDRESS_PRE_FIX = 5;
|
||||
TRADE_STATISTICS_3 = 6;
|
||||
}
|
||||
|
||||
string node_address = 1;
|
||||
repeated Capability capabilities = 2;
|
||||
}
|
||||
|
||||
message GetOnlinePeersRequest {}
|
||||
|
||||
message GetOnlinePeersReply {
|
||||
repeated PeerInfo peers = 1;
|
||||
}
|
||||
|
||||
message GetSeednodesRequest {}
|
||||
|
||||
message GetSeednodesReply {
|
||||
repeated PeerInfo peers = 1;
|
||||
}
|
||||
|
||||
message GetRegisteredArbitratorsRequest {}
|
||||
|
||||
message GetRegisteredArbitratorsReply {
|
||||
repeated Arbitrator arbitrators = 1;
|
||||
}
|
||||
|
||||
message GetNetworkFilterRequest {}
|
||||
|
||||
message GetNetworkFilterReply {
|
||||
Filter filter = 1;
|
||||
}
|
||||
|
||||
message SetNetworkFilterRequest {
|
||||
string signature = 1;
|
||||
repeated string bannedOffers = 2;
|
||||
repeated string bannedNetworkAddresses = 3;
|
||||
repeated string bannedTradingAccountData = 4;
|
||||
repeated string bannedCurrencyCodes = 5;
|
||||
repeated string bannedTradingMethods = 6;
|
||||
repeated string bannedAccountWitenessSignerPubKeys = 7;
|
||||
repeated string bannedArbitratorAddresses = 8;
|
||||
repeated string bannedRefundAgentAddresses = 10;
|
||||
repeated string bannedXmrFeeReceiverAddresses = 11;
|
||||
repeated string bannedSeedNodeAddresses = 12;
|
||||
repeated string bannedPriceRelayNodeAddresses = 13;
|
||||
repeated string bannedMoneroNodeAddresses = 14;
|
||||
bool banPublicMoneroNetwork = 15;
|
||||
bool disableAutoConfirm = 16;
|
||||
repeated string minVersionRequiredForTrading = 17;
|
||||
repeated string bannedPrivilegedDevPubKeys = 18;
|
||||
repeated string bannedAutoConfirmExplorers = 19;
|
||||
bool disableMempoolValidation = 20;
|
||||
bool disableApi = 21;
|
||||
}
|
||||
|
||||
message SetNetworkFilterReply {
|
||||
}
|
||||
|
||||
message GetAlertsRequest {}
|
||||
|
||||
message GetAlertsReply {
|
||||
repeated Alert alerts = 1;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Marketplace Protospec
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#### In `dispXXXX` AppVM:
|
||||
##### Clone repository
|
||||
```shell
|
||||
% git clone --depth=1 https://github.com/haveno-dex/haveno
|
||||
% git clone --depth=1 https://github.com/MoneroEcosystem/haveno
|
||||
```
|
||||
|
||||
---
|
||||
|
@ -233,7 +233,7 @@ $ printf 'haveno-Haveno.desktop' | qvm-appmenus --set-whitelist – haveno
|
|||
<p style="text-align: center;">Example:</p>
|
||||
|
||||
```shell
|
||||
% bash haveno/scripts/install_qubes/scripts/1-TemplateVM/1.0-haveno-templatevm.sh "https://download.bell-sw.com/java/21.0.6+10/bellsoft-jdk21.0.6+10-linux-amd64.deb" "a5e3fd9f5323de5fc188180c91e0caa777863b5b" "https://github.com/haveno-dex/haveno"
|
||||
% bash haveno/scripts/install_qubes/scripts/1-TemplateVM/1.0-haveno-templatevm.sh "https://download.bell-sw.com/java/21.0.6+10/bellsoft-jdk21.0.6+10-linux-amd64.deb" "a5e3fd9f5323de5fc188180c91e0caa777863b5b" "https://github.com/MoneroEcosystem/haveno"
|
||||
```
|
||||
+ Upon Successful Compilation & Packaging, A `Filecopy` Confirmation Will Be Presented
|
||||
|
||||
|
|