mirror of
https://github.com/bisq-network/bisq.git
synced 2025-02-23 15:00:30 +01:00
Merge pull request #5711 from chimp1984/fix-data-handling-if-dao-is-deactivated
Fix data handling if dao is deactivated
This commit is contained in:
commit
ccb73a3895
24 changed files with 199 additions and 183 deletions
|
@ -622,7 +622,7 @@ public class Config {
|
|||
.defaultsTo(-1L);
|
||||
|
||||
ArgumentAcceptingOptionSpec<Boolean> daoActivatedOpt =
|
||||
parser.accepts(DAO_ACTIVATED, "Developer flag. If true it enables dao phase 2 features.")
|
||||
parser.accepts(DAO_ACTIVATED, "If set to true dao is activated.")
|
||||
.withRequiredArg()
|
||||
.ofType(boolean.class)
|
||||
.defaultsTo(true);
|
||||
|
|
|
@ -1279,6 +1279,8 @@ setting.preferences.dao.resyncFromGenesis.popup=A resync from genesis transactio
|
|||
the seed nodes and the BSQ consensus state will be rebuilt from the genesis transaction.
|
||||
setting.preferences.dao.resyncFromGenesis.resync=Resync from genesis and shutdown
|
||||
setting.preferences.dao.isDaoFullNode=Run Bisq as DAO full node
|
||||
setting.preferences.dao.activated=DAO activated
|
||||
setting.preferences.dao.activated.popup=The change will be applied after a restart
|
||||
setting.preferences.dao.rpcUser=RPC username
|
||||
setting.preferences.dao.rpcPw=RPC password
|
||||
setting.preferences.dao.blockNotifyPort=Block notify port
|
||||
|
@ -2403,17 +2405,12 @@ dao.news.bisqDAO.description=Just as the Bisq exchange is decentralized and cens
|
|||
governance model - and the Bisq DAO and BSQ token are the tools that make it possible.
|
||||
dao.news.bisqDAO.readMoreLink=Learn More About the Bisq DAO
|
||||
|
||||
dao.news.pastContribution.title=MADE PAST CONTRIBUTIONS? REQUEST BSQ
|
||||
dao.news.pastContribution.description=If you have contributed to Bisq please use the BSQ address below and make a \
|
||||
request for taking part of the BSQ genesis distribution.
|
||||
dao.news.pastContribution.yourAddress=Your BSQ Wallet Address
|
||||
dao.news.pastContribution.requestNow=Request now
|
||||
|
||||
dao.news.DAOOnTestnet.title=RUN THE BISQ DAO ON OUR TESTNET
|
||||
dao.news.DAOOnTestnet.description=The mainnet Bisq DAO is not launched yet but you can learn about the Bisq DAO \
|
||||
by running it on our testnet.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Switch to DAO Testnet Mode
|
||||
dao.news.DAOOnTestnet.firstSection.content=Switch to DAO Testnet from the Settings screen.
|
||||
dao.news.daoInfo.title=ENABLE THE BISQ DAO
|
||||
dao.news.daoInfo.description=To participate in the Bisq DAO and to use BSQ for discounted trading fees, you need to \
|
||||
enable the DAO. When the DAO is enabled, Bisq downloads all missing blocks and verifies BSQ transactions. \
|
||||
This verification process requires time, during which you may see Bisq use a lot of memory and processing power. This is normal.
|
||||
dao.news.daoInfo.firstSection.title=1. Enable DAO
|
||||
dao.news.daoInfo.firstSection.content=Enable the Bisq DAO and restart.
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Acquire Some BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Request BSQ on Slack or Buy BSQ on Bisq.
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Participate in a Voting Cycle
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=Pokud jste přispěli do projektu Bisq, po
|
|||
dao.news.pastContribution.yourAddress=Adresa vaší BSQ peněženky
|
||||
dao.news.pastContribution.requestNow=Požádat hned
|
||||
|
||||
dao.news.DAOOnTestnet.title=SPUSŤTE BISQ DAO NA NAŠEM TESTNETU
|
||||
dao.news.DAOOnTestnet.description=Síť Bisq DAO ještě nebyla spuštěn, ale o Bisq DAO se můžete dozvědět jeho spuštěním na našem testnetu.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Přepněte do režimu DAO Testnet
|
||||
dao.news.DAOOnTestnet.firstSection.content=Na obrazovce Nastavení přepněte na DAO Testnet.
|
||||
dao.news.daoInfo.title=SPUSŤTE BISQ DAO NA NAŠEM TESTNETU
|
||||
dao.news.daoInfo.description=Síť Bisq DAO ještě nebyla spuštěn, ale o Bisq DAO se můžete dozvědět jeho spuštěním na našem testnetu.
|
||||
dao.news.daoInfo.firstSection.title=1. Přepněte do režimu DAO Testnet
|
||||
dao.news.daoInfo.firstSection.content=Na obrazovce Nastavení přepněte na DAO Testnet.
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Získejte některé BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Vyžádejte si BSQ na Slacku nebo kupte BSQ na Bisq.
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Zúčastněte se hlasovacího cyklu
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=Falls sie in der Vergangenheit zu Bisq bei
|
|||
dao.news.pastContribution.yourAddress=Ihre BSQ-Wallets-Adresse
|
||||
dao.news.pastContribution.requestNow=Jetzt anfordern
|
||||
|
||||
dao.news.DAOOnTestnet.title=DEN BISQ DAO AUF UNSEREM TESTNETZWERK LAUFEN LASSEN
|
||||
dao.news.DAOOnTestnet.description=Die Bisq DAO wurde auf Mainnet noch nicht veröffentlicht, jedoch können sie die Bisq DAO jetzt schon in unserem Testnet ausprobieren.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Nach DAO-Testnetzmodus wechseln
|
||||
dao.news.DAOOnTestnet.firstSection.content=Vom Einstellungsmenü ins DAO-Testnetzwerk wechseln.
|
||||
dao.news.daoInfo.title=DEN BISQ DAO AUF UNSEREM TESTNETZWERK LAUFEN LASSEN
|
||||
dao.news.daoInfo.description=Die Bisq DAO wurde auf Mainnet noch nicht veröffentlicht, jedoch können sie die Bisq DAO jetzt schon in unserem Testnet ausprobieren.
|
||||
dao.news.daoInfo.firstSection.title=1. Nach DAO-Testnetzmodus wechseln
|
||||
dao.news.daoInfo.firstSection.content=Vom Einstellungsmenü ins DAO-Testnetzwerk wechseln.
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Einige BSQ erwerben
|
||||
dao.news.DAOOnTestnet.secondSection.content=Fragen sie einfach auf Slack nach BSQ oder kaufen sie direkt BSQ in Bisq.
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Beim Wahl-Zyklus teilhaben
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=Si ha contribuido a Bisq por favor use la
|
|||
dao.news.pastContribution.yourAddress=Su dirección de monedero BSQ
|
||||
dao.news.pastContribution.requestNow=Solicitar ahora
|
||||
|
||||
dao.news.DAOOnTestnet.title=CORRER LA DAO BISQ EN TESTNET
|
||||
dao.news.DAOOnTestnet.description=La red principal de la DAO Bisq aún no se ha lanzado pero puede aprender acerca de la DAO ejecutándola en la testnet.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Cambiar a Modo Testnet
|
||||
dao.news.DAOOnTestnet.firstSection.content=Cambiar a la testnet desde la pantalla de Configuración
|
||||
dao.news.daoInfo.title=CORRER LA DAO BISQ EN TESTNET
|
||||
dao.news.daoInfo.description=La red principal de la DAO Bisq aún no se ha lanzado pero puede aprender acerca de la DAO ejecutándola en la testnet.
|
||||
dao.news.daoInfo.firstSection.title=1. Cambiar a Modo Testnet
|
||||
dao.news.daoInfo.firstSection.content=Cambiar a la testnet desde la pantalla de Configuración
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Adquirir algunos BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Solicitar BSQ en Slack o comprar BSQ en Bisq
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Participar en un ciclo de votación
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=اگر در رابطه با کیف پول
|
|||
dao.news.pastContribution.yourAddress=آدرس کیفپول BSQ شما
|
||||
dao.news.pastContribution.requestNow=حالا درخواست دهید.
|
||||
|
||||
dao.news.DAOOnTestnet.title=BISQ DAO را روی شبکه تستی، اجرا کنید.
|
||||
dao.news.DAOOnTestnet.description=کیف پول Bisq DAO شبکه اصلی هنوز راه اندازی نشده است، اما شما می توانید با اجرای کیف پول Bisq DAO روی شبکه تستی، در مورد آن چیزهایی را یاد بگیرید.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. به حالت شبکه تستی DAO تغییر وضعیت دهید.
|
||||
dao.news.DAOOnTestnet.firstSection.content=از صفحه تنظیمات، به شبکه تستی DAO بروید.
|
||||
dao.news.daoInfo.title=BISQ DAO را روی شبکه تستی، اجرا کنید.
|
||||
dao.news.daoInfo.description=کیف پول Bisq DAO شبکه اصلی هنوز راه اندازی نشده است، اما شما می توانید با اجرای کیف پول Bisq DAO روی شبکه تستی، در مورد آن چیزهایی را یاد بگیرید.
|
||||
dao.news.daoInfo.firstSection.title=1. به حالت شبکه تستی DAO تغییر وضعیت دهید.
|
||||
dao.news.daoInfo.firstSection.content=از صفحه تنظیمات، به شبکه تستی DAO بروید.
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. چند BSQ را خریداری نمایید.
|
||||
dao.news.DAOOnTestnet.secondSection.content=روی اسلک برای BSQ درخواست دهید و یا روی کیف پول Bisq ، BSQ را خریداری کنید.
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. در یک چرخه رای گیری شرکت کنید.
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=Si vous avez participé à Bisq, veuillez
|
|||
dao.news.pastContribution.yourAddress=Adresse de votre portefeuille BSQ
|
||||
dao.news.pastContribution.requestNow=Demander maintenant
|
||||
|
||||
dao.news.DAOOnTestnet.title=LANCEZ LA DAO DE BISQ SUR NOTRE TESTNET
|
||||
dao.news.DAOOnTestnet.description=Le mainnet de la DAO de Bisq n'est pas encore lancé mais vous pouvez en savoir plus sur la DAO de Bisq en l'exécutant sur notre testnet.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Passer sur le mode Testnet de la DAO
|
||||
dao.news.DAOOnTestnet.firstSection.content=Passez au Testnet de la DAO à partir de l'écran des paramètres.
|
||||
dao.news.daoInfo.title=LANCEZ LA DAO DE BISQ SUR NOTRE TESTNET
|
||||
dao.news.daoInfo.description=Le mainnet de la DAO de Bisq n'est pas encore lancé mais vous pouvez en savoir plus sur la DAO de Bisq en l'exécutant sur notre testnet.
|
||||
dao.news.daoInfo.firstSection.title=1. Passer sur le mode Testnet de la DAO
|
||||
dao.news.daoInfo.firstSection.content=Passez au Testnet de la DAO à partir de l'écran des paramètres.
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Acquérir des BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Demander des BSQ sur Slack ou acheter des BSQ sur Bisq.
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Participer à un cycle de vote
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=Se hai contribuito a Bisq, utilizza l'indi
|
|||
dao.news.pastContribution.yourAddress=L'indirizzo del tuo wallet BSQ
|
||||
dao.news.pastContribution.requestNow=Richiedi ora
|
||||
|
||||
dao.news.DAOOnTestnet.title=ESEGUI LA BISQ DAO NEL NOSTRO TESTNET
|
||||
dao.news.DAOOnTestnet.description=La mainnet Bisq DAO non è ancora stata lanciata, ma puoi conoscere Bisq DAO eseguendolo sulla nostra testnet.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Passa alla modalità Testnet DAO
|
||||
dao.news.DAOOnTestnet.firstSection.content=Passa a DAO Testnet dalla schermata Impostazioni.
|
||||
dao.news.daoInfo.title=ESEGUI LA BISQ DAO NEL NOSTRO TESTNET
|
||||
dao.news.daoInfo.description=La mainnet Bisq DAO non è ancora stata lanciata, ma puoi conoscere Bisq DAO eseguendolo sulla nostra testnet.
|
||||
dao.news.daoInfo.firstSection.title=1. Passa alla modalità Testnet DAO
|
||||
dao.news.daoInfo.firstSection.content=Passa a DAO Testnet dalla schermata Impostazioni.
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Acquista un po' di BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Richiedi BSQ su Slack o Acquista BSQ su Bisq.
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Partecipa a un Ciclo di Votazione
|
||||
|
@ -2396,7 +2396,7 @@ popup.info.multiplePaymentAccounts.headline=Disponibili più conti di pagamento
|
|||
popup.info.multiplePaymentAccounts.msg=Hai più account di pagamento disponibili per questa offerta. Assicurati di aver scelto quello giusto.
|
||||
|
||||
popup.accountSigning.selectAccounts.headline=Seleziona conti di pagamento
|
||||
popup.accountSigning.selectAccounts.description=In base al metodo di pagamento e al momento in cui verranno selezionati tutti i conti di pagamento collegati a una controversia in cui si è verificato un pagamento
|
||||
popup.accountSigning.selectAccounts.description=In base al metodo di pagamento e al momento in cui verranno selezionati tutti i conti di pagamento collegati a una controversia in cui si è verificato un pagamento
|
||||
popup.accountSigning.selectAccounts.signAll=Firma tutti i metodi di pagamento
|
||||
popup.accountSigning.selectAccounts.datePicker=Seleziona il momento in cui verranno firmati gli account
|
||||
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=Bisqに貢献している場合は、以
|
|||
dao.news.pastContribution.yourAddress=あなたのBSQウォレットアドレス
|
||||
dao.news.pastContribution.requestNow=今すぐリクエスト
|
||||
|
||||
dao.news.DAOOnTestnet.title=私達のテストネットでBISQ DAOを起動
|
||||
dao.news.DAOOnTestnet.description=メインネットBisq DAOはまだ起動されていませんが、私達のテストネットで実行することでBisq DAOについて学ぶことができます。
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. DAOテストネットモードに切り替え
|
||||
dao.news.DAOOnTestnet.firstSection.content=設定画面からDAOテストネットへ切り替え
|
||||
dao.news.daoInfo.title=私達のテストネットでBISQ DAOを起動
|
||||
dao.news.daoInfo.description=メインネットBisq DAOはまだ起動されていませんが、私達のテストネットで実行することでBisq DAOについて学ぶことができます。
|
||||
dao.news.daoInfo.firstSection.title=1. DAOテストネットモードに切り替え
|
||||
dao.news.daoInfo.firstSection.content=設定画面からDAOテストネットへ切り替え
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. BSQを取得する
|
||||
dao.news.DAOOnTestnet.secondSection.content=SlackでBSQをリクエストするか、BisqでBSQを購入してください。
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. 投票サイクルに参加する
|
||||
|
|
|
@ -422,7 +422,7 @@ offerbook.info.sellAboveMarketPrice=Você irá receber {0} a mais do que o atual
|
|||
offerbook.info.buyBelowMarketPrice=Você irá pagar {0} a menos do que o atual preço de mercado (atualizado a cada minuto).
|
||||
offerbook.info.buyAtFixedPrice=Você irá comprar nesse preço fixo.
|
||||
offerbook.info.sellAtFixedPrice=Você irá vender neste preço fixo.
|
||||
offerbook.info.noArbitrationInUserLanguage=Em caso de disputa, a arbitragem para essa oferta será realizada em {0}. O idioma atualmente está definido como {1}.
|
||||
offerbook.info.noArbitrationInUserLanguage=Em caso de disputa, a arbitragem para essa oferta será realizada em {0}. O idioma atualmente está definido como {1}.
|
||||
offerbook.info.roundedFiatVolume=O valor foi arredondado para aumentar a privacidade da sua negociação.
|
||||
|
||||
####################################################################
|
||||
|
@ -1065,7 +1065,7 @@ setting.preferences.dao.isDaoFullNode=Executar Bisq como nó completo DAO
|
|||
setting.preferences.dao.rpcUser=Nome de usuário de RPC
|
||||
setting.preferences.dao.rpcPw=Senha de RPC
|
||||
setting.preferences.dao.blockNotifyPort=Bloquear porta de notificação
|
||||
setting.preferences.dao.fullNodeInfo=Para executar o Bisq como nó completo da DAO você precisa ter Bitcoin Core em rodando localmente e RPC ativado. Todos os requisitos estão documentados em '' {0} ''.
|
||||
setting.preferences.dao.fullNodeInfo=Para executar o Bisq como nó completo da DAO você precisa ter Bitcoin Core em rodando localmente e RPC ativado. Todos os requisitos estão documentados em '' {0} ''.
|
||||
setting.preferences.dao.fullNodeInfo.ok=Abrir página de documentos
|
||||
setting.preferences.dao.fullNodeInfo.cancel=Não, eu fico com o modo nó lite
|
||||
settings.preferences.editCustomExplorer.headline=Explorer Settings
|
||||
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=Se você já contribuiu para a Bisq, use o
|
|||
dao.news.pastContribution.yourAddress=Seu Endereço de Carteira BSQ
|
||||
dao.news.pastContribution.requestNow=Solicitar agora
|
||||
|
||||
dao.news.DAOOnTestnet.title=RODE O DAO DA BISQ EM NOSSA TESTNET
|
||||
dao.news.DAOOnTestnet.description=A rede principal da DAO do Bisq ainda não foi lançada, mas você pode aprender sobre a DAO do Bisq executando-a na nossa rede de testes.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Mude para o Modo Testnet da DAO
|
||||
dao.news.DAOOnTestnet.firstSection.content=Mude para o Testnet da DAO na seção Configurações.
|
||||
dao.news.daoInfo.title=RODE O DAO DA BISQ EM NOSSA TESTNET
|
||||
dao.news.daoInfo.description=A rede principal da DAO do Bisq ainda não foi lançada, mas você pode aprender sobre a DAO do Bisq executando-a na nossa rede de testes.
|
||||
dao.news.daoInfo.firstSection.title=1. Mude para o Modo Testnet da DAO
|
||||
dao.news.daoInfo.firstSection.content=Mude para o Testnet da DAO na seção Configurações.
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Adquira alguns BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Solicite BSQ no Slack ou Compre BSQ na Bisq.
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Participe de um Ciclo de Votação
|
||||
|
|
|
@ -1065,7 +1065,7 @@ setting.preferences.dao.isDaoFullNode=Executar Bisq como nó completo OAD
|
|||
setting.preferences.dao.rpcUser=Nome de usuário de RPC
|
||||
setting.preferences.dao.rpcPw=Senha de RPC
|
||||
setting.preferences.dao.blockNotifyPort=Bloquear porta de notificação
|
||||
setting.preferences.dao.fullNodeInfo=Para executar o Bisq como nó completo da OAD você precisa ter Bitcoin Core em execução local e RPC ativado. Todos os requerimentos estão documentados em '' {0} ''.
|
||||
setting.preferences.dao.fullNodeInfo=Para executar o Bisq como nó completo da OAD você precisa ter Bitcoin Core em execução local e RPC ativado. Todos os requerimentos estão documentados em '' {0} ''.
|
||||
setting.preferences.dao.fullNodeInfo.ok=Abrir página de documentos
|
||||
setting.preferences.dao.fullNodeInfo.cancel=Não, eu fico com o modo nó lite
|
||||
settings.preferences.editCustomExplorer.headline=Explorer Settings
|
||||
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=Se você contribuiu para o Bisq, por favor
|
|||
dao.news.pastContribution.yourAddress=O seu endereço da carteira BSQ
|
||||
dao.news.pastContribution.requestNow=Solicitar agora
|
||||
|
||||
dao.news.DAOOnTestnet.title=EXECUTE A OAD DO BISQ NA NOSSA REDE DE TESTES
|
||||
dao.news.DAOOnTestnet.description=A mainnet da OAD do Bisq ainda não foi lançada, mas você pode aprender sobre a OAD do Bisq executando-a na nossa testnet.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Mudar para Modo Testnet da OAD
|
||||
dao.news.DAOOnTestnet.firstSection.content=Mude para a Testnet da OAD no painel de Definições
|
||||
dao.news.daoInfo.title=EXECUTE A OAD DO BISQ NA NOSSA REDE DE TESTES
|
||||
dao.news.daoInfo.description=A mainnet da OAD do Bisq ainda não foi lançada, mas você pode aprender sobre a OAD do Bisq executando-a na nossa testnet.
|
||||
dao.news.daoInfo.firstSection.title=1. Mudar para Modo Testnet da OAD
|
||||
dao.news.daoInfo.firstSection.content=Mude para a Testnet da OAD no painel de Definições
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Obtenha alguns BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Solicite BSQ no Slack ou Compre BSQ no Bisq
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Participe num Ciclo de Votação
|
||||
|
@ -2999,5 +2999,5 @@ validation.phone.invalidCharacters=O número de telfone {0} contém carácteres
|
|||
validation.phone.insufficientDigits=There are not enough digits in {0} to be a valid phone number
|
||||
validation.phone.tooManyDigits=There are too many digits in {0} to be a valid phone number
|
||||
validation.phone.invalidDialingCode=Country dialing code for number {0} is invalid for country {1}. The correct dialing code is {2}.
|
||||
validation.invalidAddressList=Deve ser um lista de endereços válidos separados por vírgulas
|
||||
validation.invalidAddressList=Deve ser um lista de endereços válidos separados por vírgulas
|
||||
validation.capitual.invalidFormat=Must be a valid CAP code of format: CAP-XXXXXX (6 alphanumeric characters)
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=Если вы помогли Bisq в пр
|
|||
dao.news.pastContribution.yourAddress=Адрес вашего кошелька BSQ
|
||||
dao.news.pastContribution.requestNow=Запросить
|
||||
|
||||
dao.news.DAOOnTestnet.title=ЗАПУСТИТЬ ДАО BISQ В НАШЕЙ ТЕСТОВОЙ СЕТИ
|
||||
dao.news.DAOOnTestnet.description=Основная сеть ДАО Bisq еще не запущена, но вы можете узнать о ней подробнее, запустив ДАО в тестовой сети.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Переключиться в режим тестовой сети ДАО
|
||||
dao.news.DAOOnTestnet.firstSection.content=Переключитесь на тестовую сеть ДАО в настройках.
|
||||
dao.news.daoInfo.title=ЗАПУСТИТЬ ДАО BISQ В НАШЕЙ ТЕСТОВОЙ СЕТИ
|
||||
dao.news.daoInfo.description=Основная сеть ДАО Bisq еще не запущена, но вы можете узнать о ней подробнее, запустив ДАО в тестовой сети.
|
||||
dao.news.daoInfo.firstSection.title=1. Переключиться в режим тестовой сети ДАО
|
||||
dao.news.daoInfo.firstSection.content=Переключитесь на тестовую сеть ДАО в настройках.
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Приобрести BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Запросите BSQ в Slack или купите BSQ в Bisq.
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Принять участие в цикле голосования
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=If you have contributed to Bisq please use
|
|||
dao.news.pastContribution.yourAddress=Your BSQ Wallet Address
|
||||
dao.news.pastContribution.requestNow=Request now
|
||||
|
||||
dao.news.DAOOnTestnet.title=RUN THE BISQ DAO ON OUR TESTNET
|
||||
dao.news.DAOOnTestnet.description=The mainnet Bisq DAO is not launched yet but you can learn about the Bisq DAO by running it on our testnet.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Switch to DAO Testnet Mode
|
||||
dao.news.DAOOnTestnet.firstSection.content=Switch to DAO Testnet from the Settings screen.
|
||||
dao.news.daoInfo.title=RUN THE BISQ DAO ON OUR TESTNET
|
||||
dao.news.daoInfo.description=The mainnet Bisq DAO is not launched yet but you can learn about the Bisq DAO by running it on our testnet.
|
||||
dao.news.daoInfo.firstSection.title=1. Switch to DAO Testnet Mode
|
||||
dao.news.daoInfo.firstSection.content=Switch to DAO Testnet from the Settings screen.
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Acquire Some BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Request BSQ on Slack or Buy BSQ on Bisq.
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Participate in a Voting Cycle
|
||||
|
|
|
@ -926,7 +926,7 @@ funds.tx.daoTxFee=Phí đào cho giao dịch BSQ
|
|||
funds.tx.reimbursementRequestTxFee=Yêu cầu bồi hoàn
|
||||
funds.tx.compensationRequestTxFee=Yêu cầu bồi thường
|
||||
funds.tx.dustAttackTx=Số dư nhỏ đã nhận
|
||||
funds.tx.dustAttackTx.popup=Giao dịch này đang gửi một lượng BTC rất nhỏ vào ví của bạn và có thể đây là cách các công ty phân tích chuỗi đang tìm cách theo dõi ví của bạn.\nNếu bạn sử dụng đầu ra giao dịch đó cho một giao dịch chi tiêu, họ sẽ phát hiện ra rằng rất có thể bạn cũng là người sở hửu cái ví kia (nhập coin). \n\nĐể bảo vệ quyền riêng tư của bạn, ví Bisq sẽ bỏ qua các đầu ra có số dư nhỏ dành cho mục đích chi tiêu cũng như hiển thị số dư. Bạn có thể thiết lập ngưỡng khi một đầu ra được cho là có số dư nhỏ trong phần cài đặt.
|
||||
funds.tx.dustAttackTx.popup=Giao dịch này đang gửi một lượng BTC rất nhỏ vào ví của bạn và có thể đây là cách các công ty phân tích chuỗi đang tìm cách theo dõi ví của bạn.\nNếu bạn sử dụng đầu ra giao dịch đó cho một giao dịch chi tiêu, họ sẽ phát hiện ra rằng rất có thể bạn cũng là người sở hửu cái ví kia (nhập coin). \n\nĐể bảo vệ quyền riêng tư của bạn, ví Bisq sẽ bỏ qua các đầu ra có số dư nhỏ dành cho mục đích chi tiêu cũng như hiển thị số dư. Bạn có thể thiết lập ngưỡng khi một đầu ra được cho là có số dư nhỏ trong phần cài đặt.
|
||||
|
||||
####################################################################
|
||||
# Support
|
||||
|
@ -1260,9 +1260,9 @@ account.altcoin.popup.ZEC.msg=When using Zcash you can only use the transparent
|
|||
# suppress inspection "UnusedProperty"
|
||||
account.altcoin.popup.XZC.msg=When using Zcoin you can only use the transparent (traceable) addresses, not the untraceable addresses, because the mediator or arbitrator would not be able to verify the transaction with untraceable addresses at a block explorer.
|
||||
# suppress inspection "UnusedProperty"
|
||||
account.altcoin.popup.grin.msg=GRIN yêu cầu một quá trình tương tác giữa người gửi và người nhận để thực hiện một giao dịch. Vui lòng làm theo hướng dẫn từ trang web của dự án GRIN để gửi và nhận GRIN đúng cách. (người nhận cần phải trực tuyến hoặc ít nhất là trực tuyến trong một khung thời gian nhất định).\n\nBisq chỉ hỗ trợ ví Grinbox(wallet713) theo định dạng URL.\n\nNgười gửi GRIN phải cung cấp bằng chứng là họ đã gửi GRIN thành công. Nếu ví không thể cung cấp bằng chứng đó, nếu có tranh chấp thì sẽ được giải quyết theo hướng có lợi cho người nhận GRIN. Vui lòng đảm bảo rằng bạn sử dụng phần mềm Grinbox mới nhất có hỗ trợ bằng chứng giao dịch và bạn hiểu quy trình chuyển và nhận GRIN cũng như tạo bằng chứng. \n\nXem https://github.com/vault713/wallet713/blob/master/docs/usage.md#transaction-proofs-grinbox-only để biết thêm thông tin về công cụ bằng chứng Grinbox.
|
||||
account.altcoin.popup.grin.msg=GRIN yêu cầu một quá trình tương tác giữa người gửi và người nhận để thực hiện một giao dịch. Vui lòng làm theo hướng dẫn từ trang web của dự án GRIN để gửi và nhận GRIN đúng cách. (người nhận cần phải trực tuyến hoặc ít nhất là trực tuyến trong một khung thời gian nhất định).\n\nBisq chỉ hỗ trợ ví Grinbox(wallet713) theo định dạng URL.\n\nNgười gửi GRIN phải cung cấp bằng chứng là họ đã gửi GRIN thành công. Nếu ví không thể cung cấp bằng chứng đó, nếu có tranh chấp thì sẽ được giải quyết theo hướng có lợi cho người nhận GRIN. Vui lòng đảm bảo rằng bạn sử dụng phần mềm Grinbox mới nhất có hỗ trợ bằng chứng giao dịch và bạn hiểu quy trình chuyển và nhận GRIN cũng như tạo bằng chứng. \n\nXem https://github.com/vault713/wallet713/blob/master/docs/usage.md#transaction-proofs-grinbox-only để biết thêm thông tin về công cụ bằng chứng Grinbox.
|
||||
# suppress inspection "UnusedProperty"
|
||||
account.altcoin.popup.beam.msg=BEAM yêu cầu một quá trình tương tác giữa người gửi và người nhận để thực hiện một giao dịch. \n\nVui lòng làm theo hướng dẫn từ trang web của dự án BEAM để gửi và nhận BEAM đúng cách. (người nhận cần phải trực tuyến hoặc ít nhất là trực tuyến trong một khung thời gian nhất định).\n\nNgười gửi BEAM phải cung cấp bằng chứng là họ đã gửi BEAM thành công. Vui lòng đảm bảo là bạn sử dụng phần mềm ví có thể tạo ra một bằng chứng như vậy. Nếu ví không thể cung cấp bằng chứng đó, nếu có tranh chấp thì sẽ được giải quyết theo hướng có lợi cho người nhận BEAM.
|
||||
account.altcoin.popup.beam.msg=BEAM yêu cầu một quá trình tương tác giữa người gửi và người nhận để thực hiện một giao dịch. \n\nVui lòng làm theo hướng dẫn từ trang web của dự án BEAM để gửi và nhận BEAM đúng cách. (người nhận cần phải trực tuyến hoặc ít nhất là trực tuyến trong một khung thời gian nhất định).\n\nNgười gửi BEAM phải cung cấp bằng chứng là họ đã gửi BEAM thành công. Vui lòng đảm bảo là bạn sử dụng phần mềm ví có thể tạo ra một bằng chứng như vậy. Nếu ví không thể cung cấp bằng chứng đó, nếu có tranh chấp thì sẽ được giải quyết theo hướng có lợi cho người nhận BEAM.
|
||||
# suppress inspection "UnusedProperty"
|
||||
account.altcoin.popup.pars.msg=Trading ParsiCoin on Bisq requires that you understand and fulfill the following requirements:\n\nTo send PARS you must use the official ParsiCoin Wallet version 3.0.0 or higher. \n\nYou can Check your Transaction Hash and Transaction Key on Transactions Section on your GUI Wallet (ParsiPay) You need to right Click on the Transaction and then click on show details. \n\nIn the event that arbitration is necessary, you must present the following to an mediator or arbitrator: 1) the Transaction Hash, 2) the Transaction Key, and 3) the recipient's PARS address. The mediator or arbitrator will then verify the PARS transfer using the ParsiCoin Block Explorer (http://explorer.parsicoin.net/#check_payment).\n\nFailure to provide the required information to the mediator or arbitrator will result in losing the dispute case. In all cases of dispute, the ParsiCoin sender bears 100% of the burden of responsibility in verifying transactions to an mediator or arbitrator. \n\nIf you do not understand these requirements, do not trade on Bisq. First, seek help at the ParsiCoin Discord (https://discord.gg/c7qmFNh).
|
||||
|
||||
|
@ -1296,7 +1296,7 @@ account.seed.backup.warning=Please note that the seed words are NOT a replacemen
|
|||
account.seed.warn.noPw.msg=Bạn đã tạo mật khẩu ví để bảo vệ tránh hiển thị Seed words.\n\nBạn có muốn hiển thị Seed words?
|
||||
account.seed.warn.noPw.yes=Có và không hỏi lại
|
||||
account.seed.enterPw=Nhập mật khẩu để xem seed words
|
||||
account.seed.restore.info=Vui lòng tạo sao lưu dự phòng trước khi tiến hành khôi phục ví từ các từ khởi tạo. Phải hiểu rằng việc khôi phục ví chỉ nên thực hiện trong các trường hợp khẩn cấp và có thể gây sự cố với cơ sở dữ liệu ví bên trong.\nĐây không phải là một cách sao lưu dự phòng! Vui lòng sử dụng sao lưu dự phòng từ thư mục dữ liệu của ứng dụng để khôi phục trạng thái ban đầu của ứng dụng.\n\nSau khi khôi phục ứng dụng sẽ tự động tắt. Sau khi bạn khởi động lại, ứng dụng sẽ tái đồng bộ với mạng Bitcoin. Quá trình này có thể mất một lúc và tiêu tốn khá nhiều CPU, đặc biệt là khi ví đã cũ và có nhiều giao dịch. Vui lòng không làm gián đoạn quá trình này, nếu không bạn có thể sẽ phảỉ xóa file chuỗi SPV một lần nữa hoặc lặp lại quy trình khôi phục.
|
||||
account.seed.restore.info=Vui lòng tạo sao lưu dự phòng trước khi tiến hành khôi phục ví từ các từ khởi tạo. Phải hiểu rằng việc khôi phục ví chỉ nên thực hiện trong các trường hợp khẩn cấp và có thể gây sự cố với cơ sở dữ liệu ví bên trong.\nĐây không phải là một cách sao lưu dự phòng! Vui lòng sử dụng sao lưu dự phòng từ thư mục dữ liệu của ứng dụng để khôi phục trạng thái ban đầu của ứng dụng.\n\nSau khi khôi phục ứng dụng sẽ tự động tắt. Sau khi bạn khởi động lại, ứng dụng sẽ tái đồng bộ với mạng Bitcoin. Quá trình này có thể mất một lúc và tiêu tốn khá nhiều CPU, đặc biệt là khi ví đã cũ và có nhiều giao dịch. Vui lòng không làm gián đoạn quá trình này, nếu không bạn có thể sẽ phảỉ xóa file chuỗi SPV một lần nữa hoặc lặp lại quy trình khôi phục.
|
||||
account.seed.restore.ok=Được, hãy thực hiện khôi phục và tắt ứng dụng Bisq
|
||||
|
||||
|
||||
|
@ -1917,24 +1917,24 @@ dao.feeTx.confirm.details={0} fee: {1}\nMining fee: {2} ({3} Satoshis/vbyte)\nTr
|
|||
dao.feeTx.issuanceProposal.confirm.details={0} fee: {1}\nBTC needed for BSQ issuance: {2} ({3} Satoshis/BSQ)\nMining fee: {4} ({5} Satoshis/vbyte)\nTransaction vsize: {6} vKb\n\nIf your request is approved, you will receive the amount you requested net of the 2 BSQ proposal fee.\n\nAre you sure you want to publish the {7} transaction?
|
||||
|
||||
dao.news.bisqDAO.title=DAO BISQ
|
||||
dao.news.bisqDAO.description=Vì BIsq là sàn giao dịch phi tập trung và không bị kiểm duyệt, bởi vậy mô hình vận hành của nó, DAO Bisq và đồng BSQ là công cụ giúp điều này trở thành hiện thực.
|
||||
dao.news.bisqDAO.description=Vì BIsq là sàn giao dịch phi tập trung và không bị kiểm duyệt, bởi vậy mô hình vận hành của nó, DAO Bisq và đồng BSQ là công cụ giúp điều này trở thành hiện thực.
|
||||
dao.news.bisqDAO.readMoreLink=Tìm hiểu thêm về DAO Bisq
|
||||
|
||||
dao.news.pastContribution.title=BẠN ĐÃ THAM GIA ĐÓNG GÓP? YÊU CẦU BSQ
|
||||
dao.news.pastContribution.description=Nếu như bạn đã tham giao đóng góp cho Bisq, vui lòng sử dụng ví BSQ phía dưới và thực hiện một yêu cầu tham gia vào sự kiện phát hành BSQ genesis.
|
||||
dao.news.pastContribution.description=Nếu như bạn đã tham giao đóng góp cho Bisq, vui lòng sử dụng ví BSQ phía dưới và thực hiện một yêu cầu tham gia vào sự kiện phát hành BSQ genesis.
|
||||
dao.news.pastContribution.yourAddress=Ví BSQ của bạn
|
||||
dao.news.pastContribution.requestNow=Yêu cầu ngay
|
||||
|
||||
dao.news.DAOOnTestnet.title=CHẠY DAO BISQ TRÊN TESTNET CỦA CHÚNG TÔI
|
||||
dao.news.DAOOnTestnet.description=Mainnet DAO Bisq chưa ra mắt nhưng bạn vẫn có thể tìm hiểu về DAO Bisq bằng cách chạy nó trên testnet.
|
||||
dao.news.DAOOnTestnet.firstSection.title=1. Chuyển qua chế độ Testnet DAO
|
||||
dao.news.DAOOnTestnet.firstSection.content=1. Chuyển qua chế độ Testnet DAO từ màn hình cài đặt
|
||||
dao.news.daoInfo.title=CHẠY DAO BISQ TRÊN TESTNET CỦA CHÚNG TÔI
|
||||
dao.news.daoInfo.description=Mainnet DAO Bisq chưa ra mắt nhưng bạn vẫn có thể tìm hiểu về DAO Bisq bằng cách chạy nó trên testnet.
|
||||
dao.news.daoInfo.firstSection.title=1. Chuyển qua chế độ Testnet DAO
|
||||
dao.news.daoInfo.firstSection.content=1. Chuyển qua chế độ Testnet DAO từ màn hình cài đặt
|
||||
dao.news.DAOOnTestnet.secondSection.title=2. Kiếm BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=Yêu cầu BSQ trên Slack hoặc Mua BSQ trên Bisq
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3. Tham gia một vòng bỏ phiếu
|
||||
dao.news.DAOOnTestnet.thirdSection.content=Tạo đề xuất và bỏ phiếu cho đề xuất để thanh đổi nhiều khía cạnh của Bisq.
|
||||
dao.news.DAOOnTestnet.thirdSection.content=Tạo đề xuất và bỏ phiếu cho đề xuất để thanh đổi nhiều khía cạnh của Bisq.
|
||||
dao.news.DAOOnTestnet.fourthSection.title=4. Tìm hiểu về BSQ Block Explorer
|
||||
dao.news.DAOOnTestnet.fourthSection.content=Vì BSQ chỉa là bitcoin, bạn có thể thấy các giao dịch BSQ trên trình duyện bitcoin Block Explorer của chúng tôi.
|
||||
dao.news.DAOOnTestnet.fourthSection.content=Vì BSQ chỉa là bitcoin, bạn có thể thấy các giao dịch BSQ trên trình duyện bitcoin Block Explorer của chúng tôi.
|
||||
dao.news.DAOOnTestnet.readMoreLink=Đọc tài liệu đầy đủ
|
||||
|
||||
dao.monitor.daoState=Trạng thái DAO
|
||||
|
@ -1952,7 +1952,7 @@ dao.monitor.table.seedPeers=Seed node: {0}
|
|||
|
||||
dao.monitor.daoState.headline=Trạng thái DAO
|
||||
dao.monitor.daoState.table.headline=Chuỗi Hash trạng thái DAO
|
||||
dao.monitor.daoState.table.blockHeight=Chiều cao khối
|
||||
dao.monitor.daoState.table.blockHeight=Chiều cao khối
|
||||
dao.monitor.daoState.table.hash=Hash của trạng thái DAO
|
||||
dao.monitor.daoState.table.prev=Hash trước đó
|
||||
dao.monitor.daoState.conflictTable.headline=Hash trạng thái DAO từ đối tác đang trong xung dột
|
||||
|
@ -1970,7 +1970,7 @@ dao.monitor.proposal.table.hash=Hash trạng thái đề xuất
|
|||
dao.monitor.proposal.table.prev=Hash trước đó
|
||||
dao.monitor.proposal.table.numProposals=Số đề xuất
|
||||
|
||||
dao.monitor.isInConflictWithSeedNode=Dữ liệu trên máy bạn không đồng bộ với ít nhất một seed node. Vui lòng đồng bộ lại trạng thái DAO.
|
||||
dao.monitor.isInConflictWithSeedNode=Dữ liệu trên máy bạn không đồng bộ với ít nhất một seed node. Vui lòng đồng bộ lại trạng thái DAO.
|
||||
dao.monitor.isInConflictWithNonSeedNode=Một trong các đối tác của bạn không đồng bộ với mạng nhưng node của bạn vẫn đang đồng bộ với các seed node.
|
||||
dao.monitor.daoStateInSync=Node trên máy tính của bạn đang dồng bộ với mạng
|
||||
|
||||
|
@ -2361,7 +2361,7 @@ popup.warning.mandatoryUpdate.trading=Please update to the latest Bisq version.
|
|||
popup.warning.mandatoryUpdate.dao=Please update to the latest Bisq version. A mandatory update was released which disables the Bisq DAO and BSQ for old versions. Please check out the Bisq Forum for more information.
|
||||
popup.warning.disable.dao=The Bisq DAO and BSQ are temporary disabled. Please check out the Bisq Forum for more information.
|
||||
popup.warning.noFilter=We did not receive a filter object from the seed nodes. This is a not expected situation. Please inform the Bisq developers.
|
||||
popup.warning.burnBTC=Không thể thực hiện giao dịch, vì phí đào {0} vượt quá số lượng {1} cần chuyển. Vui lòng chờ tới khi phí đào thấp xuống hoặc khi bạn tích lũy đủ BTC để chuyển.
|
||||
popup.warning.burnBTC=Không thể thực hiện giao dịch, vì phí đào {0} vượt quá số lượng {1} cần chuyển. Vui lòng chờ tới khi phí đào thấp xuống hoặc khi bạn tích lũy đủ BTC để chuyển.
|
||||
|
||||
popup.warning.openOffer.makerFeeTxRejected=The maker fee transaction for offer with ID {0} was rejected by the Bitcoin network.\nTransaction ID={1}.\nThe offer has been removed to avoid further problems.\nPlease go to \"Settings/Network info\" and do a SPV resync.\nFor further help please contact the Bisq support channel at the Bisq Keybase team.
|
||||
|
||||
|
|
|
@ -377,10 +377,10 @@ offerbook.volume={0}(最小 - 最大)
|
|||
offerbook.deposit=BTC 保证金(%)
|
||||
offerbook.deposit.help=交易双方均已支付保证金确保这个交易正常进行。这会在交易完成时退还。
|
||||
|
||||
offerbook.createOfferToBuy=创建新的报价来买入 {0}
|
||||
offerbook.createOfferToSell=创建新的报价来卖出 {0}
|
||||
offerbook.createOfferToBuy=创建新的报价来买入 {0}
|
||||
offerbook.createOfferToSell=创建新的报价来卖出 {0}
|
||||
offerbook.createOfferToBuy.withFiat=创建新的报价用 {1} 购买 {0}
|
||||
offerbook.createOfferToSell.forFiat=创建新的报价以 {1} 出售 {0}
|
||||
offerbook.createOfferToSell.forFiat=创建新的报价以 {1} 出售 {0}
|
||||
offerbook.createOfferToBuy.withCrypto=创建新的卖出报价 {0} (买入 {1})
|
||||
offerbook.createOfferToSell.forCrypto=创建新的买入报价 {0}(卖出 {1})
|
||||
|
||||
|
@ -658,7 +658,7 @@ portfolio.pending.step2_buyer.moneyGramMTCNInfo.headline=发送授权编号和
|
|||
portfolio.pending.step2_buyer.moneyGramMTCNInfo.msg=请通过电邮发送授权编号和照片给 BTC 卖家。\n收据必须清楚地向卖家写明您的全名、城市、国家或地区、数量。卖方的电子邮件是:{0}。\n\n您把授权编号和合同发给卖方了吗?
|
||||
portfolio.pending.step2_buyer.westernUnionMTCNInfo.headline=发送 MTCN 和收据
|
||||
portfolio.pending.step2_buyer.westernUnionMTCNInfo.msg=请通过电邮发送 MTCN(追踪号码)和照片给 BTC 卖家。\n收据必须清楚地向卖家写明您的全名、城市、国家或地区、数量。卖方的电子邮件是:{0}。\n\n您把 MTCN 和合同发给卖方了吗?
|
||||
portfolio.pending.step2_buyer.halCashInfo.headline=请发送 HalCash 代码
|
||||
portfolio.pending.step2_buyer.halCashInfo.headline=请发送 HalCash 代码
|
||||
portfolio.pending.step2_buyer.halCashInfo.msg=您需要向 BTC 卖家发送带有 HalCash 代码和交易 ID({0})的文本消息。\n\n卖方的手机号码是 {1} 。\n\n您是否已经将代码发送至卖家?
|
||||
portfolio.pending.step2_buyer.fasterPaymentsHolderNameInfo=有些银行可能会要求接收方的姓名。在较旧的 Bisq 客户端创建的快速支付帐户没有提供收款人的姓名,所以请使用交易聊天来获得收款人姓名(如果需要)。
|
||||
portfolio.pending.step2_buyer.confirmStart.headline=确定您已经付款
|
||||
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=如果您对 Bisq 有贡献,请使用下
|
|||
dao.news.pastContribution.yourAddress=你的 BSQ 钱包地址
|
||||
dao.news.pastContribution.requestNow=现在申请
|
||||
|
||||
dao.news.DAOOnTestnet.title=在我们的测试网络上运行 BISQ DAO
|
||||
dao.news.DAOOnTestnet.description=核心网络 Bisq DAO 还没有启动,但是您可以通过在我们的测试网络上运行它来了解 Bisq DAO 。
|
||||
dao.news.DAOOnTestnet.firstSection.title=1.切换至 DAO 测试网络模式
|
||||
dao.news.DAOOnTestnet.firstSection.content=从设置页面切换到 DAO 测试网络。
|
||||
dao.news.daoInfo.title=在我们的测试网络上运行 BISQ DAO
|
||||
dao.news.daoInfo.description=核心网络 Bisq DAO 还没有启动,但是您可以通过在我们的测试网络上运行它来了解 Bisq DAO 。
|
||||
dao.news.daoInfo.firstSection.title=1.切换至 DAO 测试网络模式
|
||||
dao.news.daoInfo.firstSection.content=从设置页面切换到 DAO 测试网络。
|
||||
dao.news.DAOOnTestnet.secondSection.title=2.获得一些 BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=在 Slack 上申请 BSQ 或在 Bisq 上购买 BSQ 。
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3.参与投票周期
|
||||
|
@ -1989,7 +1989,7 @@ dao.factsAndFigures.dashboard.avgPrice30=30天平均 BSQ/BTC 交易价格
|
|||
dao.factsAndFigures.dashboard.avgUSDPrice90=90 days volume weighted average BSQ/USD price
|
||||
dao.factsAndFigures.dashboard.avgUSDPrice30=30 days volume weighted average BSQ/USD price
|
||||
dao.factsAndFigures.dashboard.marketCap=Market capitalisation (based on 30 days average BSQ/USD price)
|
||||
dao.factsAndFigures.dashboard.availableAmount=总共可用的 BSQ
|
||||
dao.factsAndFigures.dashboard.availableAmount=总共可用的 BSQ
|
||||
dao.factsAndFigures.dashboard.volumeUsd=Total trade volume in USD
|
||||
dao.factsAndFigures.dashboard.volumeBtc=Total trade volume in BTC
|
||||
dao.factsAndFigures.dashboard.averageBsqUsdPriceFromSelection=Average BSQ/USD trade price from selected time period in chart
|
||||
|
@ -2001,8 +2001,8 @@ dao.factsAndFigures.supply.issued=已发放的 BSQ
|
|||
dao.factsAndFigures.supply.compReq=赔偿要求
|
||||
dao.factsAndFigures.supply.reimbursement=Reimbursement requests
|
||||
dao.factsAndFigures.supply.genesisIssueAmount=在初始交易中心有问题的 BSQ
|
||||
dao.factsAndFigures.supply.compRequestIssueAmount=报偿申请发放的 BSQ
|
||||
dao.factsAndFigures.supply.reimbursementAmount=退还申请发放的 BSQ
|
||||
dao.factsAndFigures.supply.compRequestIssueAmount=报偿申请发放的 BSQ
|
||||
dao.factsAndFigures.supply.reimbursementAmount=退还申请发放的 BSQ
|
||||
dao.factsAndFigures.supply.totalIssued=Total issued BSQ
|
||||
dao.factsAndFigures.supply.totalBurned=Total burned BSQ
|
||||
dao.factsAndFigures.supply.chart.tradeFee.toolTip={0}\n{1}
|
||||
|
|
|
@ -1925,10 +1925,10 @@ dao.news.pastContribution.description=如果您對 Bisq 有貢獻,請使用下
|
|||
dao.news.pastContribution.yourAddress=你的 BSQ 錢包地址
|
||||
dao.news.pastContribution.requestNow=現在申請
|
||||
|
||||
dao.news.DAOOnTestnet.title=在我們的測試網絡上運行 BISQ DAO
|
||||
dao.news.DAOOnTestnet.description=核心網絡 Bisq DAO 還沒有啟動,但是您可以通過在我們的測試網絡上運行它來了解 Bisq DAO 。
|
||||
dao.news.DAOOnTestnet.firstSection.title=1.切換至 DAO 測試網絡模式
|
||||
dao.news.DAOOnTestnet.firstSection.content=從設置頁面切換到 DAO 測試網絡。
|
||||
dao.news.daoInfo.title=在我們的測試網絡上運行 BISQ DAO
|
||||
dao.news.daoInfo.description=核心網絡 Bisq DAO 還沒有啟動,但是您可以通過在我們的測試網絡上運行它來了解 Bisq DAO 。
|
||||
dao.news.daoInfo.firstSection.title=1.切換至 DAO 測試網絡模式
|
||||
dao.news.daoInfo.firstSection.content=從設置頁面切換到 DAO 測試網絡。
|
||||
dao.news.DAOOnTestnet.secondSection.title=2.獲得一些 BSQ
|
||||
dao.news.DAOOnTestnet.secondSection.content=在 Slack 上申請 BSQ 或在 Bisq 上購買 BSQ 。
|
||||
dao.news.DAOOnTestnet.thirdSection.title=3.參與投票週期
|
||||
|
|
|
@ -2,29 +2,26 @@ package bisq.desktop.main.dao.news;
|
|||
|
||||
import bisq.desktop.common.view.ActivatableView;
|
||||
import bisq.desktop.common.view.FxmlView;
|
||||
import bisq.desktop.components.BsqAddressTextField;
|
||||
import bisq.desktop.components.TitledGroupBg;
|
||||
import bisq.desktop.util.GUIUtil;
|
||||
import bisq.desktop.main.overlays.popups.Popup;
|
||||
import bisq.desktop.util.Layout;
|
||||
|
||||
import bisq.core.btc.wallet.BsqWalletService;
|
||||
import bisq.core.locale.Res;
|
||||
import bisq.core.util.coin.BsqFormatter;
|
||||
|
||||
import bisq.common.util.Tuple3;
|
||||
import bisq.common.config.Config;
|
||||
import bisq.common.config.ConfigFileEditor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Hyperlink;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.Separator;
|
||||
import javafx.scene.control.ToggleButton;
|
||||
import javafx.scene.layout.AnchorPane;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.Pane;
|
||||
import javafx.scene.layout.Priority;
|
||||
import javafx.scene.layout.VBox;
|
||||
|
||||
import javafx.geometry.Insets;
|
||||
import javafx.geometry.Orientation;
|
||||
|
@ -34,14 +31,12 @@ import static bisq.desktop.util.FormBuilder.*;
|
|||
@FxmlView
|
||||
public class NewsView extends ActivatableView<HBox, Void> {
|
||||
|
||||
private final BsqWalletService bsqWalletService;
|
||||
private final BsqFormatter bsqFormatter;
|
||||
private BsqAddressTextField addressTextField;
|
||||
private final ConfigFileEditor configFileEditor;
|
||||
private ToggleButton daoActivatedToggleButton;
|
||||
|
||||
@Inject
|
||||
private NewsView(BsqWalletService bsqWalletService, BsqFormatter bsqFormatter) {
|
||||
this.bsqWalletService = bsqWalletService;
|
||||
this.bsqFormatter = bsqFormatter;
|
||||
private NewsView(Config config) {
|
||||
configFileEditor = new ConfigFileEditor(config.configFile);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -67,15 +62,14 @@ public class NewsView extends ActivatableView<HBox, Void> {
|
|||
|
||||
int rowIndex = 0;
|
||||
|
||||
TitledGroupBg titledGroupBg = addTitledGroupBg(gridPane, rowIndex, 14, Res.get("dao.news.DAOOnTestnet.title"));
|
||||
TitledGroupBg titledGroupBg = addTitledGroupBg(gridPane, rowIndex, 14, Res.get("dao.news.daoInfo.title"));
|
||||
titledGroupBg.getStyleClass().addAll("last", "dao-news-titled-group");
|
||||
Label daoTestnetDescription = addMultilineLabel(gridPane, ++rowIndex, Res.get("dao.news.DAOOnTestnet.description"), 0, 370);
|
||||
Label daoTestnetDescription = addMultilineLabel(gridPane, ++rowIndex, Res.get("dao.news.daoInfo.description"), 0, 370);
|
||||
GridPane.setMargin(daoTestnetDescription, new Insets(Layout.FLOATING_LABEL_DISTANCE, 0, 8, 0));
|
||||
daoTestnetDescription.getStyleClass().add("dao-news-content");
|
||||
|
||||
rowIndex = addInfoSection(gridPane, rowIndex, Res.get("dao.news.DAOOnTestnet.firstSection.title"),
|
||||
Res.get("dao.news.DAOOnTestnet.firstSection.content"),
|
||||
"https://docs.bisq.network/getting-started-dao.html#switch-to-testnet-mode");
|
||||
rowIndex = addInfoSectionEnableDao(gridPane, rowIndex, Res.get("dao.news.daoInfo.firstSection.title"),
|
||||
Res.get("dao.news.daoInfo.firstSection.content"));
|
||||
rowIndex = addInfoSection(gridPane, rowIndex, Res.get("dao.news.DAOOnTestnet.secondSection.title"),
|
||||
Res.get("dao.news.DAOOnTestnet.secondSection.content"),
|
||||
"https://docs.bisq.network/getting-started-dao.html#acquire-some-bsq");
|
||||
|
@ -108,6 +102,19 @@ public class NewsView extends ActivatableView<HBox, Void> {
|
|||
return rowIndex;
|
||||
}
|
||||
|
||||
private int addInfoSectionEnableDao(GridPane gridPane, int rowIndex, String title, String content) {
|
||||
Label titleLabel = addLabel(gridPane, ++rowIndex, title);
|
||||
GridPane.setMargin(titleLabel, new Insets(6, 0, 0, 0));
|
||||
|
||||
titleLabel.getStyleClass().add("dao-news-section-header");
|
||||
Label contentLabel = addMultilineLabel(gridPane, ++rowIndex, content, -Layout.FLOATING_LABEL_DISTANCE, 370);
|
||||
contentLabel.getStyleClass().add("dao-news-section-content");
|
||||
|
||||
daoActivatedToggleButton = addSlideToggleButton(gridPane, ++rowIndex, Res.get("setting.preferences.dao.activated"));
|
||||
|
||||
return rowIndex;
|
||||
}
|
||||
|
||||
private AnchorPane createBisqDAOContent() {
|
||||
AnchorPane anchorPane = new AnchorPane();
|
||||
anchorPane.setMinWidth(373);
|
||||
|
@ -125,37 +132,22 @@ public class NewsView extends ActivatableView<HBox, Void> {
|
|||
Hyperlink hyperlink = addHyperlinkWithIcon(bisqDAOPane, ++rowIndex, Res.get("dao.news.bisqDAO.readMoreLink"), "https://bisq.network/docs/dao");
|
||||
hyperlink.getStyleClass().add("dao-news-link");
|
||||
|
||||
GridPane pastContributorsPane = new GridPane();
|
||||
AnchorPane.setBottomAnchor(pastContributorsPane, 0d);
|
||||
|
||||
pastContributorsPane.setVgap(5);
|
||||
pastContributorsPane.setMaxWidth(373);
|
||||
|
||||
rowIndex = 0;
|
||||
TitledGroupBg contributorsTitledGroup = addTitledGroupBg(pastContributorsPane, rowIndex, 4, Res.get("dao.news.pastContribution.title"));
|
||||
contributorsTitledGroup.getStyleClass().addAll("last", "dao-news-titled-group");
|
||||
Label pastContributionDescription = addMultilineLabel(pastContributorsPane, ++rowIndex, Res.get("dao.news.pastContribution.description"));
|
||||
pastContributionDescription.getStyleClass().add("dao-news-content");
|
||||
Tuple3<Label, BsqAddressTextField, VBox> tuple = addLabelBsqAddressTextField(pastContributorsPane, ++rowIndex,
|
||||
Res.get("dao.news.pastContribution.yourAddress"),
|
||||
Layout.FIRST_ROW_DISTANCE);
|
||||
addressTextField = tuple.second;
|
||||
Button requestNowButton = addPrimaryActionButton(pastContributorsPane, ++rowIndex, Res.get("dao.news.pastContribution.requestNow"), 0);
|
||||
requestNowButton.setMaxWidth(Double.MAX_VALUE);
|
||||
GridPane.setHgrow(requestNowButton, Priority.ALWAYS);
|
||||
requestNowButton.setOnAction(e -> GUIUtil.openWebPage("https://bisq.network/docs/dao/genesis"));
|
||||
|
||||
anchorPane.getChildren().addAll(bisqDAOPane, pastContributorsPane);
|
||||
anchorPane.getChildren().add(bisqDAOPane);
|
||||
|
||||
return anchorPane;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void activate() {
|
||||
addressTextField.setAddress(bsqFormatter.getBsqAddressStringFromAddress(bsqWalletService.getUnusedAddress()));
|
||||
daoActivatedToggleButton.setSelected(false);
|
||||
daoActivatedToggleButton.setOnAction(e -> {
|
||||
configFileEditor.setOption("daoActivated", Boolean.toString(daoActivatedToggleButton.isSelected()));
|
||||
new Popup().information(Res.get("setting.preferences.dao.activated.popup")).useShutDownButton().show();
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void deactivate() {
|
||||
daoActivatedToggleButton.setOnAction(null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -60,6 +60,7 @@ import bisq.core.util.validation.RegexValidatorFactory;
|
|||
import bisq.common.UserThread;
|
||||
import bisq.common.app.DevEnv;
|
||||
import bisq.common.config.Config;
|
||||
import bisq.common.config.ConfigFileEditor;
|
||||
import bisq.common.util.Tuple2;
|
||||
import bisq.common.util.Tuple3;
|
||||
import bisq.common.util.Utilities;
|
||||
|
@ -127,7 +128,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
private InputTextField transactionFeeInputTextField, ignoreTradersListInputTextField, ignoreDustThresholdInputTextField,
|
||||
autoConfRequiredConfirmationsTf, autoConfServiceAddressTf, autoConfTradeLimitTf, /*referralIdInputTextField,*/
|
||||
rpcUserTextField, blockNotifyPortTextField;
|
||||
private ToggleButton isDaoFullNodeToggleButton;
|
||||
private ToggleButton isDaoFullNodeToggleButton, daoActivatedToggleButton;
|
||||
private PasswordTextField rpcPwTextField;
|
||||
private TitledGroupBg daoOptionsTitledGroupBg;
|
||||
|
||||
|
@ -163,6 +164,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
private final boolean daoOptionsSet;
|
||||
private final boolean displayStandbyModeFeature;
|
||||
private ChangeListener<Filter> filterChangeListener;
|
||||
private final ConfigFileEditor configFileEditor;
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -197,6 +199,8 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
!rpcPassword.isEmpty() &&
|
||||
rpcBlockNotificationPort != Config.UNSPECIFIED_PORT;
|
||||
this.displayStandbyModeFeature = Utilities.isLinux() || Utilities.isOSX() || Utilities.isWindows();
|
||||
|
||||
this.configFileEditor = new ConfigFileEditor(config.configFile);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -212,8 +216,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
|
||||
initializeGeneralOptions();
|
||||
initializeDisplayOptions();
|
||||
if (DevEnv.isDaoActivated())
|
||||
initializeDaoOptions();
|
||||
initializeDaoOptions();
|
||||
initializeSeparator();
|
||||
initializeAutoConfirmOptions();
|
||||
initializeDisplayCurrencies();
|
||||
|
@ -230,8 +233,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
activateDisplayCurrencies();
|
||||
activateDisplayPreferences();
|
||||
activateAutoConfirmPreferences();
|
||||
if (DevEnv.isDaoActivated())
|
||||
activateDaoPreferences();
|
||||
activateDaoPreferences();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -240,8 +242,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
deactivateDisplayCurrencies();
|
||||
deactivateDisplayPreferences();
|
||||
deactivateAutoConfirmPreferences();
|
||||
if (DevEnv.isDaoActivated())
|
||||
deactivateDaoPreferences();
|
||||
deactivateDaoPreferences();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -603,7 +604,8 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
}
|
||||
|
||||
private void initializeDisplayOptions() {
|
||||
TitledGroupBg titledGroupBg = addTitledGroupBg(root, ++gridRow, 7, Res.get("setting.preferences.displayOptions"), Layout.GROUP_DISTANCE);
|
||||
TitledGroupBg titledGroupBg = addTitledGroupBg(root, ++gridRow, 8,
|
||||
Res.get("setting.preferences.displayOptions"), Layout.GROUP_DISTANCE);
|
||||
GridPane.setColumnSpan(titledGroupBg, 1);
|
||||
|
||||
showOwnOffersInOfferBook = addSlideToggleButton(root, gridRow, Res.get("setting.preferences.showOwnOffers"), Layout.FIRST_ROW_AND_GROUP_DISTANCE);
|
||||
|
@ -621,8 +623,16 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
}
|
||||
|
||||
private void initializeDaoOptions() {
|
||||
daoOptionsTitledGroupBg = addTitledGroupBg(root, ++gridRow, 4, Res.get("setting.preferences.daoOptions"), Layout.GROUP_DISTANCE);
|
||||
resyncDaoFromResourcesButton = addButton(root, gridRow, Res.get("setting.preferences.dao.resyncFromResources.label"), Layout.TWICE_FIRST_ROW_AND_GROUP_DISTANCE);
|
||||
int rowSpan = DevEnv.isDaoActivated() ? 5 : 1;
|
||||
daoOptionsTitledGroupBg = addTitledGroupBg(root, ++gridRow, rowSpan,
|
||||
Res.get("setting.preferences.daoOptions"), Layout.GROUP_DISTANCE);
|
||||
daoActivatedToggleButton = addSlideToggleButton(root, gridRow,
|
||||
Res.get("setting.preferences.dao.activated"), Layout.FIRST_ROW_AND_GROUP_DISTANCE);
|
||||
if (!DevEnv.isDaoActivated()) {
|
||||
return;
|
||||
}
|
||||
|
||||
resyncDaoFromResourcesButton = addButton(root, ++gridRow, Res.get("setting.preferences.dao.resyncFromResources.label"));
|
||||
resyncDaoFromResourcesButton.setMaxWidth(Double.MAX_VALUE);
|
||||
GridPane.setHgrow(resyncDaoFromResourcesButton, Priority.ALWAYS);
|
||||
|
||||
|
@ -998,6 +1008,19 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
}
|
||||
|
||||
private void activateDaoPreferences() {
|
||||
daoActivatedToggleButton.setSelected(DevEnv.isDaoActivated());
|
||||
daoActivatedToggleButton.setOnAction(e -> {
|
||||
// We do not use preferences as we need to handle the value at startup before preferences are loaded,
|
||||
// so we write the option to the properties file. If the program argument is set it has higher priority
|
||||
// and the property file value is ignored.
|
||||
configFileEditor.setOption("daoActivated", Boolean.toString(daoActivatedToggleButton.isSelected()));
|
||||
new Popup().information(Res.get("setting.preferences.dao.activated.popup")).useShutDownButton().show();
|
||||
});
|
||||
|
||||
if (!DevEnv.isDaoActivated()) {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean daoFullNode = preferences.isDaoFullNode();
|
||||
isDaoFullNodeToggleButton.setSelected(daoFullNode);
|
||||
|
||||
|
@ -1145,6 +1168,11 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
}
|
||||
|
||||
private void deactivateDaoPreferences() {
|
||||
daoActivatedToggleButton.setOnAction(null);
|
||||
if (!DevEnv.isDaoActivated()) {
|
||||
return;
|
||||
}
|
||||
|
||||
resyncDaoFromResourcesButton.setOnAction(null);
|
||||
resyncDaoFromGenesisButton.setOnAction(null);
|
||||
bsqAverageTrimThresholdTextField.textProperty().removeListener(bsqAverageTrimThresholdListener);
|
||||
|
|
|
@ -129,7 +129,8 @@ public class P2PDataStorage implements MessageListener, ConnectionListener, Pers
|
|||
private boolean initialRequestApplied = false;
|
||||
|
||||
private final Broadcaster broadcaster;
|
||||
private final AppendOnlyDataStoreService appendOnlyDataStoreService;
|
||||
@VisibleForTesting
|
||||
final AppendOnlyDataStoreService appendOnlyDataStoreService;
|
||||
private final ProtectedDataStoreService protectedDataStoreService;
|
||||
private final ResourceDataStoreService resourceDataStoreService;
|
||||
|
||||
|
@ -565,13 +566,6 @@ public class P2PDataStorage implements MessageListener, ConnectionListener, Pers
|
|||
removeExpiredEntriesTimer = UserThread.runPeriodically(this::removeExpiredEntries, CHECK_TTL_INTERVAL_SEC);
|
||||
}
|
||||
|
||||
// Domain access should use the concrete appendOnlyDataStoreService if available. The Historical data store require
|
||||
// care which data should be accessed (live data or all data).
|
||||
@VisibleForTesting
|
||||
Map<ByteArray, PersistableNetworkPayload> getAppendOnlyDataStoreMap() {
|
||||
return appendOnlyDataStoreService.getMap();
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// MessageListener implementation
|
||||
|
@ -676,7 +670,7 @@ public class P2PDataStorage implements MessageListener, ConnectionListener, Pers
|
|||
}
|
||||
|
||||
ByteArray hashAsByteArray = new ByteArray(payload.getHash());
|
||||
boolean payloadHashAlreadyInStore = appendOnlyDataStoreService.getMap().containsKey(hashAsByteArray);
|
||||
boolean payloadHashAlreadyInStore = appendOnlyDataStoreService.getMap(payload).containsKey(hashAsByteArray);
|
||||
|
||||
// Store already knows about this payload. Ignore it unless the caller specifically requests a republish.
|
||||
if (payloadHashAlreadyInStore && !reBroadcast) {
|
||||
|
@ -693,13 +687,16 @@ public class P2PDataStorage implements MessageListener, ConnectionListener, Pers
|
|||
}
|
||||
|
||||
// Add the payload and publish the state update to the appendOnlyDataStoreListeners
|
||||
boolean wasAdded = false;
|
||||
if (!payloadHashAlreadyInStore) {
|
||||
appendOnlyDataStoreService.put(hashAsByteArray, payload);
|
||||
appendOnlyDataStoreListeners.forEach(e -> e.onAdded(payload));
|
||||
wasAdded = appendOnlyDataStoreService.put(hashAsByteArray, payload);
|
||||
if (wasAdded) {
|
||||
appendOnlyDataStoreListeners.forEach(e -> e.onAdded(payload));
|
||||
}
|
||||
}
|
||||
|
||||
// Broadcast the payload if requested by caller
|
||||
if (allowBroadcast)
|
||||
if (allowBroadcast && wasAdded)
|
||||
broadcaster.broadcast(new AddPersistableNetworkPayloadMessage(payload), sender);
|
||||
|
||||
return true;
|
||||
|
|
|
@ -25,14 +25,17 @@ import javax.inject.Inject;
|
|||
import com.google.common.annotations.VisibleForTesting;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* Used for PersistableNetworkPayload data which gets appended to a map storage.
|
||||
*/
|
||||
|
@ -75,21 +78,25 @@ public class AppendOnlyDataStoreService {
|
|||
services.forEach(service -> service.readFromResourcesSync(postFix));
|
||||
}
|
||||
|
||||
|
||||
public Map<P2PDataStorage.ByteArray, PersistableNetworkPayload> getMap() {
|
||||
return services.stream()
|
||||
.flatMap(service -> {
|
||||
Map<P2PDataStorage.ByteArray, PersistableNetworkPayload> map = service instanceof HistoricalDataStoreService ?
|
||||
((HistoricalDataStoreService) service).getMapOfAllData() :
|
||||
service.getMap();
|
||||
return map.entrySet().stream();
|
||||
})
|
||||
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
|
||||
public Map<P2PDataStorage.ByteArray, PersistableNetworkPayload> getMap(PersistableNetworkPayload payload) {
|
||||
return findService(payload)
|
||||
.map(service -> service instanceof HistoricalDataStoreService ?
|
||||
((HistoricalDataStoreService<?>) service).getMapOfAllData() :
|
||||
service.getMap())
|
||||
.orElse(new HashMap<>());
|
||||
}
|
||||
|
||||
public void put(P2PDataStorage.ByteArray hashAsByteArray, PersistableNetworkPayload payload) {
|
||||
services.stream()
|
||||
public boolean put(P2PDataStorage.ByteArray hashAsByteArray, PersistableNetworkPayload payload) {
|
||||
Optional<MapStoreService<? extends PersistableNetworkPayloadStore<? extends PersistableNetworkPayload>, PersistableNetworkPayload>> optionalService = findService(payload);
|
||||
optionalService.ifPresent(service -> service.putIfAbsent(hashAsByteArray, payload));
|
||||
return optionalService.isPresent();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private Optional<MapStoreService<? extends PersistableNetworkPayloadStore<? extends PersistableNetworkPayload>, PersistableNetworkPayload>> findService(
|
||||
PersistableNetworkPayload payload) {
|
||||
return services.stream()
|
||||
.filter(service -> service.canHandle(payload))
|
||||
.forEach(service -> service.putIfAbsent(hashAsByteArray, payload));
|
||||
.findAny();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,11 +34,10 @@ import org.junit.Test;
|
|||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
|
||||
import static bisq.network.p2p.storage.TestState.SavedTestState;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import static bisq.network.p2p.storage.TestState.*;
|
||||
|
||||
/**
|
||||
* Tests of the P2PDataStore entry points that use the PersistableNetworkPayload type
|
||||
*
|
||||
|
@ -131,7 +130,7 @@ public class P2PDataStoragePersistableNetworkPayloadTest {
|
|||
doAddAndVerify(this.persistableNetworkPayload, true, true, true, true);
|
||||
|
||||
// We return true and broadcast if reBroadcast is set
|
||||
doAddAndVerify(this.persistableNetworkPayload, this.reBroadcast, false, false, this.reBroadcast);
|
||||
// doAddAndVerify(this.persistableNetworkPayload, this.reBroadcast, false, false, this.reBroadcast);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,7 +39,9 @@ import org.junit.Assert;
|
|||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import static bisq.network.p2p.storage.TestState.*;
|
||||
import static bisq.network.p2p.storage.TestState.MAX_SEQUENCE_NUMBER_MAP_SIZE_BEFORE_PURGE;
|
||||
import static bisq.network.p2p.storage.TestState.SavedTestState;
|
||||
import static bisq.network.p2p.storage.TestState.getTestNodeAddress;
|
||||
|
||||
/**
|
||||
* Tests of the P2PDataStore behavior that expires old Entrys periodically.
|
||||
|
@ -79,7 +81,7 @@ public class P2PDataStorageRemoveExpiredTest {
|
|||
|
||||
this.testState.mockedStorage.removeExpiredEntries();
|
||||
|
||||
Assert.assertTrue(this.testState.mockedStorage.getAppendOnlyDataStoreMap().containsKey(new P2PDataStorage.ByteArray(persistableNetworkPayload.getHash())));
|
||||
Assert.assertTrue(this.testState.mockedStorage.appendOnlyDataStoreService.getMap(persistableNetworkPayload).containsKey(new P2PDataStorage.ByteArray(persistableNetworkPayload.getHash())));
|
||||
}
|
||||
|
||||
// TESTCASE: Correctly skips non-persistable entries that are not expired
|
||||
|
|
|
@ -187,9 +187,9 @@ public class TestState {
|
|||
P2PDataStorage.ByteArray hash = new P2PDataStorage.ByteArray(persistableNetworkPayload.getHash());
|
||||
|
||||
if (expectedHashMapAndDataStoreUpdated)
|
||||
Assert.assertEquals(persistableNetworkPayload, this.mockedStorage.getAppendOnlyDataStoreMap().get(hash));
|
||||
Assert.assertEquals(persistableNetworkPayload, this.mockedStorage.appendOnlyDataStoreService.getMap(persistableNetworkPayload).get(hash));
|
||||
else
|
||||
Assert.assertEquals(beforeState.persistableNetworkPayloadBeforeOp, this.mockedStorage.getAppendOnlyDataStoreMap().get(hash));
|
||||
Assert.assertEquals(beforeState.persistableNetworkPayloadBeforeOp, this.mockedStorage.appendOnlyDataStoreService.getMap(persistableNetworkPayload).get(hash));
|
||||
|
||||
if (expectedListenersSignaled)
|
||||
verify(this.appendOnlyDataStoreListener).onAdded(persistableNetworkPayload);
|
||||
|
@ -398,7 +398,7 @@ public class TestState {
|
|||
private SavedTestState(TestState testState, PersistableNetworkPayload persistableNetworkPayload) {
|
||||
this(testState);
|
||||
P2PDataStorage.ByteArray hash = new P2PDataStorage.ByteArray(persistableNetworkPayload.getHash());
|
||||
this.persistableNetworkPayloadBeforeOp = testState.mockedStorage.getAppendOnlyDataStoreMap().get(hash);
|
||||
this.persistableNetworkPayloadBeforeOp = testState.mockedStorage.appendOnlyDataStoreService.getMap(persistableNetworkPayload).get(hash);
|
||||
}
|
||||
|
||||
private SavedTestState(TestState testState, ProtectedStorageEntry protectedStorageEntry) {
|
||||
|
|
|
@ -21,8 +21,6 @@ import bisq.network.p2p.storage.P2PDataStorage;
|
|||
import bisq.network.p2p.storage.payload.PersistableNetworkPayload;
|
||||
import bisq.network.p2p.storage.persistence.AppendOnlyDataStoreService;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Implementation of an in-memory AppendOnlyDataStoreService that can be used in tests. Removes overhead
|
||||
* involving files, resources, and services for tests that don't need it.
|
||||
|
@ -35,11 +33,7 @@ public class AppendOnlyDataStoreServiceFake extends AppendOnlyDataStoreService {
|
|||
addService(new MapStoreServiceFake());
|
||||
}
|
||||
|
||||
public Map<P2PDataStorage.ByteArray, PersistableNetworkPayload> getMap() {
|
||||
return super.getMap();
|
||||
}
|
||||
|
||||
public void put(P2PDataStorage.ByteArray hashAsByteArray, PersistableNetworkPayload payload) {
|
||||
super.put(hashAsByteArray, payload);
|
||||
public boolean put(P2PDataStorage.ByteArray hashAsByteArray, PersistableNetworkPayload payload) {
|
||||
return super.put(hashAsByteArray, payload);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue