diff --git a/.github/workflows/build_bisq_module.yml b/.github/workflows/build_bisq_module.yml index 3397f0c3b0..2ae80dbea5 100644 --- a/.github/workflows/build_bisq_module.yml +++ b/.github/workflows/build_bisq_module.yml @@ -20,6 +20,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4.2.0 + with: + submodules: 'true' - name: Setup Java JDK uses: actions/setup-java@v4.5.0 @@ -33,4 +35,4 @@ jobs: arguments: build -x test build-root-directory: ${{ inputs.build-root-dir }} gradle-executable: ./gradlew - gradle-version: 8.9 \ No newline at end of file + gradle-version: 8.9 diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..70aa7c29e5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "wallets/bitcoind"] + path = wallets/bitcoind + url = https://github.com/bisq-network/bitcoind.git diff --git a/wallets/bitcoind b/wallets/bitcoind new file mode 160000 index 0000000000..5571e273d3 --- /dev/null +++ b/wallets/bitcoind @@ -0,0 +1 @@ +Subproject commit 5571e273d30ba44afc374525aab24687f36427d5 diff --git a/wallets/bitcoind/bitcoind/build.gradle.kts b/wallets/bitcoind/bitcoind/build.gradle.kts deleted file mode 100644 index b2af4646c1..0000000000 --- a/wallets/bitcoind/bitcoind/build.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -plugins { - id("bisq.java-library") - id("bisq.java-integration-tests") -} - -dependencies { - implementation(project(":core")) - implementation(project(":json-rpc")) - - implementation(libs.jeromq) - - integrationTestImplementation(project(":regtest")) -} \ No newline at end of file diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindConnectionFailureIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindConnectionFailureIntegrationTests.java deleted file mode 100644 index 1f63b6ecab..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindConnectionFailureIntegrationTests.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.regtest.ConnectionFailureIntegrationTests; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import bisq.wallets.regtest.process.MultiProcessCoordinator; -import org.junit.jupiter.api.extension.ExtendWith; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindConnectionFailureIntegrationTests - extends ConnectionFailureIntegrationTests { - public BitcoindConnectionFailureIntegrationTests(BitcoindRegtestSetup regtestSetup) { - super(regtestSetup); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindCreateWalletNameDocumentationIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindCreateWalletNameDocumentationIntegrationTests.java deleted file mode 100644 index c94405cc82..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindCreateWalletNameDocumentationIntegrationTests.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.bitcoind.rpc.calls.BitcoindCreateWalletRpcCall; -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.json_rpc.RpcClientFactory; -import bisq.wallets.json_rpc.JsonRpcClient; -import bisq.wallets.regtest.AbstractRegtestSetup; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.condition.EnabledOnOs; -import org.junit.jupiter.api.condition.OS; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.api.io.TempDir; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; - -import static org.assertj.core.api.Assertions.assertThat; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindCreateWalletNameDocumentationIntegrationTests { - private final Path dataDir; - private final JsonRpcClient rpcClient; - private final BitcoindDaemon daemon; - - public BitcoindCreateWalletNameDocumentationIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.dataDir = regtestSetup.getDataDir(); - this.daemon = regtestSetup.getDaemon(); - RpcConfig rpcConfig = regtestSetup.getRpcConfig(); - this.rpcClient = RpcClientFactory.createDaemonRpcClient(rpcConfig); - } - - @Test - @EnabledOnOs({OS.MAC, OS.LINUX}) - void createWalletWithAbsolutePath(@TempDir Path walletPath) { - String walletName = walletPath.toAbsolutePath().toString(); - var request = BitcoindCreateWalletRpcCall.Request.builder() - .walletName(walletName) - .passphrase(AbstractRegtestSetup.WALLET_PASSPHRASE) - .build(); - - var rpcCall = new BitcoindCreateWalletRpcCall(request); - rpcClient.call(rpcCall); - - File walletFile = walletPath.resolve("wallet.dat") - .toFile(); - assertThat(walletFile).exists(); - - daemon.unloadWallet(walletName); - } - - @Test - @EnabledOnOs({OS.MAC, OS.LINUX}) - void createWalletWithRelativePath() throws IOException { - File bitcoindWalletsDir = dataDir.resolve("regtest") - .resolve("wallets") - .toFile(); - Path newWalletDir = Files.createTempDirectory(bitcoindWalletsDir.toPath(), "bisq_"); - - String walletName = newWalletDir.getFileName() + "/b"; - var request = BitcoindCreateWalletRpcCall.Request.builder() - .walletName(walletName) - .passphrase(AbstractRegtestSetup.WALLET_PASSPHRASE) - .build(); - - var rpcCall = new BitcoindCreateWalletRpcCall(request); - rpcClient.call(rpcCall); - - File expectedWalletFile = newWalletDir.resolve("b") - .resolve("wallet.dat") - .toFile(); - assertThat(expectedWalletFile).exists(); - - daemon.unloadWallet(walletName); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindCreateWalletNameIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindCreateWalletNameIntegrationTests.java deleted file mode 100644 index a5f32ec33d..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindCreateWalletNameIntegrationTests.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.regtest.AbstractRegtestSetup; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.util.List; -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindCreateWalletNameIntegrationTests { - private final BitcoindDaemon daemon; - - public BitcoindCreateWalletNameIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.daemon = regtestSetup.getDaemon(); - } - - @Test - void createWallet() { - String walletName = "My_awesome_wallet_creation"; - daemon.createOrLoadWallet(walletName, Optional.of(AbstractRegtestSetup.WALLET_PASSPHRASE)); - - List loadedWallets = daemon.listWallets(); - assertThat(loadedWallets).contains(walletName); - - daemon.unloadWallet(walletName); - } - - @Test - void loadWallet() { - String walletName = "My_awesome_wallet_loading"; - daemon.createOrLoadWallet(walletName, Optional.of(AbstractRegtestSetup.WALLET_PASSPHRASE)); - daemon.unloadWallet(walletName); - - daemon.createOrLoadWallet(walletName, Optional.of(AbstractRegtestSetup.WALLET_PASSPHRASE)); - - List loadedWallets = daemon.listWallets(); - assertThat(loadedWallets).contains(walletName); - - daemon.unloadWallet(walletName); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindListDescriptorsIntegrationTest.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindListDescriptorsIntegrationTest.java deleted file mode 100644 index 982e2f1417..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindListDescriptorsIntegrationTest.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.bitcoind.rpc.responses.BitcoindDescriptor; -import bisq.wallets.bitcoind.rpc.responses.BitcoindListDescriptorResponse; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindListDescriptorsIntegrationTest { - private final BitcoindWallet minerWallet; - - public BitcoindListDescriptorsIntegrationTest(BitcoindRegtestSetup regtestSetup) { - this.minerWallet = regtestSetup.getMinerWallet(); - } - - @Test - void listDescriptorsTest() { - BitcoindListDescriptorResponse.Result response = minerWallet.listDescriptors().getResult(); - List descriptorList = response.getDescriptors(); - - assertThat(descriptorList).isNotEmpty() - .anySatisfy(descriptor -> assertThat(descriptor.getDesc()).startsWith("pkh([")); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindPsbtMultiSigIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindPsbtMultiSigIntegrationTests.java deleted file mode 100644 index c828c2d273..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindPsbtMultiSigIntegrationTests.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.bitcoind.rpc.calls.requests.BitcoindImportDescriptorRequestEntry; -import bisq.wallets.bitcoind.rpc.responses.*; -import bisq.wallets.core.model.AddressType; -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.regtest.AbstractRegtestSetup; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindPsbtMultiSigIntegrationTests { - - private final BitcoindRegtestSetup regtestSetup; - private final RpcConfig rpcConfig; - private final BitcoindDaemon daemon; - private final BitcoindWallet minerWallet; - - public BitcoindPsbtMultiSigIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.regtestSetup = regtestSetup; - this.rpcConfig = regtestSetup.getRpcConfig(); - this.daemon = regtestSetup.getDaemon(); - this.minerWallet = regtestSetup.getMinerWallet(); - } - - @Test - public void psbtMultiSigTest() throws InterruptedException { - var aliceWallet = regtestSetup.createAndInitializeNewWallet("alice_wallet"); - var bobWallet = regtestSetup.createAndInitializeNewWallet("bob_wallet"); - var charlieWallet = regtestSetup.createAndInitializeNewWallet("charlie_wallet"); - - String aliceXPub = getWalletXPub(aliceWallet); - String bobXPub = getWalletXPub(bobWallet); - String charlieXPub = getWalletXPub(charlieWallet); - - BitcoindWallet aliceWatchOnlyWallet = createWatchOnlyDescriptorWallet("alice"); - BitcoindWallet bobWatchOnlyWallet = createWatchOnlyDescriptorWallet("bob"); - BitcoindWallet charlieWatchOnlyWallet = createWatchOnlyDescriptorWallet("charlie"); - - String receiveDescriptor = "wsh(sortedmulti(2," + - aliceXPub + "/0/*," + - bobXPub + "/0/*," + - charlieXPub + "/0/*))"; - String receiveDescriptorWithChecksum = appendChecksumToDescriptor(receiveDescriptor); - - var receiveDescriptorImportRequest = BitcoindImportDescriptorRequestEntry.builder() - .desc(receiveDescriptorWithChecksum) - .isActive(true) - .isInternal(false) - .build(); - - aliceWatchOnlyWallet.importDescriptors(List.of(receiveDescriptorImportRequest)); - bobWatchOnlyWallet.importDescriptors(List.of(receiveDescriptorImportRequest)); - charlieWatchOnlyWallet.importDescriptors(List.of(receiveDescriptorImportRequest)); - - String changeDescriptor = "wsh(sortedmulti(2," + - aliceXPub + "/1/*," + - bobXPub + "/1/*," + - charlieXPub + "/1/*))"; - String changeDescriptorWithChecksum = appendChecksumToDescriptor(changeDescriptor); - - var changeDescriptorImportRequest = BitcoindImportDescriptorRequestEntry.builder() - .desc(changeDescriptorWithChecksum) - .isActive(true) - .isInternal(true) - .build(); - - aliceWatchOnlyWallet.importDescriptors(List.of(changeDescriptorImportRequest)); - bobWatchOnlyWallet.importDescriptors(List.of(changeDescriptorImportRequest)); - charlieWatchOnlyWallet.importDescriptors(List.of(changeDescriptorImportRequest)); - - String aliceAddress = aliceWatchOnlyWallet.getNewAddress(AddressType.BECH32, ""); - String bobAddress = bobWatchOnlyWallet.getNewAddress(AddressType.BECH32, ""); - String charlieAddress = charlieWatchOnlyWallet.getNewAddress(AddressType.BECH32, ""); - - assertThat(aliceAddress).isEqualTo(bobAddress) - .isEqualTo(charlieAddress); - regtestSetup.fundAddress(aliceAddress, 5); - - assertThat(aliceWatchOnlyWallet.getBalance()).isEqualTo(5); - assertThat(bobWatchOnlyWallet.getBalance()).isEqualTo(5); - assertThat(charlieWatchOnlyWallet.getBalance()).isEqualTo(5); - - // Create PSBT (send to Alice without Alice) - String aliceReceiveAddr = aliceWallet.getNewAddress(AddressType.BECH32, ""); - BitcoindWalletCreateFundedPsbtResponse.Result createFundedPsbtResponse = bobWatchOnlyWallet.walletCreateFundedPsbt( - Collections.emptyList(), - Map.of(aliceReceiveAddr, 4.), - Map.of("feeRate", 0.00010) - ).getResult(); - - BitcoindWalletProcessPsbtResponse.Result bobPsbtResponse = bobWallet.walletProcessPsbt( - Optional.of(AbstractRegtestSetup.WALLET_PASSPHRASE), - createFundedPsbtResponse.getPsbt() - ).getResult(); - BitcoindWalletProcessPsbtResponse.Result charliePsbtResponse = charlieWallet.walletProcessPsbt( - Optional.of(AbstractRegtestSetup.WALLET_PASSPHRASE), - createFundedPsbtResponse.getPsbt() - ).getResult(); - - // Combine PSBTs - String combinedPsbt = daemon.combinePsbt( - List.of(bobPsbtResponse.getPsbt(), charliePsbtResponse.getPsbt()) - ); - - // Finalize PSBT - BitcoindFinalizePsbtResponse.Result finalizePsbtResponse = daemon.finalizePsbt(combinedPsbt).getResult(); - assertThat(finalizePsbtResponse.isComplete()) - .isTrue(); - - // Broadcast final transaction - daemon.sendRawTransaction(finalizePsbtResponse.getHex()); - - regtestSetup.mineOneBlock(); - assertThat(aliceWallet.getBalance()) - .isGreaterThan(3.9); // Not exactly 4.0 because of fees. - } - - private String getWalletXPub(BitcoindWallet wallet) { - List descriptors = wallet.listDescriptors().getResult().getDescriptors(); - String xPub = descriptors.stream() - .map(BitcoindDescriptor::getDesc) - .filter(descriptor -> descriptor.startsWith("pkh")) - .findFirst() - .orElseThrow(); - return xPub.split("]")[1].split("/")[0]; - } - - private BitcoindWallet createWatchOnlyDescriptorWallet(String walletPrefix) { - String walletName = walletPrefix + "_watch_only_descriptor_wallet"; - daemon.createOrLoadWatchOnlyWallet(walletName); - return new BitcoindWallet(daemon, rpcConfig, walletName); - } - - private String appendChecksumToDescriptor(String descriptor) { - BitcoindGetDescriptorInfoResponse.Result receiveDescriptorInfo = minerWallet.getDescriptorInfo(descriptor).getResult(); - return receiveDescriptorInfo.getDescriptor(); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindReceiveAddrIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindReceiveAddrIntegrationTests.java deleted file mode 100644 index f67b23b348..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindReceiveAddrIntegrationTests.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.core.model.AddressType; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertTrue; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindReceiveAddrIntegrationTests { - - private final BitcoindWallet minerWallet; - - public BitcoindReceiveAddrIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.minerWallet = regtestSetup.getMinerWallet(); - } - - @Test - void getNewLegacyAddress() { - String address = minerWallet.getNewAddress(AddressType.LEGACY, ""); - assertTrue(address.startsWith("m") || address.startsWith("n"), address); - } - - @Test - void getNewP2ShSegwitAddress() { - String address = minerWallet.getNewAddress(AddressType.P2SH_SEGWIT, ""); - assertThat(address) - .startsWith("2"); - } - - @Test - void getNewBech32Address() { - String address = minerWallet.getNewAddress(AddressType.BECH32, ""); - assertThat(address) - .startsWith("bcr"); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSendAndListTxsIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSendAndListTxsIntegrationTests.java deleted file mode 100644 index 38b011fba8..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSendAndListTxsIntegrationTests.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.bitcoind.rpc.responses.BitcoindListTransactionsResponse; -import bisq.wallets.core.model.AddressType; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.net.MalformedURLException; -import java.util.List; -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindSendAndListTxsIntegrationTests { - - private final BitcoindRegtestSetup regtestSetup; - - public BitcoindSendAndListTxsIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.regtestSetup = regtestSetup; - } - - @Test - public void sendBtcAndListTxs() throws MalformedURLException, InterruptedException { - BitcoindWallet minerWallet = regtestSetup.getMinerWallet(); - - var receiverBackend = regtestSetup.createAndInitializeNewWallet("receiver_wallet"); - - String firstTxReceiverAddress = receiverBackend.getNewAddress(AddressType.BECH32, ""); - minerWallet.sendToAddress(Optional.of(BitcoindRegtestSetup.WALLET_PASSPHRASE), firstTxReceiverAddress, 1); - - String secondTxReceiverAddress = receiverBackend.getNewAddress(AddressType.BECH32, ""); - minerWallet.sendToAddress(Optional.of(BitcoindRegtestSetup.WALLET_PASSPHRASE), secondTxReceiverAddress, 1); - - String thirdTxReceiverAddress = receiverBackend.getNewAddress(AddressType.BECH32, ""); - minerWallet.sendToAddress(Optional.of(BitcoindRegtestSetup.WALLET_PASSPHRASE), thirdTxReceiverAddress, 1); - - regtestSetup.mineOneBlock(); - - List txs = receiverBackend.listTransactions(10); - assertEquals(3, txs.size()); - - BitcoindListTransactionsResponse.Entry firstTx = txs.stream().findFirst().orElseThrow(); - assertEquals(firstTxReceiverAddress, firstTx.getAddress()); - assertEquals("receive", firstTx.getCategory()); - assertEquals(100000000, firstTx.getAmount()); - assertEquals(1, firstTx.getConfirmations()); - assertEquals(0, firstTx.getWalletconflicts().length); - assertEquals("no", firstTx.getBip125Replaceable()); - - BitcoindListTransactionsResponse.Entry secondTx = txs.get(1); - assertEquals(secondTxReceiverAddress, secondTx.getAddress()); - assertEquals("receive", secondTx.getCategory()); - assertEquals(100000000, secondTx.getAmount()); - assertEquals(1, secondTx.getConfirmations()); - assertEquals(0, secondTx.getWalletconflicts().length); - assertEquals("no", secondTx.getBip125Replaceable()); - - BitcoindListTransactionsResponse.Entry thirdTx = txs.get(2); - assertEquals(thirdTxReceiverAddress, thirdTx.getAddress()); - assertEquals("receive", thirdTx.getCategory()); - assertEquals(100000000, thirdTx.getAmount()); - assertEquals(1, thirdTx.getConfirmations()); - assertEquals(0, thirdTx.getWalletconflicts().length); - assertEquals("no", thirdTx.getBip125Replaceable()); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSendAndListUnspentIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSendAndListUnspentIntegrationTests.java deleted file mode 100644 index 53af7c4706..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSendAndListUnspentIntegrationTests.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.bitcoind.rpc.responses.BitcoindListUnspentResponse; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.net.MalformedURLException; -import java.util.List; -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindSendAndListUnspentIntegrationTests { - - private final BitcoindRegtestSetup regtestSetup; - - public BitcoindSendAndListUnspentIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.regtestSetup = regtestSetup; - } - - @Test - public void listUnspent() throws MalformedURLException, InterruptedException { - BitcoindWallet minerWallet = regtestSetup.getMinerWallet(); - - BitcoindWallet receiverBackend = regtestSetup.createAndInitializeNewWallet("receiver_wallet_list_unspent"); - - String firstTxReceiverAddress = regtestSetup.sendBtcAndMineOneBlock(minerWallet, receiverBackend, 1); - String secondTxReceiverAddress = regtestSetup.sendBtcAndMineOneBlock(minerWallet, receiverBackend, 1); - String thirdTxReceiverAddress = regtestSetup.sendBtcAndMineOneBlock(minerWallet, receiverBackend, 1); - - List utxos = receiverBackend.listUnspent(); - assertEquals(3, utxos.size()); - - Optional queryResult = regtestSetup - .filterUtxosByAddress(utxos, firstTxReceiverAddress); - assertTrue(queryResult.isPresent()); - - BitcoindListUnspentResponse.Entry firstUtxo = queryResult.get(); - assertEquals("", firstUtxo.getLabel()); - assertEquals(1, firstUtxo.getAmount()); - assertEquals(3, firstUtxo.getConfirmations()); - assertTrue(firstUtxo.isSpendable()); - assertTrue(firstUtxo.isSolvable()); - assertTrue(firstUtxo.isSafe()); - - queryResult = regtestSetup.filterUtxosByAddress(utxos, secondTxReceiverAddress); - assertTrue(queryResult.isPresent()); - - BitcoindListUnspentResponse.Entry secondUtxo = queryResult.get(); - assertEquals("", secondUtxo.getLabel()); - assertEquals(1, secondUtxo.getAmount()); - assertEquals(2, secondUtxo.getConfirmations()); - assertTrue(secondUtxo.isSpendable()); - assertTrue(secondUtxo.isSolvable()); - assertTrue(secondUtxo.isSafe()); - - queryResult = regtestSetup.filterUtxosByAddress(utxos, thirdTxReceiverAddress); - assertTrue(queryResult.isPresent()); - - BitcoindListUnspentResponse.Entry thirdUtxo = queryResult.get(); - assertEquals("", thirdUtxo.getLabel()); - assertEquals(1, thirdUtxo.getAmount()); - assertEquals(1, thirdUtxo.getConfirmations()); - assertTrue(thirdUtxo.isSpendable()); - assertTrue(thirdUtxo.isSolvable()); - assertTrue(thirdUtxo.isSafe()); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSendIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSendIntegrationTests.java deleted file mode 100644 index 93ab4085eb..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSendIntegrationTests.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.core.model.AddressType; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.net.MalformedURLException; -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindSendIntegrationTests { - - private final BitcoindRegtestSetup regtestSetup; - private final BitcoindWallet minerWallet; - - public BitcoindSendIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.regtestSetup = regtestSetup; - this.minerWallet = regtestSetup.getMinerWallet(); - } - - @Test - public void sendOneBtcToAddress() throws MalformedURLException, InterruptedException { - BitcoindWallet receiverBackend = regtestSetup.createAndInitializeNewWallet("receiver_wallet_send_one_btc"); - - String receiverAddress = receiverBackend.getNewAddress(AddressType.BECH32, ""); - minerWallet.sendToAddress(Optional.of(BitcoindRegtestSetup.WALLET_PASSPHRASE), receiverAddress, 1); - regtestSetup.mineOneBlock(); - - assertThat(receiverBackend.getBalance()) - .isEqualTo(1); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSigningIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSigningIntegrationTests.java deleted file mode 100644 index 9706256631..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindSigningIntegrationTests.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.core.model.AddressType; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.util.Optional; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindSigningIntegrationTests { - private static final String MESSAGE = "my message"; - - private final BitcoindWallet minerWallet; - - public BitcoindSigningIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.minerWallet = regtestSetup.getMinerWallet(); - } - - @Test - public void signAndVerifyMessage() { - String address = minerWallet.getNewAddress(AddressType.LEGACY, ""); - String signature = minerWallet.signMessage(Optional.of(BitcoindRegtestSetup.WALLET_PASSPHRASE), address, MESSAGE); - boolean isValid = minerWallet.verifyMessage(address, signature, MESSAGE); - assertTrue(isValid); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindWalletCreationAndListIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindWalletCreationAndListIntegrationTests.java deleted file mode 100644 index 606e8fc4b9..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/BitcoindWalletCreationAndListIntegrationTests.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import bisq.wallets.regtest.bitcoind.RemoteBitcoind; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.nio.file.Path; -import java.util.List; -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindWalletCreationAndListIntegrationTests { - - private final Path dataDir; - private final RpcConfig rpcConfig; - private final BitcoindDaemon daemon; - - public BitcoindWalletCreationAndListIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.dataDir = regtestSetup.getDataDir(); - this.rpcConfig = regtestSetup.getRpcConfig(); - this.daemon = regtestSetup.getDaemon(); - } - - @Test - public void createFreshWallet() { - String walletName = "fresh_wallet"; - - Path walletFilePath = dataDir.resolve("regtest") - .resolve("wallets") - .resolve(walletName) - .resolve("wallet.dat"); - assertThat(walletFilePath).doesNotExist(); - - // Create Wallet - daemon.createOrLoadWallet(walletName, Optional.of(BitcoindRegtestSetup.WALLET_PASSPHRASE)); - assertThat(walletFilePath).exists(); - - // Unload and reload existing wallet - daemon.unloadWallet(walletName); - } - - @Test - public void loadWalletIfExisting() { - String walletName = "wallet_load_if_existing"; - - Path walletFilePath = dataDir.resolve("regtest") - .resolve("wallets") - .resolve(walletName) - .resolve("wallet.dat"); - assertThat(walletFilePath).doesNotExist(); - - // Create Wallet - daemon.createOrLoadWallet(walletName, Optional.of(BitcoindRegtestSetup.WALLET_PASSPHRASE)); - assertThat(walletFilePath).exists(); - - // Unload and reload existing wallet - daemon.unloadWallet(walletName); - daemon.createOrLoadWallet(walletName, Optional.of(BitcoindRegtestSetup.WALLET_PASSPHRASE)); - - var testWallet = new BitcoindWallet(daemon, rpcConfig, walletName); - assertThat(testWallet.getBalance()) - .isZero(); - - // Cleanup, otherwise other tests don't start on a clean state. - daemon.unloadWallet(walletName); - } - - @Test - void listWallets() { - List results = daemon.listWallets(); - assertThat(results).contains(RemoteBitcoind.MINER_WALLET_NAME); - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/zmq/BitcoindZeroMqBlockHashIntegrationIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/zmq/BitcoindZeroMqBlockHashIntegrationIntegrationTests.java deleted file mode 100644 index cf2b49b1ea..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/zmq/BitcoindZeroMqBlockHashIntegrationIntegrationTests.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import lombok.extern.slf4j.Slf4j; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.util.List; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - -@ExtendWith(BitcoindExtension.class) -@Slf4j -public class BitcoindZeroMqBlockHashIntegrationIntegrationTests { - - private final BitcoindRegtestSetup regtestSetup; - private final CountDownLatch listenerReceivedBlockHashLatch = new CountDownLatch(1); - - public BitcoindZeroMqBlockHashIntegrationIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.regtestSetup = regtestSetup; - } - - @Test - void blockHashNotification() throws InterruptedException { - ZmqListeners zmqListeners = regtestSetup.getZmqListeners(); - zmqListeners.registerNewBlockMinedListener((blockHash) -> { - log.info("Notification: New block with hash {}", blockHash); - listenerReceivedBlockHashLatch.countDown(); - }); - - Thread thread = new Thread(() -> { - while (true) { - try { - List blockHashes = regtestSetup.mineOneBlock(); - log.info("Mined block: {}", blockHashes); - - if (Thread.interrupted()) { - break; - } - - log.info("Sleeping for 200ms before mining next block."); - //noinspection BusyWait - Thread.sleep(200); - - } catch (InterruptedException e) { - throw new RuntimeException(e); - } - } - }); - - thread.start(); - - boolean await = listenerReceivedBlockHashLatch.await(1, TimeUnit.MINUTES); - thread.interrupt(); - - if (!await) { - throw new IllegalStateException("Didn't connect to bitcoind after 1 minute."); - } - } -} diff --git a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/zmq/BitcoindZeroMqConnectionInfoFinderIntegrationTests.java b/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/zmq/BitcoindZeroMqConnectionInfoFinderIntegrationTests.java deleted file mode 100644 index b84ce4ed4e..0000000000 --- a/wallets/bitcoind/bitcoind/src/integrationTest/java/bisq/wallets/bitcoind/zmq/BitcoindZeroMqConnectionInfoFinderIntegrationTests.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -import bisq.wallets.regtest.BitcoindExtension; -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.bitcoind.rpc.responses.BitcoindGetZmqNotificationsResponse; -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - -@ExtendWith(BitcoindExtension.class) -public class BitcoindZeroMqConnectionInfoFinderIntegrationTests { - - private final BitcoindDaemon daemon; - - public BitcoindZeroMqConnectionInfoFinderIntegrationTests(BitcoindRegtestSetup regtestSetup) { - this.daemon = regtestSetup.getDaemon(); - } - - @Test - void findConnectionInfo() { - List zmqNotifications = daemon.getZmqNotifications(); - assertThat(zmqNotifications).isNotEmpty(); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/BitcoindDaemon.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/BitcoindDaemon.java deleted file mode 100644 index dd321426b2..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/BitcoindDaemon.java +++ /dev/null @@ -1,167 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc; - -import bisq.wallets.bitcoind.rpc.calls.*; -import bisq.wallets.bitcoind.rpc.responses.BitcoindDecodeRawTransactionResponse; -import bisq.wallets.bitcoind.rpc.responses.BitcoindFinalizePsbtResponse; -import bisq.wallets.bitcoind.rpc.responses.BitcoindGetZmqNotificationsResponse; -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.json_rpc.RpcClientFactory; -import bisq.wallets.json_rpc.JsonRpcClient; -import bisq.wallets.json_rpc.RpcCallFailureException; -import bisq.wallets.json_rpc.exceptions.InvalidRpcCredentialsException; - -import java.util.List; -import java.util.Optional; - -public class BitcoindDaemon { - private final JsonRpcClient rpcClient; - - public BitcoindDaemon(JsonRpcClient rpcClient) { - this.rpcClient = rpcClient; - } - - public void createOrLoadWallet(String walletName, Optional passphrase) { - createOrLoadWallet(walletName, passphrase, false, false); - } - - public void createOrLoadWatchOnlyWallet(String walletName) { - createOrLoadWallet(walletName, Optional.empty(), true, true); - } - - private void createOrLoadWallet(String walletName, Optional passphrase, boolean disablePrivateKeys, boolean blank) { - try { - createWallet(walletName, passphrase.orElse(""), disablePrivateKeys, blank); - } catch (RpcCallFailureException e) { - if (doesWalletExist(e)) { - List loadedWallets = listWallets(); - if (!loadedWallets.contains(walletName)) { - loadWallet(walletName); - } - } - } - } - - public String combinePsbt(List txs) { - var request = new BitcoindCombinePsbtRpcCall.Request(txs); - var rpcCall = new BitcoindCombinePsbtRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public BitcoindDecodeRawTransactionResponse decodeRawTransaction(String txInHex) { - var request = new BitcoindDecodeRawTransactionRpcCall.Request(txInHex); - var rpcCall = new BitcoindDecodeRawTransactionRpcCall(request); - return rpcClient.call(rpcCall); - } - - public BitcoindFinalizePsbtResponse finalizePsbt(String psbt) { - var request = new BitcoindFinalizePsbtRpcCall.Request(psbt); - var rpcCall = new BitcoindFinalizePsbtRpcCall(request); - return rpcClient.call(rpcCall); - } - - public List generateToAddress(int numberOfBlocksToMine, String addressOfMiner) { - var request = BitcoindGenerateToAddressRpcCall.Request.builder() - .nblocks(numberOfBlocksToMine) - .address(addressOfMiner) - .build(); - var rpcCall = new BitcoindGenerateToAddressRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public String getRawTransaction(String txId) { - var request = new BitcoindGetRawTransactionRpcCall.Request(txId); - var rpcCall = new BitcoindGetRawTransactionRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public String getTxOutProof(List txIds) { - var request = new BitcoindGetTxOutProofRpcCall.Request(txIds); - var rpcCall = new BitcoindGetTxOutProofRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public List getZmqNotifications() { - var rpcCall = new BitcoindGetZmqNotificationsRpcCall(); - BitcoindGetZmqNotificationsResponse responses = rpcClient.call(rpcCall); - return responses.getResult(); - } - - public List listWallets() { - return listWalletsWithRpcClient(rpcClient); - } - - private static List listWalletsWithRpcClient(JsonRpcClient rpcClient) { - var rpcCall = new BitcoindListWalletsRpcCall(); - return rpcClient.call(rpcCall).getResult(); - } - - public String sendRawTransaction(String hexString) { - return sendRawTransaction(hexString, null); - } - - public String sendRawTransaction(String hexString, String maxBurnAmount) { - var request = new BitcoindSendRawTransactionRpcCall.Request(hexString, maxBurnAmount); - var rpcCall = new BitcoindSendRawTransactionRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public void stop() { - var rpcCall = new BitcoindStopRpcCall(); - rpcClient.call(rpcCall); - } - - public void unloadWallet(String walletName) { - var request = new BitcoindUnloadWalletRpcCall.Request(walletName); - var rpcCall = new BitcoindUnloadWalletRpcCall(request); - rpcClient.call(rpcCall); - } - - public static boolean verifyRpcConfig(RpcConfig rpcConfig) { - try { - JsonRpcClient rpcClient = RpcClientFactory.createDaemonRpcClient(rpcConfig); - listWalletsWithRpcClient(rpcClient); // Makes a listwallets RPC call - return true; - } catch (InvalidRpcCredentialsException e) { - return false; - } - } - - private boolean doesWalletExist(RpcCallFailureException e) { - return e.getMessage().contains("Database already exists."); - } - - private void createWallet(String walletName, String passphrase, boolean disablePrivateKeys, boolean blank) { - var request = BitcoindCreateWalletRpcCall.Request.builder() - .walletName(walletName) - .disablePrivateKeys(disablePrivateKeys) - .blank(blank) - .passphrase(passphrase) - .build(); - - var rpcCall = new BitcoindCreateWalletRpcCall(request); - rpcClient.call(rpcCall); - } - - private void loadWallet(String walletName) { - var request = new BitcoindLoadWalletRpcCall.Request(walletName); - var rpcCall = new BitcoindLoadWalletRpcCall(request); - rpcClient.call(rpcCall); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/BitcoindWallet.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/BitcoindWallet.java deleted file mode 100644 index bc3d6ad6d8..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/BitcoindWallet.java +++ /dev/null @@ -1,242 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc; - -import bisq.wallets.bitcoind.rpc.calls.*; -import bisq.wallets.bitcoind.rpc.calls.requests.BitcoindImportDescriptorRequestEntry; -import bisq.wallets.bitcoind.rpc.calls.requests.BitcoindImportMultiRequest; -import bisq.wallets.bitcoind.rpc.psbt.BitcoindPsbtInput; -import bisq.wallets.bitcoind.rpc.responses.*; -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.core.model.AddressType; -import bisq.wallets.json_rpc.RpcClientFactory; -import bisq.wallets.json_rpc.JsonRpcClient; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.TimeUnit; - -public class BitcoindWallet { - - private static final long DEFAULT_WALLET_TIMEOUT = TimeUnit.SECONDS.toSeconds(15); - private final BitcoindDaemon daemon; - private final String walletName; - private final JsonRpcClient rpcClient; - - public BitcoindWallet(BitcoindDaemon daemon, RpcConfig rpcConfig, String walletName) { - this.daemon = daemon; - this.walletName = walletName; - this.rpcClient = RpcClientFactory.createWalletRpcClient(rpcConfig, walletName); - } - - public void initialize(Optional passphrase) { - daemon.createOrLoadWallet(walletName, passphrase); - } - - public void shutdown() { - daemon.unloadWallet(walletName); - } - - public BitcoindAddOrCreateMultiSigAddressResponse createMultiSig(int nRequired, List keys) { - var request = BitcoindCreateMultiSigRpcCall.Request.builder() - .nRequired(nRequired) - .keys(keys) - .build(); - var rpcCall = new BitcoindCreateMultiSigRpcCall(request); - return rpcClient.call(rpcCall); - } - - public BitcoindAddOrCreateMultiSigAddressResponse addMultiSigAddress(int nRequired, List keys) { - var request = BitcoindAddMultiSigAddressRpcCall.Request.builder() - .nRequired(nRequired) - .keys(keys) - .build(); - var rpcCall = new BitcoindAddMultiSigAddressRpcCall(request); - return rpcClient.call(rpcCall); - } - - public BitcoindGetAddressInfoResponse getAddressInfo(String address) { - var request = new BitcoindGetAddressInfoRpcCall.Request(address); - var rpcCall = new BitcoindGetAddressInfoRpcCall(request); - return rpcClient.call(rpcCall); - } - - public double getBalance() { - var rpcCall = new BitcoindGetBalancesRpcCall(); - BitcoindGetBalancesResponse response = rpcClient.call(rpcCall); - BitcoindGetMineBalancesResponse mineBalancesResponse = response.getResult().getMine(); - return mineBalancesResponse.getTrusted() + mineBalancesResponse.getUntrustedPending(); - } - - public BitcoindGetDescriptorInfoResponse getDescriptorInfo(String descriptor) { - var request = new BitcoindGetDescriptorInfoRpcCall.Request(descriptor); - var rpcCall = new BitcoindGetDescriptorInfoRpcCall(request); - return rpcClient.call(rpcCall); - } - - public String getNewAddress(AddressType addressType, String label) { - var request = BitcoindGetNewAddressRpcCall.Request.builder() - .addressType(addressType.getName()) - .label(label) - .build(); - var rpcCall = new BitcoindGetNewAddressRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public List listAddressGroupings() { - var call = new BitcoindListAddressGroupingsRpcCall(); - return rpcClient.call(call).getResult(); - } - - public List importDescriptors( - List requests - ) { - var request = new BitcoindImportDescriptorsRpcCall.Request( - requests.toArray(new BitcoindImportDescriptorRequestEntry[0]) - ); - var rpcCall = new BitcoindImportDescriptorsRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public void importAddress(String address, String label) { - var request = BitcoindImportAddressRpcCall.Request.builder() - .address(address) - .label(label) - .build(); - var rpcCall = new BitcoindImportAddressRpcCall(request); - rpcClient.call(rpcCall); - } - - public List importMulti(List requests) { - var request = BitcoindImportMultiRpcCall.Request.builder() - .requests(requests) - .build(); - var rpcCall = new BitcoindImportMultiRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public BitcoindListDescriptorResponse listDescriptors() { - var rpcCall = new BitcoindListDescriptorsRpcCall(); - return rpcClient.call(rpcCall); - } - - public List listTransactions(int count) { - var request = BitcoindListTransactionsRpcCall.Request.builder() - .count(count) - .build(); - var rpcCall = new BitcoindListTransactionsRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public List listUnspent() { - var rpcCall = new BitcoindListUnspentRpcCall(); - return rpcClient.call(rpcCall).getResult(); - } - - public String sendToAddress(Optional passphrase, String address, double amount) { - walletPassphrase(passphrase); - - var request = BitcoindSendToAddressRpcCall.Request.builder() - .address(address) - .amount(amount) - .build(); - var rpcCall = new BitcoindSendToAddressRpcCall(request); - String txId = rpcClient.call(rpcCall).getResult(); - - if (passphrase.isPresent()) { - walletLock(); - } - return txId; - } - - public String signMessage(Optional walletPasshrase, String address, String message) { - walletPassphrase(walletPasshrase); - - var request = BitcoindSignMessageRpcCall.Request.builder() - .address(address) - .message(message) - .build(); - var rpcCall = new BitcoindSignMessageRpcCall(request); - String signature = rpcClient.call(rpcCall).getResult(); - - if (walletPasshrase.isPresent()) { - walletLock(); - } - return signature; - } - - public boolean verifyMessage(String address, String signature, String message) { - var request = BitcoindVerifyMessageRpcCall.Request.builder() - .address(address) - .signature(signature) - .message(message) - .build(); - var rpcCall = new BitcoindVerifyMessageRpcCall(request); - return rpcClient.call(rpcCall).getResult(); - } - - public BitcoindWalletCreateFundedPsbtResponse walletCreateFundedPsbt(List inputs, - Map outputs, - Map options) { - var request = BitcoindWalletCreateFundedPsbtRpcCall.Request.builder() - .inputs(inputs) - .outputs(outputs) - .options(options) - .build(); - var rpcCall = new BitcoindWalletCreateFundedPsbtRpcCall(request); - return rpcClient.call(rpcCall); - } - - public void walletLock() { - var rpcCall = new BitcoindWalletLockRpcCall(); - rpcClient.call(rpcCall); - } - - private void walletPassphrase(Optional passphrase) { - walletPassphrase(rpcClient, passphrase); - } - - public static void walletPassphrase(JsonRpcClient rpcClient, Optional passphrase) { - String passphraseString = passphrase.orElse(""); - if (passphraseString.isEmpty()) { - return; - } - - var request = BitcoindWalletPassphraseRpcCall.Request.builder() - .passphrase(passphrase.get()) - .timeout(DEFAULT_WALLET_TIMEOUT) - .build(); - var rpcCall = new BitcoindWalletPassphraseRpcCall(request); - rpcClient.call(rpcCall); - } - - public BitcoindWalletProcessPsbtResponse walletProcessPsbt(Optional passphrase, String psbt) { - walletPassphrase(passphrase); - - var request = new BitcoindWalletProcessPsbtRpcCall.Request(psbt); - var rpcCall = new BitcoindWalletProcessPsbtRpcCall(request); - BitcoindWalletProcessPsbtResponse response = rpcClient.call(rpcCall); - - if (passphrase.isPresent()) { - walletLock(); - } - - return response; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindAddMultiSigAddressRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindAddMultiSigAddressRpcCall.java deleted file mode 100644 index 973f8e06e3..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindAddMultiSigAddressRpcCall.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindAddOrCreateMultiSigAddressResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import com.squareup.moshi.Json; -import lombok.Builder; -import lombok.Getter; - -import java.util.List; - -public class BitcoindAddMultiSigAddressRpcCall - extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - @Json(name = "nrequired") - private final int nRequired; - private final List keys; - } - - public BitcoindAddMultiSigAddressRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "addmultisigaddress"; - } - - @Override - public boolean isResponseValid(BitcoindAddOrCreateMultiSigAddressResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindAddOrCreateMultiSigAddressResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindCombinePsbtRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindCombinePsbtRpcCall.java deleted file mode 100644 index 81d8bca659..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindCombinePsbtRpcCall.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringResponse; -import lombok.Getter; - -import java.util.List; - -public class BitcoindCombinePsbtRpcCall extends DaemonRpcCall { - - @Getter - public static class Request { - private final List txs; - - public Request(List txs) { - this.txs = txs; - } - } - - public BitcoindCombinePsbtRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "combinepsbt"; - } - - @Override - public boolean isResponseValid(JsonRpcStringResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindCreateMultiSigRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindCreateMultiSigRpcCall.java deleted file mode 100644 index 62430ccd85..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindCreateMultiSigRpcCall.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindAddOrCreateMultiSigAddressResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import com.squareup.moshi.Json; -import lombok.Builder; -import lombok.Getter; - -import java.util.List; - -public class BitcoindCreateMultiSigRpcCall - extends DaemonRpcCall { - - @Builder - @Getter - public static class Request { - @Json(name = "nrequired") - private int nRequired; - private List keys; - @Json(name = "address_type") - private String addressType; - } - - public BitcoindCreateMultiSigRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "createmultisig"; - } - - @Override - public boolean isResponseValid(BitcoindAddOrCreateMultiSigAddressResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindAddOrCreateMultiSigAddressResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindCreateWalletRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindCreateWalletRpcCall.java deleted file mode 100644 index 9537ef5fe3..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindCreateWalletRpcCall.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindCreateOrLoadWalletResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import com.squareup.moshi.Json; -import lombok.Builder; -import lombok.Getter; - -public class BitcoindCreateWalletRpcCall - extends DaemonRpcCall { - - @Builder - @Getter - public static class Request { - @Json(name = "wallet_name") - private String walletName; - - @Json(name = "disable_private_keys") - private Boolean disablePrivateKeys; - private Boolean blank; - - private String passphrase; - @Json(name = "avoid_reuse") - private Boolean avoidReuse; - } - - public BitcoindCreateWalletRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "createwallet"; - } - - @Override - public boolean isResponseValid(BitcoindCreateOrLoadWalletResponse response) { - return response.getResult() != null; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindCreateOrLoadWalletResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindDecodeRawTransactionRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindDecodeRawTransactionRpcCall.java deleted file mode 100644 index b4195a4bb8..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindDecodeRawTransactionRpcCall.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindDecodeRawTransactionResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import com.squareup.moshi.Json; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -public class BitcoindDecodeRawTransactionRpcCall - extends DaemonRpcCall { - - @Getter - @ToString - @EqualsAndHashCode - public static final class Request { - @Json(name = "hexstring") - private final String hexString; - - public Request(String hexString) { - this.hexString = hexString; - } - } - - public BitcoindDecodeRawTransactionRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "decoderawtransaction"; - } - - @Override - public boolean isResponseValid(BitcoindDecodeRawTransactionResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindDecodeRawTransactionResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindFinalizePsbtRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindFinalizePsbtRpcCall.java deleted file mode 100644 index 92c3b40a2f..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindFinalizePsbtRpcCall.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindFinalizePsbtResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -public class BitcoindFinalizePsbtRpcCall - extends DaemonRpcCall { - - @Getter - @ToString - @EqualsAndHashCode - public static final class Request { - private final String psbt; - - public Request(String psbt) { - this.psbt = psbt; - } - } - - public BitcoindFinalizePsbtRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "finalizepsbt"; - } - - - @Override - public boolean isResponseValid(BitcoindFinalizePsbtResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindFinalizePsbtResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGenerateToAddressRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGenerateToAddressRpcCall.java deleted file mode 100644 index e54b24ae7a..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGenerateToAddressRpcCall.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringListResponse; -import lombok.Builder; -import lombok.Getter; - -public class BitcoindGenerateToAddressRpcCall extends DaemonRpcCall { - - @Builder - @Getter - public static class Request { - private final int nblocks; - private final String address; - } - - public BitcoindGenerateToAddressRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "generatetoaddress"; - } - - @Override - public boolean isResponseValid(JsonRpcStringListResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringListResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetAddressInfoRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetAddressInfoRpcCall.java deleted file mode 100644 index 85ddc64c95..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetAddressInfoRpcCall.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindGetAddressInfoResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -public class BitcoindGetAddressInfoRpcCall - extends DaemonRpcCall { - - @Getter - @ToString - @EqualsAndHashCode - public static final class Request { - private final String address; - - public Request(String address) { - this.address = address; - } - } - - public BitcoindGetAddressInfoRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "getaddressinfo"; - } - - @Override - public boolean isResponseValid(BitcoindGetAddressInfoResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindGetAddressInfoResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetBalancesRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetBalancesRpcCall.java deleted file mode 100644 index 6d9de9ba93..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetBalancesRpcCall.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindGetBalancesResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; - -public class BitcoindGetBalancesRpcCall extends DaemonRpcCall { - public BitcoindGetBalancesRpcCall() { - super(null); - } - - @Override - public String getRpcMethodName() { - return "getbalances"; - } - - @Override - public boolean isResponseValid(BitcoindGetBalancesResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindGetBalancesResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetDescriptorInfoRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetDescriptorInfoRpcCall.java deleted file mode 100644 index 835c0df974..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetDescriptorInfoRpcCall.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindGetDescriptorInfoResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import lombok.Getter; - -public class BitcoindGetDescriptorInfoRpcCall - extends DaemonRpcCall { - - @Getter - public static class Request { - private final String descriptor; - - public Request(String descriptor) { - this.descriptor = descriptor; - } - } - - public BitcoindGetDescriptorInfoRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "getdescriptorinfo"; - } - - @Override - public boolean isResponseValid(BitcoindGetDescriptorInfoResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindGetDescriptorInfoResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetNewAddressRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetNewAddressRpcCall.java deleted file mode 100644 index 0014648c0c..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetNewAddressRpcCall.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringResponse; -import com.squareup.moshi.Json; -import lombok.Builder; -import lombok.Getter; - -public class BitcoindGetNewAddressRpcCall extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - private final String label; - @Json(name = "address_type") - private final String addressType; - } - - public BitcoindGetNewAddressRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "getnewaddress"; - } - - @Override - public boolean isResponseValid(JsonRpcStringResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetRawTransactionRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetRawTransactionRpcCall.java deleted file mode 100644 index 47a0662a2e..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetRawTransactionRpcCall.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -public class BitcoindGetRawTransactionRpcCall extends DaemonRpcCall { - @Getter - public static class Request { - @Json(name = "txid") - private final String txId; - - public Request(String txId) { - this.txId = txId; - } - } - - public BitcoindGetRawTransactionRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "getrawtransaction"; - } - - @Override - public boolean isResponseValid(JsonRpcStringResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetTxOutProofRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetTxOutProofRpcCall.java deleted file mode 100644 index 982cee1c81..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetTxOutProofRpcCall.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -import java.util.List; - -public class BitcoindGetTxOutProofRpcCall extends DaemonRpcCall { - - @Getter - public static class Request { - @Json(name = "txids") - private final List txIds; - - public Request(List txIds) { - this.txIds = txIds; - } - } - - public BitcoindGetTxOutProofRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "gettxoutproof"; - } - - @Override - public boolean isResponseValid(JsonRpcStringResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetZmqNotificationsRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetZmqNotificationsRpcCall.java deleted file mode 100644 index 722c3a9e80..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindGetZmqNotificationsRpcCall.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindGetZmqNotificationsResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; - -public class BitcoindGetZmqNotificationsRpcCall extends DaemonRpcCall { - - public BitcoindGetZmqNotificationsRpcCall() { - super(null); - } - - @Override - public String getRpcMethodName() { - return "getzmqnotifications"; - } - - @Override - public boolean isResponseValid(BitcoindGetZmqNotificationsResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindGetZmqNotificationsResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindImportAddressRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindImportAddressRpcCall.java deleted file mode 100644 index 49b227ffb7..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindImportAddressRpcCall.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.VoidJsonRpcResponse; -import lombok.Builder; -import lombok.Getter; - -public class BitcoindImportAddressRpcCall extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - private final String address; - private final String label; - } - - public BitcoindImportAddressRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "importaddress"; - } - - @Override - public boolean isResponseValid(VoidJsonRpcResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return VoidJsonRpcResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindImportDescriptorsRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindImportDescriptorsRpcCall.java deleted file mode 100644 index edac30941b..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindImportDescriptorsRpcCall.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.calls.requests.BitcoindImportDescriptorRequestEntry; -import bisq.wallets.bitcoind.rpc.responses.BitcoindImportDescriptorResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import lombok.Getter; -import lombok.Setter; - -public class BitcoindImportDescriptorsRpcCall - extends DaemonRpcCall { - - @Getter - @Setter - public static class Request { - private final BitcoindImportDescriptorRequestEntry[] requests; - - public Request(BitcoindImportDescriptorRequestEntry[] requests) { - this.requests = requests; - } - } - - public BitcoindImportDescriptorsRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "importdescriptors"; - } - - @Override - public boolean isResponseValid(BitcoindImportDescriptorResponse response) { - return response.getResult().stream().allMatch(BitcoindImportDescriptorResponse.Entry::isSuccess); - } - - @Override - public Class getRpcResponseClass() { - return BitcoindImportDescriptorResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindImportMultiRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindImportMultiRpcCall.java deleted file mode 100644 index 3d54a4ef34..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindImportMultiRpcCall.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.calls.requests.BitcoindImportMultiRequest; -import bisq.wallets.bitcoind.rpc.responses.BitcoinImportMultiEntryResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import lombok.Builder; -import lombok.Getter; - -import java.util.List; -import java.util.Map; - -public class BitcoindImportMultiRpcCall - extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - private List requests; - private final Map options = Map.of("rescan", false); - } - - public BitcoindImportMultiRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "importmulti"; - } - - @Override - public boolean isResponseValid(BitcoinImportMultiEntryResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoinImportMultiEntryResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListAddressGroupingsRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListAddressGroupingsRpcCall.java deleted file mode 100644 index c0127d6bf0..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListAddressGroupingsRpcCall.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindListAddressGroupingsResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; - -public class BitcoindListAddressGroupingsRpcCall extends DaemonRpcCall { - - public BitcoindListAddressGroupingsRpcCall() { - super(null); - } - - @Override - public String getRpcMethodName() { - return "listaddressgroupings"; - } - - @Override - public boolean isResponseValid(BitcoindListAddressGroupingsResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindListAddressGroupingsResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListDescriptorsRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListDescriptorsRpcCall.java deleted file mode 100644 index 7657f8f299..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListDescriptorsRpcCall.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindListDescriptorResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; - -public class BitcoindListDescriptorsRpcCall - extends DaemonRpcCall { - - public BitcoindListDescriptorsRpcCall() { - super(null); - } - - @Override - public String getRpcMethodName() { - return "listdescriptors"; - } - - @Override - public boolean isResponseValid(BitcoindListDescriptorResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindListDescriptorResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListTransactionsRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListTransactionsRpcCall.java deleted file mode 100644 index 587dcd907b..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListTransactionsRpcCall.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindListTransactionsResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import lombok.Builder; -import lombok.Getter; - -public class BitcoindListTransactionsRpcCall - extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - private final String label = "*"; - private final int count; - } - - public BitcoindListTransactionsRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "listtransactions"; - } - - @Override - public boolean isResponseValid(BitcoindListTransactionsResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindListTransactionsResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListUnspentRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListUnspentRpcCall.java deleted file mode 100644 index 6cd8d08952..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListUnspentRpcCall.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindListUnspentResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; - -public class BitcoindListUnspentRpcCall extends DaemonRpcCall { - public BitcoindListUnspentRpcCall() { - super(null); - } - - @Override - public String getRpcMethodName() { - return "listunspent"; - } - - @Override - public boolean isResponseValid(BitcoindListUnspentResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindListUnspentResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListWalletsRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListWalletsRpcCall.java deleted file mode 100644 index 8c79128655..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindListWalletsRpcCall.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringListResponse; - -public class BitcoindListWalletsRpcCall extends DaemonRpcCall { - - public BitcoindListWalletsRpcCall() { - super(null); - } - - @Override - public String getRpcMethodName() { - return "listwallets"; - } - - @Override - public boolean isResponseValid(JsonRpcStringListResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringListResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindLoadWalletRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindLoadWalletRpcCall.java deleted file mode 100644 index fd58dcd26e..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindLoadWalletRpcCall.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindCreateOrLoadWalletResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import com.squareup.moshi.Json; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -public class BitcoindLoadWalletRpcCall - extends DaemonRpcCall { - - @Getter - @ToString - @EqualsAndHashCode - public static final class Request { - @Json(name = "filename") - private final String fileName; - - public Request(String fileName) { - this.fileName = fileName; - } - } - - public BitcoindLoadWalletRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "loadwallet"; - } - - @Override - public boolean isResponseValid(BitcoindCreateOrLoadWalletResponse response) { - BitcoindCreateOrLoadWalletResponse.Result result = response.getResult(); - return result.getName().equals(request.fileName) && !result.hasWarning(); - } - - @Override - public Class getRpcResponseClass() { - return BitcoindCreateOrLoadWalletResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindSendRawTransactionRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindSendRawTransactionRpcCall.java deleted file mode 100644 index 28eb73b2c7..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindSendRawTransactionRpcCall.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringResponse; -import com.squareup.moshi.Json; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -public class BitcoindSendRawTransactionRpcCall extends DaemonRpcCall { - - @Getter - @ToString - @EqualsAndHashCode - public static final class Request { - @Json(name = "hexstring") - private final String hexString; - @Json(name = "maxburnamount") - private final String maxBurnAmount; - - public Request(String hexString, String maxBurnAmount) { - this.hexString = hexString; - this.maxBurnAmount = maxBurnAmount; - } - } - - public BitcoindSendRawTransactionRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "sendrawtransaction"; - } - - @Override - public boolean isResponseValid(JsonRpcStringResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindSendToAddressRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindSendToAddressRpcCall.java deleted file mode 100644 index c4b7753c55..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindSendToAddressRpcCall.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringResponse; -import lombok.Builder; -import lombok.Getter; - -public class BitcoindSendToAddressRpcCall extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - private final String address; - private final double amount; - } - - public BitcoindSendToAddressRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "sendtoaddress"; - } - - @Override - public boolean isResponseValid(JsonRpcStringResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindSignMessageRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindSignMessageRpcCall.java deleted file mode 100644 index 4d108fd6a7..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindSignMessageRpcCall.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringResponse; -import lombok.Builder; -import lombok.Getter; - -public class BitcoindSignMessageRpcCall extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - private final String address; - private final String message; - } - - public BitcoindSignMessageRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "signmessage"; - } - - @Override - public boolean isResponseValid(JsonRpcStringResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindStopRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindStopRpcCall.java deleted file mode 100644 index 14568c6c65..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindStopRpcCall.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcStringResponse; - -public class BitcoindStopRpcCall extends DaemonRpcCall { - public BitcoindStopRpcCall() { - super(null); - } - - @Override - public String getRpcMethodName() { - return "stop"; - } - - @Override - public boolean isResponseValid(JsonRpcStringResponse response) { - return response.getResult().equals("Bitcoin Core stopping"); - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcStringResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindUnloadWalletRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindUnloadWalletRpcCall.java deleted file mode 100644 index 57b74b9324..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindUnloadWalletRpcCall.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindWarningResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import com.squareup.moshi.Json; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -public class BitcoindUnloadWalletRpcCall extends DaemonRpcCall { - - @Getter - @ToString - @EqualsAndHashCode - public static final class Request { - @Json(name = "wallet_name") - private final String walletName; - - public Request(String walletName) { - this.walletName = walletName; - } - } - - public BitcoindUnloadWalletRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "unloadwallet"; - } - - @Override - public boolean isResponseValid(BitcoindWarningResponse response) { - return !response.getResult().hasWarning(); - } - - @Override - public Class getRpcResponseClass() { - return BitcoindWarningResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindVerifyMessageRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindVerifyMessageRpcCall.java deleted file mode 100644 index a8cc6f93f9..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindVerifyMessageRpcCall.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.reponses.JsonRpcBooleanResponse; -import lombok.Builder; -import lombok.Getter; - -public class BitcoindVerifyMessageRpcCall extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - private final String address; - private final String signature; - private final String message; - } - - public BitcoindVerifyMessageRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "verifymessage"; - } - - @Override - public boolean isResponseValid(JsonRpcBooleanResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return JsonRpcBooleanResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletCreateFundedPsbtRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletCreateFundedPsbtRpcCall.java deleted file mode 100644 index e128f0ac26..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletCreateFundedPsbtRpcCall.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.psbt.BitcoindPsbtInput; -import bisq.wallets.bitcoind.rpc.responses.BitcoindWalletCreateFundedPsbtResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import lombok.Builder; -import lombok.Getter; - -import java.util.List; -import java.util.Map; - -public class BitcoindWalletCreateFundedPsbtRpcCall - extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - private final List inputs; - private final Map outputs; - private final Map options; - } - - public BitcoindWalletCreateFundedPsbtRpcCall(BitcoindWalletCreateFundedPsbtRpcCall.Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "walletcreatefundedpsbt"; - } - - @Override - public boolean isResponseValid(BitcoindWalletCreateFundedPsbtResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindWalletCreateFundedPsbtResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletLockRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletLockRpcCall.java deleted file mode 100644 index 966b95f173..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletLockRpcCall.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.VoidJsonRpcResponse; - -public class BitcoindWalletLockRpcCall extends DaemonRpcCall { - public BitcoindWalletLockRpcCall() { - super(null); - } - - @Override - public String getRpcMethodName() { - return "walletlock"; - } - - @Override - public boolean isResponseValid(VoidJsonRpcResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return VoidJsonRpcResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletPassphraseRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletPassphraseRpcCall.java deleted file mode 100644 index d42f313961..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletPassphraseRpcCall.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.json_rpc.DaemonRpcCall; -import bisq.wallets.json_rpc.VoidJsonRpcResponse; -import lombok.Builder; -import lombok.Getter; - -public class BitcoindWalletPassphraseRpcCall extends DaemonRpcCall { - @Builder - @Getter - public static class Request { - private final String passphrase; - private final long timeout; - } - - public BitcoindWalletPassphraseRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "walletpassphrase"; - } - - @Override - public boolean isResponseValid(VoidJsonRpcResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return VoidJsonRpcResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletProcessPsbtRpcCall.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletProcessPsbtRpcCall.java deleted file mode 100644 index 8e73597e7c..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/BitcoindWalletProcessPsbtRpcCall.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindWalletProcessPsbtResponse; -import bisq.wallets.json_rpc.DaemonRpcCall; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -public class BitcoindWalletProcessPsbtRpcCall - extends DaemonRpcCall { - - @Getter - @ToString - @EqualsAndHashCode - public static final class Request { - private final String psbt; - - public Request(String psbt) { - this.psbt = psbt; - } - } - - public BitcoindWalletProcessPsbtRpcCall(Request request) { - super(request); - } - - @Override - public String getRpcMethodName() { - return "walletprocesspsbt"; - } - - @Override - public boolean isResponseValid(BitcoindWalletProcessPsbtResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return BitcoindWalletProcessPsbtResponse.class; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/requests/BitcoindImportDescriptorRequestEntry.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/requests/BitcoindImportDescriptorRequestEntry.java deleted file mode 100644 index b728655eb4..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/requests/BitcoindImportDescriptorRequestEntry.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls.requests; - -import com.squareup.moshi.Json; -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; - -@Builder -@Getter -@Setter -public class BitcoindImportDescriptorRequestEntry { - private String desc; - @Json(name = "active") - private boolean isActive; - @Json(name = "internal") - private boolean isInternal; - private final String timestamp = "now"; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/requests/BitcoindImportMultiRequest.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/requests/BitcoindImportMultiRequest.java deleted file mode 100644 index 7456eda5a5..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/calls/requests/BitcoindImportMultiRequest.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.calls.requests; - -import com.squareup.moshi.Json; -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; - -import java.util.List; -import java.util.Map; - -@Builder -@Getter -@Setter -public class BitcoindImportMultiRequest { - private String desc; - private Map scriptPubKey; - private final String timestamp = "now"; - @Json(name = "redeemscript") - private String redeemScript; - @Json(name = "witnessscript") - private String witnessScript; - @Json(name = "pubkeys") - private List pubKeys; - private List keys; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/psbt/BitcoindPsbtInput.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/psbt/BitcoindPsbtInput.java deleted file mode 100644 index 5e8a2d0a87..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/psbt/BitcoindPsbtInput.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.psbt; - -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -public class BitcoindPsbtInput { - private String txid; - private int vout; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/AbstractDecodeRawTransactionResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/AbstractDecodeRawTransactionResponse.java deleted file mode 100644 index e48e74bf74..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/AbstractDecodeRawTransactionResponse.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import com.squareup.moshi.Json; -import lombok.Getter; - -import java.util.List; - -@Getter -public class AbstractDecodeRawTransactionResponse> { - @Json(name = "txid") - private String txId; - private String hash; - private int size; - private int vsize; - private int weight; - private int version; - - private int locktime; - private List vin; - private List vout; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/AbstractVin.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/AbstractVin.java deleted file mode 100644 index 592a39b9b5..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/AbstractVin.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import com.squareup.moshi.Json; -import lombok.Getter; -import lombok.Setter; - -import java.util.List; - -@Getter -@Setter -public abstract class AbstractVin { - private String coinbase; - @Json(name = "txid") - private String txId; - private int vout; - private BitcoindScriptSig scriptSig; - @Json(name = "txinwitness") - private List txInWitness; - private long sequence; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/AbstractVout.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/AbstractVout.java deleted file mode 100644 index c2da82b287..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/AbstractVout.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import lombok.Getter; -import lombok.Setter; - -import java.util.List; - -@Getter -@Setter -public abstract class AbstractVout { - private double value; - private int n; - protected T scriptPubKey; - - public abstract List getAddresses(); -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoinImportMultiEntryResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoinImportMultiEntryResponse.java deleted file mode 100644 index 6e18456300..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoinImportMultiEntryResponse.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -import java.util.List; - -public class BitcoinImportMultiEntryResponse extends JsonRpcResponse> { - @Getter - public static class Entry { - @Json(name = "success") - private boolean isSuccess; - private List warnings; - private Object error; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindAddOrCreateMultiSigAddressResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindAddOrCreateMultiSigAddressResponse.java deleted file mode 100644 index a66711ba71..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindAddOrCreateMultiSigAddressResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import lombok.Getter; - -public class BitcoindAddOrCreateMultiSigAddressResponse extends JsonRpcResponse { - @Getter - public static class Result { - private String address; - private String redeemScript; - private String descriptor; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindCreateMultiSigResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindCreateMultiSigResponse.java deleted file mode 100644 index 6dbed63e98..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindCreateMultiSigResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import lombok.Getter; - -public class BitcoindCreateMultiSigResponse extends JsonRpcResponse { - @Getter - public static class Result { - private String address; - private String redeemScript; - private String descriptor; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindCreateOrLoadWalletResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindCreateOrLoadWalletResponse.java deleted file mode 100644 index 2f00e32c67..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindCreateOrLoadWalletResponse.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import lombok.Getter; - -public class BitcoindCreateOrLoadWalletResponse extends JsonRpcResponse { - @Getter - public static class Result extends BitcoindWarningResponse.Result { - private String name; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindDecodeRawTransactionResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindDecodeRawTransactionResponse.java deleted file mode 100644 index 3d54dabc38..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindDecodeRawTransactionResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import lombok.Getter; - -public class BitcoindDecodeRawTransactionResponse extends JsonRpcResponse { - @Getter - public static class Result extends AbstractDecodeRawTransactionResponse { - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindDescriptor.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindDescriptor.java deleted file mode 100644 index aac07f7ba3..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindDescriptor.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import com.squareup.moshi.Json; -import lombok.Getter; - -import java.util.List; - -@Getter -public class BitcoindDescriptor { - private String desc; - private long timestamp; - private boolean active; - private boolean internal; - private List range; - private Integer next; - @Json(name = "next_index") - private Integer nextIndex; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindFinalizePsbtResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindFinalizePsbtResponse.java deleted file mode 100644 index 648187d9fd..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindFinalizePsbtResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import lombok.Getter; - -public class BitcoindFinalizePsbtResponse extends JsonRpcResponse { - @Getter - public static class Result { - private String psbt; - private String hex; - private boolean complete; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetAddressInfoResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetAddressInfoResponse.java deleted file mode 100644 index 0506d5e797..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetAddressInfoResponse.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -public class BitcoindGetAddressInfoResponse extends JsonRpcResponse { - @Getter - public static class Result { - private String address; - private String scriptPubKey; - @Json(name = "ismine") - private boolean isMine; - @Json(name = "iswatchonly") - private boolean isWatchOnly; - private boolean solvable; - - private String desc; - @Json(name = "parent_desc") - private String parentDesc; - - @Json(name = "isscript") - private boolean isScript; - @Json(name = "ischange") - private boolean isChange; - @Json(name = "iswitness") - private boolean isWitness; - @Json(name = "witness_version") - private int witnessVersion; - @Json(name = "witness_program") - private String witnessProgram; - private String script; - private String hex; - @Json(name = "pubkeys") - private String[] pubKeys; - @Json(name = "sigsrequired") - private int sigsRequired; - @Json(name = "pubkey") - private String pubKey; - private Object embedded; - @Json(name = "iscompressed") - private boolean isCompressed; - private int timestamp; - @Json(name = "hdkeypath") - private String hdKeyPath; - @Json(name = "hdseedid") - private String hdSeedId; - @Json(name = "hdmasterfingerprint") - private String hdMasterFingerprint; - private String[] labels; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetBalancesResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetBalancesResponse.java deleted file mode 100644 index 02082af04c..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetBalancesResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -public class BitcoindGetBalancesResponse extends JsonRpcResponse { - @Getter - public static class Result { - private BitcoindGetMineBalancesResponse mine; - @Json(name = "watchonly") - private BitcoindGetMineBalancesResponse watchOnly; - @Json(name = "lastprocessedblock") - private BitcoindGetLastProcessedBlockBalancesResponse lastProcessedBlock; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetDescriptorInfoResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetDescriptorInfoResponse.java deleted file mode 100644 index 7aff63919e..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetDescriptorInfoResponse.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -public class BitcoindGetDescriptorInfoResponse extends JsonRpcResponse { - @Getter - public static class Result { - private String descriptor; - private String checksum; - @Json(name = "isrange") - private boolean isRange; - @Json(name = "issolvable") - private boolean isSolvable; - @Json(name = "hasprivatekeys") - private boolean hasPrivateKeys; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetLastProcessedBlockBalancesResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetLastProcessedBlockBalancesResponse.java deleted file mode 100644 index 212bcf5489..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetLastProcessedBlockBalancesResponse.java +++ /dev/null @@ -1,9 +0,0 @@ -package bisq.wallets.bitcoind.rpc.responses; - -import lombok.Getter; - -@Getter -public class BitcoindGetLastProcessedBlockBalancesResponse { - private String hash; - long height; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetMineBalancesResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetMineBalancesResponse.java deleted file mode 100644 index b60717b5f9..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetMineBalancesResponse.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import com.squareup.moshi.Json; -import lombok.Getter; - -@Getter -public class BitcoindGetMineBalancesResponse { - private double trusted; - @Json(name = "untrusted_pending") - private double untrustedPending; - private double immature; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetZmqNotificationsResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetZmqNotificationsResponse.java deleted file mode 100644 index 81cec9289b..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindGetZmqNotificationsResponse.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import lombok.Getter; - -import java.util.List; - -public class BitcoindGetZmqNotificationsResponse extends JsonRpcResponse> { - @Getter - public static class Entry { - private String type; - private String address; - private int hwm; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindImportDescriptorResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindImportDescriptorResponse.java deleted file mode 100644 index c1380aebbc..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindImportDescriptorResponse.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -import java.util.List; -import java.util.Map; - -public class BitcoindImportDescriptorResponse extends JsonRpcResponse> { - @Getter - public static class Entry { - @Json(name = "success") - private boolean isSuccess; - private List warnings; - private Map error; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListAddressGroupingsResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListAddressGroupingsResponse.java deleted file mode 100644 index 0aa232a2f1..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListAddressGroupingsResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; - -import java.util.List; - -public class BitcoindListAddressGroupingsResponse extends JsonRpcResponse> { -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListDescriptorResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListDescriptorResponse.java deleted file mode 100644 index 8082290a15..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListDescriptorResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -import java.util.List; - -public class BitcoindListDescriptorResponse extends JsonRpcResponse { - @Getter - public static class Result { - @Json(name = "wallet_name") - private String walletName; - private List descriptors; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListTransactionsResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListTransactionsResponse.java deleted file mode 100644 index 39acca6751..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListTransactionsResponse.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.core.model.TransactionInfo; -import bisq.wallets.json_rpc.JsonRpcResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; -import java.util.Optional; - -public class BitcoindListTransactionsResponse extends JsonRpcResponse> { - @Getter - public static class Entry implements TransactionInfo { - private boolean involvesWatchonly; - private String address; - @Json(name = "parent_descs") - private List parentDescs; - private String category; - private double amount; - private String label; - private int vout; - private double fee; - private int confirmations; - private boolean generated; - private boolean trusted; - private String blockhash; - private int blockheight; - private int blockindex; - private int blocktime; - @Json(name = "txid") - private String txId; - @Json(name = "wtxid") - private String wtxId; - private String[] walletconflicts; - private int time; - private int timereceived; - private String comment; - @Json(name = "bip125-replaceable") - private String bip125Replaceable; - private boolean abandoned; - - @Override - public long getAmount() { - return doubleValueToLong(amount, 8); - } - - @Override - public Optional getDate() { - return Optional.of(new Date(time * 1000L)); - } - } - - private static long doubleValueToLong(double value, int precision) { - double max = BigDecimal.valueOf(Long.MAX_VALUE).movePointLeft(precision).doubleValue(); - if (value > max) { - throw new ArithmeticException("Provided value would lead to an overflow"); - } - return BigDecimal.valueOf(value).movePointRight(precision).longValue(); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListUnspentResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListUnspentResponse.java deleted file mode 100644 index a0ba4d1a70..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindListUnspentResponse.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.core.model.Utxo; -import bisq.wallets.json_rpc.JsonRpcResponse; -import com.squareup.moshi.Json; -import lombok.Getter; - -import java.util.List; - -public class BitcoindListUnspentResponse extends JsonRpcResponse> { - @Getter - public static class Entry implements Utxo { - @Json(name = "txid") - private String txId; - private int vout; - private String address; - private String label; - private String scriptPubKey; - private double amount; - private int confirmations; - private String redeemScript; - private String witnessScript; - private boolean spendable; - private boolean solvable; - private boolean reused; - private String desc; - private boolean safe; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindScriptPubKey.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindScriptPubKey.java deleted file mode 100644 index 0f8c86210f..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindScriptPubKey.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import lombok.Getter; - -@Getter -public class BitcoindScriptPubKey { - private String asm; - private String desc; - private String hex; - private int reqSigs; - private String type; - private String address; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindScriptSig.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindScriptSig.java deleted file mode 100644 index 2fbc2f74a6..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindScriptSig.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -public class BitcoindScriptSig { - private String asm; - private String hex; -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindVin.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindVin.java deleted file mode 100644 index bb91664c9e..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindVin.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -public class BitcoindVin extends AbstractVin { -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindVout.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindVout.java deleted file mode 100644 index e8751a8f57..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindVout.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import java.util.Collections; -import java.util.List; - -public class BitcoindVout extends AbstractVout { - @Override - public List getAddresses() { - if (scriptPubKey != null && scriptPubKey.getAddress() != null) { - return List.of(scriptPubKey.getAddress()); - } - return Collections.emptyList(); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindWalletCreateFundedPsbtResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindWalletCreateFundedPsbtResponse.java deleted file mode 100644 index c2578df871..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindWalletCreateFundedPsbtResponse.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import lombok.Getter; - - -public class BitcoindWalletCreateFundedPsbtResponse extends JsonRpcResponse { - @Getter - public static class Result { - private String psbt; - private double fee; - private int changepos; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindWalletProcessPsbtResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindWalletProcessPsbtResponse.java deleted file mode 100644 index 9d104d72ea..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindWalletProcessPsbtResponse.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import lombok.Getter; - - -public class BitcoindWalletProcessPsbtResponse extends JsonRpcResponse { - @Getter - public static class Result { - private String psbt; - private boolean complete; - private String hex; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindWarningResponse.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindWarningResponse.java deleted file mode 100644 index 0681b8fd81..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/rpc/responses/BitcoindWarningResponse.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.rpc.responses; - -import bisq.wallets.json_rpc.JsonRpcResponse; -import lombok.Getter; - -import java.util.Collections; -import java.util.List; - -public class BitcoindWarningResponse extends JsonRpcResponse { - @Getter - public static class Result { - protected List warnings = Collections.emptyList(); - - public boolean hasWarning() { - return !warnings.isEmpty(); - } - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/BitcoindRawTxProcessor.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/BitcoindRawTxProcessor.java deleted file mode 100644 index 2bd4c177a4..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/BitcoindRawTxProcessor.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.bitcoind.rpc.responses.BitcoindDecodeRawTransactionResponse; -import com.google.common.io.BaseEncoding; - -public class BitcoindRawTxProcessor implements ZmqRawTxProcessor { - - private final BitcoindDaemon daemon; - private final ZmqListeners listeners; - - public BitcoindRawTxProcessor(BitcoindDaemon daemon, ZmqListeners listeners) { - this.daemon = daemon; - this.listeners = listeners; - } - - @Override - public void processRawTx(byte[] serializedTx, byte[] sequenceNumber) { - String txInHex = BaseEncoding.base16().lowerCase().encode(serializedTx); - BitcoindDecodeRawTransactionResponse.Result rawTransaction = daemon.decodeRawTransaction(txInHex).getResult(); - listeners.fireTxOutputAddressesListeners(rawTransaction); - listeners.fireTxIdInputListeners(rawTransaction); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/BitcoindZmqMessage.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/BitcoindZmqMessage.java deleted file mode 100644 index 72c1d164f1..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/BitcoindZmqMessage.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -@Getter -@ToString -@EqualsAndHashCode -public final class BitcoindZmqMessage { - private final BitcoindZmqTopic topic; - private final byte[] secondPart; - private final byte[] thirdPart; - - public BitcoindZmqMessage(BitcoindZmqTopic topic, byte[] secondPart, byte[] thirdPart) { - this.topic = topic; - this.secondPart = secondPart; - this.thirdPart = thirdPart; - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/BitcoindZmqTopic.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/BitcoindZmqTopic.java deleted file mode 100644 index 5e854d358f..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/BitcoindZmqTopic.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -import lombok.Getter; - -@Getter -public enum BitcoindZmqTopic { - TOPIC_HASHBLOCK("hashblock"), - TOPIC_RAWTX("rawtx"); - - private static final String HASHBLOCK_TOPIC_NAME = "hashblock"; - private static final String RAWTX_TOPIC_NAME = "rawtx"; - - private final String topicName; - - BitcoindZmqTopic(String topicName) { - this.topicName = topicName; - } - - public static BitcoindZmqTopic parse(String topicName) { - if (topicName.equals(BitcoindZmqTopic.HASHBLOCK_TOPIC_NAME)) { - return TOPIC_HASHBLOCK; - } else if (topicName.equals(BitcoindZmqTopic.RAWTX_TOPIC_NAME)) { - return TOPIC_RAWTX; - } else { - throw new IllegalStateException("Unknown ZMQ topic: " + topicName); - } - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqConnection.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqConnection.java deleted file mode 100644 index dd3c709ce6..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqConnection.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -import bisq.wallets.bitcoind.rpc.responses.BitcoindGetZmqNotificationsResponse; -import bisq.wallets.bitcoind.zmq.exceptions.CannotFindZmqAddressException; -import bisq.wallets.bitcoind.zmq.exceptions.CannotFindZmqTopicException; -import com.google.common.util.concurrent.ThreadFactoryBuilder; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; -import org.zeromq.SocketType; -import org.zeromq.ZContext; -import org.zeromq.ZMQ; -import org.zeromq.ZMQException; - -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; -import java.util.stream.Collectors; - -@Slf4j -public class ZmqConnection implements AutoCloseable { - - private static final int ERROR_CODE_SOCKET_CLOSED = 4; - private static final int ERROR_CODE_CONTEXT_TERMINATED = 156384765; - - private final ZmqTopicProcessors topicProcessors; - @Getter - private final ZmqListeners listeners; - - private final ExecutorService executorService = - newFixedThreadPool("wallet-zeromq-notification-thread-pool", 2); - - private ZContext context; - - public ZmqConnection(ZmqTopicProcessors topicProcessors, ZmqListeners listeners) { - this.topicProcessors = topicProcessors; - this.listeners = listeners; - } - - public void initialize(List zmqConnectionEndpoints) { - context = new ZContext(); - executorService.execute(() -> { - String zmqAddress = findZmqAddress(zmqConnectionEndpoints); - ZMQ.Socket socket = createSocket(zmqAddress); - try { - messageLoop(socket); - } catch (ZMQException e) { - int errorCode = e.getErrorCode(); - if (!isSocketClosed(errorCode)) { - e.printStackTrace(); - } - } - }); - } - - public CompletableFuture shutdown() { - return CompletableFuture.runAsync(this::close); - } - - @Override - public void close() { - listeners.clearAll(); - executorService.shutdownNow(); - context.close(); - } - - private ZMQ.Socket createSocket(String zmqAddress) { - ZMQ.Socket socket = context.createSocket(SocketType.SUB); - - // Subscribe to all topics - Arrays.stream(BitcoindZmqTopic.values()) - .forEach(topic -> socket.subscribe(topic.getTopicName())); - - socket.connect(zmqAddress); - return socket; - } - - public void messageLoop(ZMQ.Socket socket) { - while (!Thread.currentThread().isInterrupted()) { - // Bitcoind ZeroMQ messages are made of 3 parts. - String topicName = socket.recvStr(); - byte[] secondPart = socket.recv(); - byte[] thirdPart = socket.recv(); - - executorService.execute(() -> { - BitcoindZmqTopic zmqTopic = BitcoindZmqTopic.parse(topicName); - var message = new BitcoindZmqMessage(zmqTopic, secondPart, thirdPart); - topicProcessors.process(message); - }); - } - } - - private String findZmqAddress(List zmqNotifications) { - if (!canSubscribeToAllTopics(zmqNotifications)) { - throw new CannotFindZmqTopicException( - "ZeroMQ: Bitcoind hasn't publishing all topics (" + - Arrays.stream(BitcoindZmqTopic.values()).collect(Collectors.toSet()) + - ")" - ); - } - - if (!allTopicsArePublishedToSameAddress(zmqNotifications)) { - throw new CannotFindZmqAddressException("ZeroMQ: All topics need to published on the same address."); - } - - return zmqNotifications.stream().findFirst().orElseThrow().getAddress(); - } - - private boolean canSubscribeToAllTopics(List zmqNotifications) { - Set allTopicNames = Arrays.stream(BitcoindZmqTopic.values()) - .map(BitcoindZmqTopic::getTopicName) - .collect(Collectors.toSet()); - - long count = zmqNotifications.stream().map(BitcoindGetZmqNotificationsResponse.Entry::getType) - .filter(allTopicNames::contains) - .count(); - - return count != allTopicNames.size(); - } - - private boolean allTopicsArePublishedToSameAddress(List zmqNotifications) { - long count = zmqNotifications.stream() - .map(BitcoindGetZmqNotificationsResponse.Entry::getAddress) - .distinct() - .count(); - return count == 1; - } - - private boolean isSocketClosed(int errorCode) { - return errorCode == ERROR_CODE_SOCKET_CLOSED || isZeroMqContextTerminated(errorCode); - } - - private boolean isZeroMqContextTerminated(int errorCode) { - return errorCode == ERROR_CODE_CONTEXT_TERMINATED; - } - - public ExecutorService newFixedThreadPool(String name, int numThreads) { - ThreadFactory threadFactory = new ThreadFactoryBuilder() - .setNameFormat(name + "-%d") - .setDaemon(true) - .build(); - return Executors.newFixedThreadPool(numThreads, threadFactory); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqConnectionFactory.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqConnectionFactory.java deleted file mode 100644 index 9825f0bdd4..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqConnectionFactory.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; - -public class ZmqConnectionFactory { - - public static ZmqConnection createForBitcoind(BitcoindDaemon daemon) { - var zmqListeners = new ZmqListeners(); - ZmqRawTxProcessor bitcoindRawTxProcessor = createBitcoindRawTxProcessor(daemon, zmqListeners); - return createZmqConnection(bitcoindRawTxProcessor, zmqListeners); - } - - private static ZmqRawTxProcessor createBitcoindRawTxProcessor(BitcoindDaemon daemon, ZmqListeners listeners) { - return new BitcoindRawTxProcessor(daemon, listeners); - } - - private static ZmqConnection createZmqConnection(ZmqRawTxProcessor rawTxProcessor, ZmqListeners listeners) { - var zmqTopicProcessors = new ZmqTopicProcessors(rawTxProcessor, listeners); - return new ZmqConnection(zmqTopicProcessors, listeners); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqListeners.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqListeners.java deleted file mode 100644 index 3000c2816a..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqListeners.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -import bisq.wallets.bitcoind.rpc.responses.AbstractDecodeRawTransactionResponse; -import bisq.wallets.bitcoind.zmq.listeners.NewBlockMinedListener; -import bisq.wallets.bitcoind.zmq.listeners.TransactionOutputAddressesListener; -import bisq.wallets.bitcoind.zmq.listeners.TxIdInInputListener; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; - -import java.util.List; -import java.util.Set; -import java.util.concurrent.CopyOnWriteArrayList; -import java.util.stream.Collectors; - -@Slf4j -public class ZmqListeners { - @Getter - private final List newBlockMinedListeners = new CopyOnWriteArrayList<>(); - @Getter - private final List txOutputAddressesListeners = new CopyOnWriteArrayList<>(); - @Getter - private final List txIdInInputListeners = new CopyOnWriteArrayList<>(); - - public > void fireTxOutputAddressesListeners(T rawTransaction) { - Set addressesInOutput = rawTransaction.getVout() - .stream() - .flatMap(vout -> vout.getAddresses().stream()) - .collect(Collectors.toSet()); - txOutputAddressesListeners.forEach(listener -> { - try { - listener.onNewTransaction(addressesInOutput); - } catch (Exception e) { - log.error("Calling onNewTransaction at listener {} failed", listener, e); - } - }); - } - - public > void fireTxIdInputListeners(T rawTransaction) { - rawTransaction.getVin().forEach(vin -> { - String txId = vin.getTxId(); - if (txId != null) { - txIdInInputListeners.forEach(listener -> { - try { - listener.onTxIdInInput(txId); - } catch (Exception e) { - log.error("Calling onTxIdInInput at listener {} failed", listener, e); - } - }); - } - }); - } - - public void clearAll() { - newBlockMinedListeners.clear(); - txOutputAddressesListeners.clear(); - txIdInInputListeners.clear(); - } - - public void registerNewBlockMinedListener(NewBlockMinedListener listener) { - newBlockMinedListeners.add(listener); - } - - public void unregisterNewBlockMinedListener(NewBlockMinedListener listener) { - newBlockMinedListeners.remove(listener); - } - - public void registerTxOutputAddressesListener(TransactionOutputAddressesListener listener) { - txOutputAddressesListeners.add(listener); - } - - public void unregisterTxOutputAddressesListener(TransactionOutputAddressesListener listener) { - txOutputAddressesListeners.remove(listener); - } - - public void registerTransactionIdInInputListener(TxIdInInputListener listener) { - txIdInInputListeners.add(listener); - } - - public void unregisterTransactionIdInInputListener(TxIdInInputListener listener) { - txIdInInputListeners.remove(listener); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqRawTxProcessor.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqRawTxProcessor.java deleted file mode 100644 index f806dec6c2..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqRawTxProcessor.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -public interface ZmqRawTxProcessor { - void processRawTx(byte[] serializedTx, byte[] sequenceNumber); -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqTopicProcessors.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqTopicProcessors.java deleted file mode 100644 index e306c871c0..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqTopicProcessors.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -import com.google.common.io.BaseEncoding; -import lombok.extern.slf4j.Slf4j; - -@Slf4j -public class ZmqTopicProcessors { - - private final ZmqListeners listeners; - private final ZmqRawTxProcessor rawTxProcessor; - - public ZmqTopicProcessors(ZmqRawTxProcessor rawTxProcessor, ZmqListeners listeners) { - this.rawTxProcessor = rawTxProcessor; - this.listeners = listeners; - } - - public void process(BitcoindZmqMessage zeroMqMessage) { - byte[] secondPart = zeroMqMessage.getSecondPart(); - byte[] thirdPart = zeroMqMessage.getThirdPart(); - switch (zeroMqMessage.getTopic()) { - case TOPIC_HASHBLOCK: - processHashBlock(secondPart, thirdPart); - break; - case TOPIC_RAWTX: - rawTxProcessor.processRawTx(secondPart, thirdPart); - break; - } - } - - private void processHashBlock(byte[] blockHash, byte[] sequenceNumber) { - String blockHashInHex = bytesToHexString(blockHash); - listeners.getNewBlockMinedListeners().forEach(listener -> { - try { - listener.onNewBlock(blockHashInHex); - } catch (Exception e) { - log.error("Calling onNewBlock at listener {} failed", listener, e); - } - }); - } - - private String bytesToHexString(byte[] bytes) { - return BaseEncoding.base16() - .encode(bytes) - .toLowerCase(); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqWallet.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqWallet.java deleted file mode 100644 index a4dd457e78..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/ZmqWallet.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq; - -public interface ZmqWallet { - ZmqConnection getZmqConnection(); -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/exceptions/CannotFindZmqAddressException.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/exceptions/CannotFindZmqAddressException.java deleted file mode 100644 index 2816fab377..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/exceptions/CannotFindZmqAddressException.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq.exceptions; - -public class CannotFindZmqAddressException extends RuntimeException { - public CannotFindZmqAddressException(String message) { - super(message); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/exceptions/CannotFindZmqTopicException.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/exceptions/CannotFindZmqTopicException.java deleted file mode 100644 index 5e92bfbe40..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/exceptions/CannotFindZmqTopicException.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq.exceptions; - -public class CannotFindZmqTopicException extends RuntimeException { - public CannotFindZmqTopicException(String message) { - super(message); - } -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/listeners/NewBlockMinedListener.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/listeners/NewBlockMinedListener.java deleted file mode 100644 index a593fda5dc..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/listeners/NewBlockMinedListener.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq.listeners; - -public interface NewBlockMinedListener { - void onNewBlock(String blockHash); -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/listeners/TransactionOutputAddressesListener.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/listeners/TransactionOutputAddressesListener.java deleted file mode 100644 index 6e725cb3d5..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/listeners/TransactionOutputAddressesListener.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq.listeners; - -import java.util.Set; - -public interface TransactionOutputAddressesListener { - void onNewTransaction(Set addressesInOutput); -} diff --git a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/listeners/TxIdInInputListener.java b/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/listeners/TxIdInInputListener.java deleted file mode 100644 index 78a6895d23..0000000000 --- a/wallets/bitcoind/bitcoind/src/main/java/bisq/wallets/bitcoind/zmq/listeners/TxIdInInputListener.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind.zmq.listeners; - -public interface TxIdInInputListener { - void onTxIdInInput(String txId); -} diff --git a/wallets/bitcoind/bitcoind/src/test/java/bisq/wallets/bitcoind/WalletNotRunningTest.java b/wallets/bitcoind/bitcoind/src/test/java/bisq/wallets/bitcoind/WalletNotRunningTest.java deleted file mode 100644 index c5093d3c88..0000000000 --- a/wallets/bitcoind/bitcoind/src/test/java/bisq/wallets/bitcoind/WalletNotRunningTest.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.bitcoind; - -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.json_rpc.JsonRpcClient; -import bisq.wallets.json_rpc.RpcClientFactory; -import bisq.wallets.json_rpc.RpcConfig; -import org.junit.jupiter.api.Test; - -import java.io.IOException; -import java.net.ConnectException; -import java.net.ServerSocket; -import java.util.Random; - -import static org.assertj.core.api.Assertions.assertThatThrownBy; - -public class WalletNotRunningTest { - @Test - void notRunningTest() { - int freePort = findFreeSystemPort(); - - RpcConfig rpcConfig = RpcConfig.builder() - .hostname("127.0.0.1") - .user("bisq") - .password("bisq") - .port(freePort) - .build(); - - JsonRpcClient rpcClient = RpcClientFactory.createDaemonRpcClient(rpcConfig); - var minerChainBackend = new BitcoindDaemon(rpcClient); - - assertThatThrownBy(minerChainBackend::listWallets) - .hasCauseInstanceOf(ConnectException.class); - } - - public static int findFreeSystemPort() { - try { - ServerSocket server = new ServerSocket(0); - int port = server.getLocalPort(); - server.close(); - return port; - } catch (IOException ignored) { - return new Random().nextInt(10000) + 50000; - } - } -} diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/build.gradle.kts b/wallets/bitcoind/build-logic/bitcoin-core-binaries/build.gradle.kts deleted file mode 100644 index 0551f6241d..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/build.gradle.kts +++ /dev/null @@ -1,22 +0,0 @@ -plugins { - `java-gradle-plugin` - `kotlin-dsl` -} - -repositories { - mavenCentral() -} - -gradlePlugin { - plugins { - create("BitcoinCorePlugin") { - id = "bisq.gradle.bitcoin_core.BitcoinCorePlugin" - implementationClass = "bisq.gradle.bitcoin_core.BitcoinCorePlugin" - } - } -} - -dependencies { - implementation(project(":gradle-tasks")) - implementation(libs.google.guava) -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCoreBinaryUrlProvider.kt b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCoreBinaryUrlProvider.kt deleted file mode 100644 index d675399557..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCoreBinaryUrlProvider.kt +++ /dev/null @@ -1,20 +0,0 @@ -package bisq.gradle.bitcoin_core - -import bisq.gradle.tasks.PerPlatformUrlProvider - -class BitcoinCoreBinaryUrlProvider(private val version: String) : PerPlatformUrlProvider { - override val urlPrefix: String - get() = "https://bitcoincore.org/bin/bitcoin-core-$version/bitcoin-$version-" - - override val LINUX_X86_64_URL: String - get() = "x86_64-linux-gnu.tar.gz" - - override val MACOS_X86_64_URL: String - get() = "x86_64-apple-darwin.tar.gz" - - override val MACOS_ARM_64_URL: String - get() = "arm64-apple-darwin.tar.gz" - - override val WIN_X86_64_URL: String - get() = "win64.zip" -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCoreHashFileUrlProvider.kt b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCoreHashFileUrlProvider.kt deleted file mode 100644 index be6a739f05..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCoreHashFileUrlProvider.kt +++ /dev/null @@ -1,20 +0,0 @@ -package bisq.gradle.bitcoin_core - -import bisq.gradle.tasks.PerPlatformUrlProvider - -class BitcoinCoreHashFileUrlProvider(private val version: String) : PerPlatformUrlProvider { - override val urlPrefix: String - get() = "https://bitcoincore.org/bin/bitcoin-core-$version/SHA256SUMS" - - override val LINUX_X86_64_URL: String - get() = "" - - override val MACOS_X86_64_URL: String - get() = "" - - override val MACOS_ARM_64_URL: String - get() = "" - - override val WIN_X86_64_URL: String - get() = "" -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCorePlugin.kt b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCorePlugin.kt deleted file mode 100644 index 478c7cec0d..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCorePlugin.kt +++ /dev/null @@ -1,118 +0,0 @@ -package bisq.gradle.bitcoin_core - -import bisq.gradle.tasks.PgpFingerprint -import bisq.gradle.tasks.download.DownloadTaskFactory -import bisq.gradle.tasks.download.SignedBinaryDownloader -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.provider.Provider -import org.gradle.api.tasks.Copy -import org.gradle.api.tasks.TaskProvider -import org.gradle.kotlin.dsl.create -import org.gradle.kotlin.dsl.register - - -class BitcoinCorePlugin : Plugin { - - companion object { - const val DATA_DIR = "bitcoin_core" - private const val DOWNLOADS_DIR = "$DATA_DIR/downloads" - } - - override fun apply(project: Project) { - val extension = project.extensions.create("bitcoin_core") - - val hashFileDownloader = SignedBinaryDownloader( - project = project, - binaryName = "BitcoinCoreSha256Sums", - version = extension.version, - - perPlatformUrlProvider = { version -> BitcoinCoreHashFileUrlProvider(version) }, - downloadDirectory = DOWNLOADS_DIR, - - pgpFingerprintToKeyUrlMap = mapOf( - filenameAndFingerprint("0xb10c.gpg", "982A 193E 3CE0 EED5 35E0 9023 188C BB26 4841 6AD5"), - filenameAndFingerprint("achow101.gpg", "1528 1230 0785 C964 44D3 334D 1756 5732 E08E 5E41"), - filenameAndFingerprint("benthecarman.gpg", "0AD8 3877 C1F0 CD1E E9BD 660A D7CC 770B 81FD 22A8"), - filenameAndFingerprint("cfields.gpg", "C060 A663 5913 D98A 3587 D7DB 1C24 91FF EB0E F770"), - filenameAndFingerprint("CoinForensics.gpg", "1015 98DC 823C 1B5F 9A66 24AB A5E0 907A 0380 E6C3"), - filenameAndFingerprint("darosior.gpg", "590B 7292 695A FFA5 B672 CBB2 E13F C145 CD3F 4304"), - filenameAndFingerprint("davidgumberg.gpg", "41E4 42A1 4C34 2C87 7AE4 DC8F 3B63 05FA 06DE 51D5"), - filenameAndFingerprint("dunxen.gpg", "9484 44FC E03B 05BA 5AB0 591E C37B 1C1D 44C7 86EE"), - filenameAndFingerprint("Emzy.gpg", "9EDA FF80 E080 6596 04F4 A76B 2EBB 056F D847 F8A7"), - filenameAndFingerprint("fanquake.gpg", "E777 299F C265 DD04 7930 70EB 944D 35F9 AC3D B76A"), - filenameAndFingerprint("glozow.gpg", "6B00 2C6E A3F9 1B1B 0DF0 C9BC 8F61 7F12 00A6 D25C"), - filenameAndFingerprint("guggero.gpg", "F4FC 70F0 7310 0284 24EF C20A 8E42 5659 3F17 7720"), - filenameAndFingerprint("hebasto.gpg", "D1DB F2C4 B96F 2DEB F4C1 6654 4101 0811 2E7E A81F"), - filenameAndFingerprint("jackielove4u.gpg", "287A E4CA 1187 C68C 08B4 9CB2 D11B D4F3 3F1D B499"), - filenameAndFingerprint("josibake.gpg", "6165 16B8 EB6E D028 82FC 4A7A 8ADC B558 C4F3 3D65"), - filenameAndFingerprint("kvaciral.gpg", "C388 F696 1FB9 72A9 5678 E327 F627 11DB DCA8 AE56"), - filenameAndFingerprint("laanwj.gpg", "71A3 B167 3540 5025 D447 E8F2 7481 0B01 2346 C9A6"), - filenameAndFingerprint("luke-jr.gpg", "1A3E 761F 19D2 CC77 85C5 502E A291 A2C4 5D0C 504A"), - filenameAndFingerprint("m3dwards.gpg", "E86A E734 3962 5BBE E306 AAE6 B66D 427F 873C B1A3"), - filenameAndFingerprint("pinheadmz.gpg", "E617 73CD 6E01 040E 2F1B D78C E7E2 984B 6289 C93A"), - filenameAndFingerprint("satsie.gpg", "2F78 ACF6 7702 9767 C873 6F13 747A 7AE2 FB0F D25B"), - filenameAndFingerprint("sipa.gpg", "133E AC17 9436 F14A 5CF1 B794 860F EB80 4E66 9320"), - filenameAndFingerprint("Sjors.gpg", "ED9B DF7A D6A5 5E23 2E84 5242 57FF 9BDB CC30 1009"), - filenameAndFingerprint("svanstaa.gpg", "9ED9 9C7A 355A E460 9810 3E74 476E 74C8 529A 9006"), - filenameAndFingerprint("TheCharlatan.gpg", "A8FC 55F3 B04B A314 6F34 92E7 9303 B33A 3052 24CB"), - filenameAndFingerprint("theStack.gpg", "6A8F 9C26 6528 E25A EB1D 7731 C237 1D91 CB71 6EA7"), - filenameAndFingerprint("vertiond.gpg", "28E7 2909 F171 7FE9 6077 54F8 A7BE B262 1678 D37D"), - filenameAndFingerprint("willcl-ark.gpg", "67AA 5B46 E7AF 7805 3167 FE34 3B8F 814A 7842 18F8"), - filenameAndFingerprint("willyko.gpg", "79D0 0BAC 68B5 6D42 2F94 5A8F 8E3A 8F32 47DB CBBF"), - ) - ) - hashFileDownloader.registerTasks() - - val binaryDownloadUrl: Provider = extension.version.map { BitcoinCoreBinaryUrlProvider(it).url } - val downloadTaskFactory = DownloadTaskFactory(project, DOWNLOADS_DIR) - val binaryDownloadTask = downloadTaskFactory - .registerDownloadTask("downloadBitcoinCore", binaryDownloadUrl) - - val bitcoinCoreHashVerificationTask: TaskProvider = - project.tasks.register("verifyBitcoinCore") { - inputFile.set(binaryDownloadTask.flatMap { it.outputFile }) - sha256File.set(hashFileDownloader.verifySignatureTask.flatMap { it.fileToVerify }) - resultFile.set(project.layout.buildDirectory.file("${DOWNLOADS_DIR}/bitcoin_core.sha256.result")) - } - - val unpackBitcoinCoreArchiveTask: TaskProvider = - project.tasks.register("unpackBitcoinCoreArchive") { - dependsOn(bitcoinCoreHashVerificationTask) - - val inputFile = bitcoinCoreHashVerificationTask.flatMap { it.inputFile } - val sourceFile = inputFile.map { - if (it.asFile.name.endsWith(".tar.gz")) { - project.tarTree(it.asFile.absolutePath) - } else { - project.zipTree(it.asFile.absolutePath) - } - } - from(sourceFile) - - into(project.layout.buildDirectory.dir("${DOWNLOADS_DIR}/extracted")) - } - - val copyBitcoinCoreToResourcesTask: TaskProvider = - project.tasks.register("copyBitcoinCoreToResources") { - dependsOn(unpackBitcoinCoreArchiveTask) - val sourceDirectory = extension.version.map { version -> - project.layout.buildDirectory.dir("${DOWNLOADS_DIR}/extracted/bitcoin-$version/bin/") - } - from(sourceDirectory) - include("bitcoind*") - into(project.layout.buildDirectory.dir("generated/src/main/resources")) - } - - val processResourcesTask = project.tasks.named("processResources") - processResourcesTask.configure { - dependsOn(copyBitcoinCoreToResourcesTask) - } - } - - private fun filenameAndFingerprint(filename: String, fingerprint: String) = - Pair( - PgpFingerprint.normalize(fingerprint), - this::class.java.getResource("/$filename")!! - ) -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCorePluginExtension.kt b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCorePluginExtension.kt deleted file mode 100644 index cbbf456fce..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/BitcoinCorePluginExtension.kt +++ /dev/null @@ -1,7 +0,0 @@ -package bisq.gradle.bitcoin_core - -import org.gradle.api.provider.Property - -abstract class BitcoinCorePluginExtension { - abstract val version: Property -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/HashVerificationTask.kt b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/HashVerificationTask.kt deleted file mode 100644 index 43dcdfb557..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/kotlin/bisq/gradle/bitcoin_core/HashVerificationTask.kt +++ /dev/null @@ -1,50 +0,0 @@ -package bisq.gradle.bitcoin_core - -import com.google.common.hash.Hashing -import org.gradle.api.DefaultTask -import org.gradle.api.GradleException -import org.gradle.api.file.RegularFileProperty -import org.gradle.api.tasks.InputFile -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.TaskAction - -abstract class HashVerificationTask : DefaultTask() { - @get:InputFile - abstract val inputFile: RegularFileProperty - - @get:InputFile - abstract val sha256File: RegularFileProperty - - @get:OutputFile - abstract val resultFile: RegularFileProperty - - @TaskAction - fun verify() { - val input = inputFile.get().asFile.readBytes() - val hash: String = Hashing.sha256() - .hashBytes(input) - .toString() - - val expectedHash = getExpectedHash() - if (hash != expectedHash) { - throw GradleException( - "Hash verification failed for `${inputFile.get().asFile.absolutePath}`. " + - "Expected: `$expectedHash, Actual: `$hash`" - ) - } - - resultFile.get().asFile.writeText(hash) - } - - private fun getExpectedHash(): String { - val inputFileName = inputFile.get().asFile.name - for (line in sha256File.get().asFile.readLines()) { - if (line.endsWith(inputFileName)) { - // ' filename.tar.gz' - return line.split(" ").first() - } - } - - throw GradleException("Couldn't find expected hash for `$inputFile`.") - } -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/0xb10c.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/0xb10c.gpg deleted file mode 100644 index 02974090e7..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/0xb10c.gpg +++ /dev/null @@ -1,229 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=XlCK ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/CoinForensics.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/CoinForensics.gpg deleted file mode 100644 index 07140ede18..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/CoinForensics.gpg +++ /dev/null @@ -1,31 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQENBF/1zL0BCADD1H7gNIVYZ3ibv3HBl8ue5yQKc68DCZk9HAZy9OLRoFLnR0CF -qwTT8WnjWjvlc/66Ql6kgNhZu3AlEQ4FuTZ9tbYwYeHvw/SBTZkFFlWOyrs5dNJ+ -P+pDHUQQLGyu7oBM/6EpsVVbcXTWXXv3fUI3t0zqhHccCONDi//zFC8vv4hNE3Ps -mTqxDSU3H88Zkhcel0zgIQXebnAfoExoMcue+A0TZAvk5HC1VCbuacyC6yIfcnqb -lgOylUc7EA9TNYw52U4hcACyusm+T8wkdjutOtO5j+bFIDKRMkez2MvZZdfr08B4 -FgfUwzlR5lnr3Ezf7tjx9KA4e1300eh3vidNABEBAAG0TENvaW5Gb3JlbnNpY3Mg -KFNpZ25pbmdLZXkpIDw1OTU2NzI4NCtjb2luZm9yZW5zaWNzQHVzZXJzLm5vcmVw -bHkuZ2l0aHViLmNvbT6JAVQEEwEIAD4WIQQQFZjcgjwbX5pmJKul4JB6A4DmwwUC -X/XMvQIbAwUJCWYBgAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRCl4JB6A4Dm -w4LRCACpLnGtci9ADF6jzt82PcLUHDlL1c8HNs+KeLa3SQ+KF45gmfOPieRZlj5l -1MNJ0F5Km5DdJA0u39mNINlfdIlPOkxqXnmRAKbVCXVSUF0b8cmIdwYAc70qRpV/ -y6zTgfC8Zs1974/NX95+1GSnw+97MEbR3ULW3mapQXht6gDVCDZXIWVm9WQHzsXQ -MmAqoynPhKfGAPf75rdgRjpwUS/BUASP+jSAiG5cuEtFljh2sARz2/H3JAAkqHhQ -6Sqy3rMvNdZ3JVlRI9JOLlVp81PlnQFt39UDV09wa88st/6lTT35xm3LfhcPqSzx -6KA9zt87hNlRX9sXxVDTusYvwj5EuQENBF/1zL0BCACth5JAULLkySfkVAeGzpbF -sRkQxS4GJa6EB9qE+nJOijcBVJGwJlyaKHYu1lOTQBiOAz1bJXYk1kiG+CupvzfW -4gnZRBtF1G/irbEArg2uLvOukKVgusElxUG8iSE7u0B2ET+RPXRPABY75htLS6Id -xvgZiVAt/w5hRt3jbdmwGjOxdorkdofODvMOKtdi0qqxi16GJSD5EqasBIYpKO8Y -xKKFJNusHaEgUAXkL82UwcO6YyuSsCckRKJTukNisCza5u2gWNf0hQHbiouEbFz7 -/e7x4Iys9EbOS+N6PnfbyVokbWMN3rSeq56Lci2/DK1YC+PFaxU8zydg4rqscwab -ABEBAAGJATwEGAEIACYWIQQQFZjcgjwbX5pmJKul4JB6A4DmwwUCX/XMvQIbDAUJ -CWYBgAAKCRCl4JB6A4Dmw+DfCADBX9/1ABB6KIYOMfd9/OzUI03hXQruZMz3CT6H -RVhpmjvZAc210kVGW8X7Y50op4NQbdgheQgCTft/iteLv7JIPo8UauBls0G90Kgm -aCFa4z9y3cMF+tkylgubuPVaOVh+OCcF9ZBzPQeQViMN0u/K1whhs48paFfG6tT4 -g7gO11PnRnCwIFGbwULp+yWInG1F2Hosbt03dzHQdPRWMzvo4Cb+gzIYES4jb0uQ -AganiOKOOpLUgQ/9Iw1hEvqqZ/cjFR+lCztLrXUyLDzGo636C0Q3LYLoMEudk3Cx -9mf4vHJoGKqk4Op9ATBaN8ET/F99AcQJRz7U3wL/88WDSRND -=6SYc ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/Emzy.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/Emzy.gpg deleted file mode 100644 index 0660962ef5..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/Emzy.gpg +++ /dev/null @@ -1,263 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=qsoI ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/Sjors.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/Sjors.gpg deleted file mode 100644 index 68f3bb94a0..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/Sjors.gpg +++ /dev/null @@ -1,639 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQINBFWSwMoBEADG31O8+ex+xpgzVKQgF4iVRE5uBPT0+GM6FnwqIIhXVKiBLQh8 -YDhhgk6joh+vsLrFzKZ9kXwoiHN8y/AiNCQ0xjAUdpznD5xvHAaGIAlT/sodRNT+ -869WgT9G1uiVp0P4ucEeilmhCn9o51LqkS3roXkj0ec52b1pslUl2WKdu1ZD+Bj4 -3/oVZm7mmjkDwl0RHJQmqlK0bunq0jlVlgH5sdQfmLbCZaq3LhVPf73zt5qHH+J6 -ZbU7A4cqm2eN5SyH+Nno+cq3+vXmvVI+x/jPe/dPDCXaGWf5fWI/Lbk/mMP7JAl1 -6X44CN+hZHUnNuzeZt2/ROWZ0s0JJcjQkSe9noUQedjBAHX82s886vsFzOHvDtul -EuV/XAjUlkhMbhZkZaIq9ucqHmUBI4+OcFEIbbKc9TrKtJe+CYuWTNlomVk/iFr8 -zSm/S64NiqKi/BeQGgcsDZIaJDYfDP83esOOaaxFswHnJNtHnU1PwntrJtXft0dK -ydtlQZ6r96SYxLDTeGfC2SNk0zbnKAGvjj04vzQeN+JSRZ75tNKmgdbJdNL8wvPh -879TpCwMhNDvSRG+YqCe6whaJV76a+Doxg48HCJYaj6bnRn41/QGJEyL31I8l/7S -YsLLmAEbqwG7erYi7WZS3cRrGJI8RwohGMZf7yraqoaOgMKmtE/Sq0tLtwARAQAB -tCNTam9ycyBQcm92b29zdCA8c2pvcnNAc3Byb3Zvb3N0Lm5sPokCQAQTAQoAKgIb -AwUJB4YfgAULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAUCWWXcoAIZAQAKCRBX/5vb -zDAQCeYJD/47XDMfEMg4g4spo7k92XsNkvjlAhWvvxd+kxow/V8c64WQXody32FZ -HRSmK8dVjf9mIJMKkX4lpKpim7cQxsdTcorcdu+yk4TK+Wah61vsMhbSSllfHs1U -+q8jYMGnXTD+CY0aeTMrTfJcR2yN98jmNSWIL1qWmJ51RSTL6BQKb6eYtR7pWRkW -uMR6oFC09Db4fiKa4zhH81+/t0g+6pMY391gSluaS+OfNqGORCo+/IdG5IDzh5Vp -f19qXjd5oMsZQf6/P4b4XUktgl8RVRcNzdYGoXpcd8LpeHtEOh5I93ODmCwqd67b -YDlhDNN7iGhPndPEF6P4CNO/rXLPCZyMhRyt1dflu0KPCr+0AgR31cdhH/p7eCyj -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 -1ke7JQM= -=zZGX ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/TheCharlatan.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/TheCharlatan.gpg deleted file mode 100644 index 8e1b242668..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/TheCharlatan.gpg +++ /dev/null @@ -1,282 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=hSyO ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/achow101.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/achow101.gpg deleted file mode 100644 index ed3d4fa548..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/achow101.gpg +++ /dev/null @@ -1,572 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=WD4b ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/benthecarman.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/benthecarman.gpg deleted file mode 100644 index d17adccb96..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/benthecarman.gpg +++ /dev/null @@ -1,84 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=MQL8 ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/cfields.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/cfields.gpg deleted file mode 100644 index 052375fefe..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/cfields.gpg +++ /dev/null @@ -1,73 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=+XOM ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/darosior.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/darosior.gpg deleted file mode 100644 index 2da3281f75..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/darosior.gpg +++ /dev/null @@ -1,372 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -u0o= -=nHvl ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/davidgumberg.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/davidgumberg.gpg deleted file mode 100644 index 272620b0a4..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/davidgumberg.gpg +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mDMEZh8oBRYJKwYBBAHaRw8BAQdAcZI8CS84nqssXbiOWJpIvP/TrkdewzLrwImK -k9XwAeC0J0RhdmlkIEd1bWJlcmcgPGRhdmlkemd1bWJlcmdAZ21haWwuY29tPoiT -BBMWCgA7FiEEQeRCoUw0LId65NyPO2MF+gbeUdUFAmYfKAUCGwMFCwkIBwICIgIG -FQoJCAsCBBYCAwECHgcCF4AACgkQO2MF+gbeUdXHlAD/dQGKkNsscBJO6Bhh1M6s -j1GidARbDK58gU4JwLdWP2oA/2beZ7/qxF3SpWQiyDQYy3eWTjQ2u45QoHBZKAXn -JhQDuDgEZh8oBRIKKwYBBAGXVQEFAQEHQM/TTXIuDC/EZTdr3/n5qjXugRNWSnFX -IXSsckKNP21AAwEIB4h4BBgWCgAgFiEEQeRCoUw0LId65NyPO2MF+gbeUdUFAmYf -KAUCGwwACgkQO2MF+gbeUdUQ4gEAu8hBrRFPsh0oSR2DhH/iJncO7blFv0PrcVr6 -+C9qh2AA/j7iSx5vw4XUrmywIO6ZkkM7/H5TtmBMyHEYvc6xzKgK -=NL4H ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/dunxen.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/dunxen.gpg deleted file mode 100644 index b19e5b3dd5..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/dunxen.gpg +++ /dev/null @@ -1,109 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -uxcJDoPjk/CgbFHAvKJ4q51DMNHdJsusRQ3/ -=Kzds ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/fanquake.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/fanquake.gpg deleted file mode 100644 index 17db6f4b10..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/fanquake.gpg +++ /dev/null @@ -1,280 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -A7UR6bgzBiiQVdi1gGWJBGxbJrY= -=JG7G ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/glozow.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/glozow.gpg deleted file mode 100644 index 83a8134a51..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/glozow.gpg +++ /dev/null @@ -1,266 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -+JD2B0FG -=gVx4 ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/guggero.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/guggero.gpg deleted file mode 100644 index 8c55b89f61..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/guggero.gpg +++ /dev/null @@ -1,302 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -GJDlS+YjTuu92TulWVx1gUrUN733t5M= -=NiKY ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/hebasto.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/hebasto.gpg deleted file mode 100644 index 8f3009aecc..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/hebasto.gpg +++ /dev/null @@ -1,66 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -V1VMe5a6JfA= -=se1y ------END PGP PUBLIC KEY BLOCK----- \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/jackielove4u.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/jackielove4u.gpg deleted file mode 100644 index cbbfee8769..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/jackielove4u.gpg +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=iMFi ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/josibake.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/josibake.gpg deleted file mode 100644 index 337b3dc7b5..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/josibake.gpg +++ /dev/null @@ -1,65 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=OxPy ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/kvaciral.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/kvaciral.gpg deleted file mode 100644 index 1b2a1a77dd..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/kvaciral.gpg +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mE8EYFOW9RMFK4EEAAoCAwRsGidGlfAWsAc9XkOo+f12HJXb0cn5cF/LKZn2Bx4T -VArwpxZ6kQNFF63EhHxpdn9/AFFUTfW0zERFH3W16JXytCFEaW1pdHJpIDxrdmFj -aXJhbEBwcm90b25tYWlsLmNvbT6IkAQTEwgAOBYhBMOI9pYfuXKpVnjjJ/YnEdvc -qK5WBQJgU5b1AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEPYnEdvcqK5W -1TUA/17zdn+qe45dw6EQTqZVThHk3f8Q8tAIVU819DAsdvk3AQCIn8rWKm039ptw -nbfv3imf3HXFrR+uNPArG63S3GDdjLhTBGBTlvUSBSuBBAAKAgMEJ1+esXcu88al -/N3xAFJ70FDYXqubkRLDmmRJQJ+RaghE04KIexqAOX1nwDt5VS1Kufh1ONYE1VrY -6EK1k1b9rgMBCAeIeAQYEwgAIBYhBMOI9pYfuXKpVnjjJ/YnEdvcqK5WBQJgU5b1 -AhsMAAoJEPYnEdvcqK5WuLQA/2rqV7iIkl8qH3m+7clxVAFrzAMPHkA4WAb1+V8j -QClSAP931h4p7qQ7/9phUPCpHkufAJlpe/1JCSxa+FqHMhlKLg== -=qv4L ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/laanwj.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/laanwj.gpg deleted file mode 100644 index 6e24626d9f..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/laanwj.gpg +++ /dev/null @@ -1,1257 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -QFAl1Efo8nSBCwEjRsmmBQJiA9u2BQkSTW1WAAoJEHSBCwEjRsmm4EYIAI5U2Qo3 -rl/hbglaqtTUUzUpVJ1YkC1Vj1HV7eY1u1P2nzAq514us5BbK2N+Gm/7Akze+F3P -1SskLu1j3218i83YHJfubSv1KiDqKJxGRdyIlsFLuU98bh2ePxpL77kMuvaSEQZ9 -xGjrUjINlb/1TN+HronBL1R3fjFCYjE0jfs4TrHLlsZMiGOG8Ij939x4gra6Pep6 -tpWZ8jLigfVT/U6Q4s04LdjQs2vyjHZGJLF7s9/fh0tc/qhg2+jQaHJg+D8l/ZxN -Jn/Kxm3hbcc00mpqiHwPCkwKDW0EPZO4W6V39EAXKjpL0jjCJNtfpcAnj/1PLRSy -XBYWmBKKvcGcYeS5AQ0ETlS0wQEIAMNO3OkPxoPRKWzBLcI7JRITAW+HNaLTq3uN -2+4WxA57DEjbL9EDoAv+7wTkDAL40f0T+xiu6GJcLFjwGJZu/tYu7+mErHjrdo+K -4suCQt7w5EXCBvOLjhW4tyYMzNx8hP+oqzOW9iEC+6VV91+DYeqtEkJuyVXOI4vz -BlTw8uGow8aMMsCq8XVvKUZFTPsjGl197Q5B3A+ZOFCR8xqiqdPjuz6MglVVoFdD -Nu3EZn8zkGsQlovXoE9ndVeVzx/XMNmsxFaMYsReUs253RIf1FEfgExID0fg2Ony -LCjS2iFW1RgajS+/saIkKl+N1iuMzJA7wMAM0plhRueOG0MtZSsAEQEAAYkBHwQY -AQIACQUCTlS0wQIbDAAKCRB0gQsBI0bJpmsDB/4waenn2CvSHXyomykfpwf5lMte -1V5LvH3z5R2LY+1NopRvLSz3iC39x69XWiTbhywDfgafnGPW4pWBOff2/bu5/A6z -1Hnan1vyrRRD/hx1uMJ7S6q+bIvZiVIg1p0jH6tdIIhwX3cydhdRZHo7e9oSMgOU -Wsr6Ar59NRo9CENwGPE4U61HXfOnxWdrFWoAXdwZczBeLxmUy6Vo6sKqv+gE4bqr -tAM0sY/MsQ9cU95x+52ox/sq44lQMwd3ZBYUP7B1qbHIhZSZuch6MLi5scLPeau0 -ZvCaljiaMeivP5+x0gWPRs0kI+9sZxInbqvrsJ6oOBJM3xYGhtn1zZ7qmZR7 -=3FbL ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/luke-jr.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/luke-jr.gpg deleted file mode 100644 index c5bd35df46..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/luke-jr.gpg +++ /dev/null @@ -1,14 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mDMEY/qPOhYJKwYBBAHaRw8BAQdAOZ14+e7eu4f41o3aXFc0oanZ17u5TrtZ5wSP -v/vdlla0M0x1a2UgRGFzaGpyIChDb2Rlc2lnbmluZykgPGx1a2UtanIrZ2l0QHV0 -b3Bpb3Mub3JnPoiZBBMWCgBBAhsDBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheA -FiEEGj52HxnSzHeFxVAuopGixF0MUEoFAmYB4mAFCQPohqYACgkQopGixF0MUEpZ -owD/X+yp2/lZ2wwHKr5B1FNHqFebl5rbDGYM0KNJr2cf6V8A/0snnzMkFw/cZGMT -XpPptlpZTpZtfEJS3t4mG3gSRy8FuDgEY/qPOhIKKwYBBAGXVQEFAQEHQCNSV2aR -3hmwCLcElLQShHFerZNCU8SiVHKDJ1ML8k1LAwEIB4h+BBgWCgAmAhsMFiEEGj52 -HxnSzHeFxVAuopGixF0MUEoFAmYB4nYFCQPohrwACgkQopGixF0MUErHWQEAjbwX -AHs7uqXtx1lXeqgX+ZKIC3KZcEOXf93qgof3GU4BAJdZoxPBFF6pkHklrmZPL54Q -0VQ9kPHLeTOqEaZKPKkN -=Jn+A ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/m3dwards.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/m3dwards.gpg deleted file mode 100644 index ae25ce772c..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/m3dwards.gpg +++ /dev/null @@ -1,13 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mDMEZbzj/hYJKwYBBAHaRw8BAQdAkCDMFTBuuSf11hFFotQWu8zNgqj1lsUHw3FG -vva+bIK0G20zZHdhcmRzIDxtZUBtYXhlZHdhcmRzLm1lPoiZBBMWCgBBFiEE6Grn -NDliW77jBqrmtm1Cf4c8saMFAmW84/4CGwMFCQWjmoAFCwkIBwICIgIGFQoJCAsC -BBYCAwECHgcCF4AACgkQtm1Cf4c8saOLYgD/fEDHHfX45PyWB16OckdhVOTrKeqp -9HB/LJDAAGH1g/IBAL2AV+zPT5fWUM6lzCdmnAHZbJkx7ibLH5mlUFhmHcsIuDgE -Zbzj/hIKKwYBBAGXVQEFAQEHQASu4huZ/vUAwDYC4bDoBXMe/57Cf54FiVqH5cxi -sw8zAwEIB4h+BBgWCgAmFiEE6GrnNDliW77jBqrmtm1Cf4c8saMFAmW84/4CGwwF -CQWjmoAACgkQtm1Cf4c8saPM0wEAgkLTbhCgkraILZR3B4oSKjIkvpdb6cTQjIEM -OmFa4zABAM/KFvPB/1CRQ78oPDDrnbwd+VOHnSBjNv7EgbVXtFEA -=CF0c ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/pinheadmz.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/pinheadmz.gpg deleted file mode 100644 index e2d37a71d0..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/pinheadmz.gpg +++ /dev/null @@ -1,64 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -ycIcIg+DBbAliEk= -=fZil ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/satsie.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/satsie.gpg deleted file mode 100644 index 2f5a966453..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/satsie.gpg +++ /dev/null @@ -1,51 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=0epX ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/sipa.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/sipa.gpg deleted file mode 100644 index 53f497c1c3..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/sipa.gpg +++ /dev/null @@ -1,1164 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -RYCk23mqsCeuS1ryt7ZGf3+Cb+sJ/NImeu0k0f02Td1Pl6sPQTl6XOMdWeQu4LqI -3J+tgAtuhCifL2gv8a6DBSghn6EAjUuABhlTbsUpOg1InEbEO37O8XOTm+9aTL7N -cS54mjoMP2PpiQEcBBABAgAGBQJXUHArAAoJEFdGYdpFhJ+0SxwH/AhXsfikorjC -oPGdpP7CpdPztzYhsk88NzVVg+bKfWA7gaTbpqMnZSHSX2xAR6BBMfaOmMiH9bZD -ONDijCTxWSFG8QsxGJjVjRoqOVfV4vC+Lb30RtNI8H/Y3oYoWbfNMf1Lg3N12Dd6 -JWePN3viBa3a3Z9lPjbxZGdS/i8X/7hcaLhDuAwNZswMXOOOEJWSPVz55X9RV/ZO -LHTJEG9gY/4nbvciKIStORg8SPn6ICHapNTsb3L9y7MYhgAyCpMGuVWOa1VU4Diy -vHmYVBK49OzmWT6IpbK6TfolegHONAXRAZwOYYsvAy4jQOUGgmybMnDJGNkeAr0k -PUfYrZioTqmJARwEEAEKAAYFAldEkl8ACgkQdIELASNGyaZRQAf/YROV3uy/yD7j -CkJmA1yopxNLngeMc2vmVqItG+/2vyyrPItekc6RHNtiIH4tvk63+myEWThXmiu5 -x9By3x2/M9hP40oOhRie30dslQhFw5GnJwvxZJWsaxEqc6xXFMtRJ5vdAyrcru9K -C/E5d5tXRuquILQdalx1IBRWfcAerRSEYhleMXVTu1HaMZBxRRJh/8T2iqR+dQeQ -4IQf6MnTsvH6ZMuEbqzEHzFFQ39C4fv6033UfmDUVrPAF4/IZiB32Lav+GPdZcm+ -jS/sog/jbq6YGsSCkyTpIXvxbwlMDsTnFeu/juIwugMsXrj53P5/1iNj7nGjo4dw -HtB2HhkAiYkBgQQTAQgAawUCVkgzfwWDCWYBgF4UgAAAAAAVAEBibG9ja2hhc2hA -Yml0Y29pbi5vcmcwMDAwMDAwMDAwMDAwMDAwMGU2ODVmY2UxYmE0ZjhhOWQ1ODRj -ODZjZDA0ZDY4YTJiNzM3NDM0OGEwNzdkN2E4AAoJEH+rEUJn5PoEP5AIAKPt/3hF -4Nl5I84IPI98Td0KsV5g7fA+1qrQExSCwCgax/PEnxPdN1JOI1xqtaxi3E/vLib9 -wDocAcDDOAc+3sGF9U97cbrpHfohKRkObhVnmEF5qLokAPiSTMFvIMCLp+25EdKT -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 -7wS8iXX30oUcMGWkRL3z -=98IQ ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/svanstaa.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/svanstaa.gpg deleted file mode 100644 index b344ca9718..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/svanstaa.gpg +++ /dev/null @@ -1,68 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=ja7z ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/theStack.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/theStack.gpg deleted file mode 100644 index b4f0ef7179..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/theStack.gpg +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -mQINBF/NLkkBEAC2ZxrwvQwHazmYRyL1tJxLYnhBcHElQOHBs4gmr/6w3o5Vb0Gm -u41RCVZhf6COCYKwQ38F6BqiB2joFXkKZ8Q4YnM2ycj0Pjvi50t4Plus+I0EtlGv -06ZucdObb2FdWJXD2ln7EjNN1DQrHrIlPaR28MCKQ8CSt8DraFYBFP9SytfGX5Sq -X/u6CQxqUicczCV/R6NUzmqrgL34nDii6lTZHp1phbd8X/x2IERHheWTRkt9DSID -1AKWCP0b4v+Ppxz06gQkQ0hcF8b/IaMHdiGzlO/lae3BOxAzedY/+0fhl9/Ye738 -PK7lberM3T9B3oIKQErbyCoztOeysERcUP3F2hf9W0q0l9DKMnqmW9t6Ew23RXtC -S7AwUW6CsI/XsbdDX4CsJaeSkRcqWcjV6V1DVkB1X6lAK0dfXf8KULu1jtSj8coM -vrMUnbuA1MJMBu3TN1nuAdrdH39ymEElto1nAE5XfiHI7Ar4/696UVy0GtJ52Zm4 -tv7d2D25viX/vPfEMY+asVi//FTVT5wj5S90c+/IZ8gCyUJamrLLA9yJLTdkIr5B -T0KgtnVBng/StaGXw9F9tgOmsYqTdkJiuGpEMldP+lEjzCRZ2YBg87cOgr9jeSMo -lbDMh8BZs2VjHvCfJXNWEEO66ZtJ1T+GFn8rZfHODyqNIoHa2vnJeBmkFQARAQAB -tEBTZWJhc3RpYW4gRmFsYmVzb25lciAodGhlU3RhY2spIDxzZWJhc3RpYW4uZmFs -YmVzb25lckBnbWFpbC5jb20+iQJUBBMBCgA+AhsDBQsJCAcCBhUKCQgLAgQWAgMB -Ah4BAheAFiEEao+cJmUo4lrrHXcxwjcdkctxbqcFAmN7zAMFCQlSODoACgkQwjcd -kctxbqdUChAAj+vLCo492eV65u0zRAFfLl1GKfjS0oBl+WkPdTa1c+ZS2l9Gq/rf -dQTHBAy1VtWhT/BfY0jG7coP4sheSKIHI8HXJrMezSIy++KDL19hCxAfz6HJSI1o -PzgVjTCr+bsWQUmP9LlQgiohP7SXCl3dnOslod08i/o5v8cH6MqDPXfAxVs64SP3 -pJSsaBpaaeGyu7lYK4ai8+saQMGGdOf5pYuJ4KpGvgSH5AmtxU7LpBK5vrhcNbRe -9JLIvvSIAWQ1sQASJG1a+jjuv0NtZUDdXpeeY6C/t+K8zCenDfNlAxtoNhTmxkfS -LOxqTO0nZcizPu2V1GGlUyryLta53a2/JIOkNdlRSWolv5wx7ceEKYjvn/FVdVCH -qYoED6feEIehBvtgaos1o64UcZrHk+no1zPwZ5yibXi6rM9vIVgknRL42LBwTzLN -A619JUwhUYabSnoavTeigPzmGQUjD109KOQ3PSWH2A/NFpQlFjo2RWPpS7CuARJT -RzcINdWW/J+wobRSndBIMMLsjRISlRc4tHieg3D0ov9kYRIXS20q/wPjmY/5aK9P -yhJn7l6c1hsqUW5Td/PYA95LWoKT37E/fop6/HAA//rwPYb73aoNn8UxC/6BCZVH -9o8Gz7UX72F2mBfRBGXGQ6n0cIH0ihcUcnOEWI0d/z6t2usWPWNroT+5Ag0EX80u -SQEQAPTZyZK8bP6fTV/ZXaMPJjmKXWHG5dyMJKjF7UlpfaSutjJUK9OzVJ6heirQ -DaoXECMB3qBtfuDLuzRxmqvyxlaVjM4A0cBv8gWLowosWubEll1QtWHbPRubtAv+ -ci8KEFPgU6L6Ozbakiam223JWlyUMglvj9SiAHA8eQLsm19b09dJThtMcxCTALnf -iPbA33GAEP0NlNL3mlUu5xyNuSH5mxZw//efHmwhlxdh5qml9EVthggVHS95q5Ax -01hA0CWsvMOU91doDhPxxFZBPlf3Cb+sRC35QTDK8LH+sRF8ouXB02okiF6h83PM -kfPJkS+Lf7lnkHvAvkUCSaley9oanCcqVGqgeH5ZEF2jAUtXZ95wPrj+6HEiFFFV -ZzDphDMIftDZHZ620Mx8JgrkXapDKaGqN0wo7Qo6KsMdIpTyfWGyK/m39sd7RfYL -7Twze2fA+lxBA4D/VXxe73JEgaYu5UZWta1LG9rgby0zvk02Xu8IFyCCOT4Twsas -nr8fB9CEC4BNRMraBSkQQI4yfBz/NhelPu2r//OXf4jKs5qL9qZvY1DPQY5Lme98 -6TiNXYsfBnEUqmi7ueA/j/F93eG+OuK+vgXd6OCcgZqczMDhX5IHeMbOJsFmL60+ -PEKGefaDu61/HSpw++wtIVK3YWUbJTf3R39l0uE5JFZk93wLABEBAAGJAjwEGAEK -ACYCGwwWIQRqj5wmZSjiWusddzHCNx2Ry3FupwUCY3vMcgUJCVI4qQAKCRDCNx2R -y3Fup/t3D/40MKO+UQSz5DAGYCwX5xRYtVWwfJ+Oz7BtvwS6xGXkdR+sX20BvuMd -MEejPP6PbT4KvXtja/Yh5hHw4KAcrhN7BnsVms0rLJ0N69ji82GJi7zMFioghBn2 -DIkfM4sVyFsQx9VPIiNqVM+TK+cXvXhjntfYF1PByUQWA38gnZiWwBJLz9nmuc9y -uQ6U/zAUoWSDhjvX/AnAe3DNpkvzKSiGxGLGq/UQYtv4fDIzg2oSXUoGPe+YFCC/ -p5mlLLcn6Zvoeh9AUwVBKCPC1ZMx3VKqyvjNeLtH8MKIvS4yiuHa07nsruyA1obI -p5m1DEWs1dNpU2HHdM4uqU1pTBprPIkevBjEfzSx9v+U76tqRh5kp391A1RCDieO -8m3wG0oAN8V553GIXDgrOMKLYIE7VNIbsHjnXJsAR3oniWhPyEwvUnBsspkjgwLg -xWi/LQHlbXkGFPNnF+aNlGGQB81iXMHdu8wqggyTG2Fa0zEQdhkAsGKAIU+1GB+G -oOCY1k40ll/ex6as9xUeybmopyKQGqjRF3Q3EvheGC76bXOFUFnME6RIBDzrr8n4 -0LrWUxpkYFJe8E2z8EcBh6cTzT4ztWUJ64tUS21hx20jupGZHl7sygKvnmXE1CGO -pWWRBvRKIEQjV1hmysRK01nOSuFJqSWB65UuAsIXOL5Z1EOyXZ6uRg== -=RcU/ ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/vertiond.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/vertiond.gpg deleted file mode 100644 index fc12dda3be..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/vertiond.gpg +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -AxY= -=ScTN ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/willcl-ark.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/willcl-ark.gpg deleted file mode 100644 index a7f5aa7f83..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/willcl-ark.gpg +++ /dev/null @@ -1,169 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -1QVW8htYRK8= -=eqa3 ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/willyko.gpg b/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/willyko.gpg deleted file mode 100644 index e66d53a0fe..0000000000 --- a/wallets/bitcoind/build-logic/bitcoin-core-binaries/src/main/resources/willyko.gpg +++ /dev/null @@ -1,84 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -=PVBi ------END PGP PUBLIC KEY BLOCK----- diff --git a/wallets/bitcoind/build-logic/commons/build.gradle.kts b/wallets/bitcoind/build-logic/commons/build.gradle.kts deleted file mode 100644 index 8156a89be2..0000000000 --- a/wallets/bitcoind/build-logic/commons/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - `kotlin-dsl` -} - -repositories { - gradlePluginPortal() -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/commons/src/main/kotlin/bisq.java-conventions.gradle.kts b/wallets/bitcoind/build-logic/commons/src/main/kotlin/bisq.java-conventions.gradle.kts deleted file mode 100644 index c292dceb9f..0000000000 --- a/wallets/bitcoind/build-logic/commons/src/main/kotlin/bisq.java-conventions.gradle.kts +++ /dev/null @@ -1,59 +0,0 @@ -plugins { - `java-library` -} - -repositories { - mavenCentral() - maven { - url = uri("https://jitpack.io") - } -} - -java { - toolchain { - languageVersion.set(JavaLanguageVersion.of(22)) - } -} - -tasks { - test { - useJUnitPlatform() - } -} - -val versionCatalog = extensions.getByType().named("libs") -dependencies { - versionCatalog.findLibrary("google-guava").ifPresent { - implementation(it) - } - - versionCatalog.findLibrary("lombok").ifPresent { - compileOnly(it) - annotationProcessor(it) - testAnnotationProcessor(it) - testCompileOnly(it) - } - - versionCatalog.findLibrary("slf4j-api").ifPresent { - implementation(it) - } - - versionCatalog.findLibrary("logback-core").ifPresent { - implementation(it) - } - versionCatalog.findLibrary("logback-classic").ifPresent { - implementation(it) - } - - versionCatalog.findLibrary("junit-jupiter").ifPresent { - testImplementation(it) - } - - versionCatalog.findLibrary("assertj-core").ifPresent { - testImplementation(it) - } - - versionCatalog.findLibrary("mockito").ifPresent { - testImplementation(it) - } -} diff --git a/wallets/bitcoind/build-logic/commons/src/main/kotlin/bisq.java-integration-tests.gradle.kts b/wallets/bitcoind/build-logic/commons/src/main/kotlin/bisq.java-integration-tests.gradle.kts deleted file mode 100644 index eebeb76194..0000000000 --- a/wallets/bitcoind/build-logic/commons/src/main/kotlin/bisq.java-integration-tests.gradle.kts +++ /dev/null @@ -1,59 +0,0 @@ -plugins { - java -} - -sourceSets { - create("integrationTest") { - compileClasspath += sourceSets.main.get().output - runtimeClasspath += sourceSets.main.get().output - } -} - -val integrationTestImplementation by configurations.getting { - extendsFrom(configurations.implementation.get()) -} - -val integrationTestRuntimeOnly by configurations.getting -configurations["integrationTestRuntimeOnly"].extendsFrom(configurations.runtimeOnly.get()) - -val versionCatalog = extensions.getByType().named("libs") -dependencies { - versionCatalog.findLibrary("lombok").ifPresent { - "integrationTestAnnotationProcessor"(it) - "integrationTestCompileOnly"(it) - } - - versionCatalog.findLibrary("slf4j-api").ifPresent { - "integrationTestImplementation"(it) - } - - versionCatalog.findLibrary("logback-core").ifPresent { - "integrationTestImplementation"(it) - } - versionCatalog.findLibrary("logback-classic").ifPresent { - "integrationTestImplementation"(it) - } - - versionCatalog.findLibrary("junit-jupiter").ifPresent { - "integrationTestImplementation"(it) - } - - versionCatalog.findLibrary("assertj-core").ifPresent { - "integrationTestImplementation"(it) - } -} - -tasks.register("integrationTest") { - description = "Runs integration tests." - group = "verification" - - testClassesDirs = sourceSets["integrationTest"].output.classesDirs - classpath = sourceSets["integrationTest"].runtimeClasspath - shouldRunAfter("test") - - useJUnitPlatform() - - testLogging { - events("passed") - } -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/commons/src/main/kotlin/bisq.java-library.gradle.kts b/wallets/bitcoind/build-logic/commons/src/main/kotlin/bisq.java-library.gradle.kts deleted file mode 100644 index 45435fe2d9..0000000000 --- a/wallets/bitcoind/build-logic/commons/src/main/kotlin/bisq.java-library.gradle.kts +++ /dev/null @@ -1,3 +0,0 @@ -plugins { - id("bisq.java-conventions") -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/build.gradle.kts b/wallets/bitcoind/build-logic/gradle-tasks/build.gradle.kts deleted file mode 100644 index 7209b3b871..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/build.gradle.kts +++ /dev/null @@ -1,12 +0,0 @@ -plugins { - `java-gradle-plugin` - `kotlin-dsl` -} - -repositories { - mavenCentral() -} - -dependencies { - implementation(libs.bouncycastle.pg) -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/common/Architecture.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/common/Architecture.kt deleted file mode 100644 index 2eb5723497..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/common/Architecture.kt +++ /dev/null @@ -1,36 +0,0 @@ -package bisq.gradle.common - -import java.util.* - -enum class Architecture(val architectureName: String) { - X86_64("x86_64"), - ARM_64("arm64"), -} - -fun getArchitecture(): Architecture { - val architectureName = getArchitectureName() - if (isX86_64(architectureName)) { - return Architecture.X86_64 - } else if (isArm64(architectureName)) { - return Architecture.ARM_64 - } - - throw IllegalStateException("Running on unsupported Architecture: $architectureName") -} - -fun isX86_64(archName: String): Boolean { - return is64Bit(archName) && (archName.contains("x86") || archName.contains("amd")) -} - -fun isArm64(archName: String): Boolean { - return is64Bit(archName) && (archName.contains("aarch") || archName.contains("arm")) -} - -fun is64Bit(archName: String): Boolean { - return archName.contains("64") -} - -fun getArchitectureName(): String { - return System.getProperty("os.arch").lowercase(Locale.US) -} - diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/common/OS.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/common/OS.kt deleted file mode 100644 index 70781c81bd..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/common/OS.kt +++ /dev/null @@ -1,38 +0,0 @@ -package bisq.gradle.common - -import java.util.* - -enum class OS(val osName: String) { - LINUX("linux"), - MAC_OS("macos"), - WINDOWS("win") -} - -fun getOS(): OS { - val osName = getOSName() - if (isLinux(osName)) { - return OS.LINUX - } else if (isMacOs(osName)) { - return OS.MAC_OS - } else if (isWindows(osName)) { - return OS.WINDOWS - } - - throw IllegalStateException("Running on unsupported OS: $osName") -} - -private fun isLinux(osName: String): Boolean { - return osName.contains("linux") -} - -private fun isMacOs(osName: String): Boolean { - return osName.contains("mac") || osName.contains("darwin") -} - -private fun isWindows(osName: String): Boolean { - return osName.contains("win") -} - -fun getOSName(): String { - return System.getProperty("os.name").lowercase(Locale.US) -} diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/common/Platform.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/common/Platform.kt deleted file mode 100644 index 6cc4d6ce4b..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/common/Platform.kt +++ /dev/null @@ -1,44 +0,0 @@ -package bisq.gradle.common - -import bisq.gradle.common.Architecture.ARM_64 -import bisq.gradle.common.Architecture.X86_64 -import bisq.gradle.common.OS.* -import bisq.gradle.common.Platform.* - -enum class Platform(val platformName: String) { - LINUX_X86_64("linux_x86_64"), - LINUX_ARM_64("linux_arm64"), - - MACOS_X86_64("macos_x86_64"), - MACOS_ARM_64("macos_arm64"), - - WIN_X86_64("win_x86_64"), - WIN_ARM_64("win_arm64") -} - -fun getPlatform(): Platform { - val os = getOS() - val architecture = getArchitecture() - when (os) { - LINUX -> { - return when (architecture) { - X86_64 -> LINUX_X86_64 - ARM_64 -> LINUX_ARM_64 - } - } - - MAC_OS -> { - return when (architecture) { - X86_64 -> MACOS_X86_64 - ARM_64 -> MACOS_ARM_64 - } - } - - WINDOWS -> { - return when (architecture) { - X86_64 -> WIN_X86_64 - ARM_64 -> WIN_ARM_64 - } - } - } -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/OS.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/OS.kt deleted file mode 100644 index aa8fdc8e76..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/OS.kt +++ /dev/null @@ -1,32 +0,0 @@ -package bisq.gradle.tasks - -import java.util.* - -enum class OS { - LINUX, MAC_OS, WINDOWS -} - -fun getOS(): OS { - val osName = System.getProperty("os.name").toLowerCase(Locale.US) - if (isLinux(osName)) { - return OS.LINUX - } else if (isMacOs(osName)) { - return OS.MAC_OS - } else if (isWindows(osName)) { - return OS.WINDOWS - } - - throw IllegalStateException("Running on unsupported OS: $osName") -} - -private fun isLinux(osName: String): Boolean { - return osName.contains("linux") -} - -private fun isMacOs(osName: String): Boolean { - return osName.contains("mac") || osName.contains("darwin") -} - -private fun isWindows(osName: String): Boolean { - return osName.contains("win") -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/PerPlatformUrlProvider.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/PerPlatformUrlProvider.kt deleted file mode 100644 index 97068c3b0d..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/PerPlatformUrlProvider.kt +++ /dev/null @@ -1,27 +0,0 @@ -package bisq.gradle.tasks - -import bisq.gradle.common.Platform.* -import bisq.gradle.common.getPlatform - -interface PerPlatformUrlProvider { - val urlPrefix: String - - val LINUX_X86_64_URL: String - val MACOS_X86_64_URL: String - val MACOS_ARM_64_URL: String - val WIN_X86_64_URL: String - - val url: String - get() = urlPrefix + getUrlSuffix() - - private fun getUrlSuffix() = - when (getPlatform()) { - LINUX_X86_64 -> LINUX_X86_64_URL - LINUX_ARM_64 -> LINUX_X86_64_URL // No ARM_64 provided - MACOS_X86_64 -> MACOS_X86_64_URL - MACOS_ARM_64 -> MACOS_ARM_64_URL - WIN_X86_64 -> WIN_X86_64_URL - WIN_ARM_64 -> WIN_X86_64_URL // No ARM_64 provided - } - -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/PgpFingerprint.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/PgpFingerprint.kt deleted file mode 100644 index 3c08588cf6..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/PgpFingerprint.kt +++ /dev/null @@ -1,7 +0,0 @@ -package bisq.gradle.tasks - -object PgpFingerprint { - fun normalize(fingerprint: String): String = - fingerprint.filterNot { it.isWhitespace() } // Remove all spaces - .toLowerCase() -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/VersionUtil.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/VersionUtil.kt deleted file mode 100644 index cf1a959fa2..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/VersionUtil.kt +++ /dev/null @@ -1,9 +0,0 @@ -package bisq.gradle.tasks - -import org.gradle.api.Project -import java.io.File - -object VersionUtil { - fun getVersionFromFile(project: Project): String = - File(project.layout.projectDirectory.toString() + "/version.txt").readText() -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/download/DownloadTask.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/download/DownloadTask.kt deleted file mode 100644 index 99942e52c6..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/download/DownloadTask.kt +++ /dev/null @@ -1,41 +0,0 @@ -package bisq.gradle.tasks.download - -import org.gradle.api.DefaultTask -import org.gradle.api.file.RegularFileProperty -import org.gradle.api.provider.Property -import org.gradle.api.tasks.CacheableTask -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.TaskAction -import java.io.FileOutputStream -import java.net.URI -import java.nio.channels.Channels - -@CacheableTask -abstract class DownloadTask : DefaultTask() { - - @get:Input - abstract val downloadUrl: Property - - @get:OutputFile - abstract val outputFile: RegularFileProperty - - @TaskAction - fun download() { - downloadFile() - } - - private fun downloadFile() { - val url = URI.create(downloadUrl.get()).toURL(); - url.openStream().use { inputStream -> - Channels.newChannel(inputStream).use { readableByteChannel -> - println("Downloading: $url") - - FileOutputStream(outputFile.get().asFile).use { fileOutputStream -> - fileOutputStream.channel - .transferFrom(readableByteChannel, 0, Long.MAX_VALUE) - } - } - } - } -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/download/DownloadTaskFactory.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/download/DownloadTaskFactory.kt deleted file mode 100644 index 3967421e4d..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/download/DownloadTaskFactory.kt +++ /dev/null @@ -1,24 +0,0 @@ -package bisq.gradle.tasks.download - -import org.gradle.api.Project -import org.gradle.api.file.RegularFile -import org.gradle.api.provider.Provider -import org.gradle.api.tasks.TaskProvider -import org.gradle.kotlin.dsl.register - -class DownloadTaskFactory( - private val project: Project, private val downloadDirectoryPath: String -) { - fun registerDownloadTask(taskName: String, url: Provider): TaskProvider { - val outputFileProvider: Provider = url.flatMap { - // url.file: - // https://example.org/1.2.3/binary.exe -> 1.2.3/binary.exe - val fileName = it.split("/").last() - project.layout.buildDirectory.file("$downloadDirectoryPath/$fileName") - } - return project.tasks.register(taskName) { - downloadUrl.set(url) - outputFile.set(outputFileProvider) - } - } -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/download/SignedBinaryDownloader.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/download/SignedBinaryDownloader.kt deleted file mode 100644 index fe602aa551..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/download/SignedBinaryDownloader.kt +++ /dev/null @@ -1,44 +0,0 @@ -package bisq.gradle.tasks.download - -import bisq.gradle.tasks.PerPlatformUrlProvider -import bisq.gradle.tasks.signature.SignatureVerificationTask -import org.gradle.api.Project -import org.gradle.api.provider.Property -import org.gradle.api.provider.Provider -import org.gradle.api.tasks.TaskProvider -import org.gradle.kotlin.dsl.register -import java.net.URL - -class SignedBinaryDownloader( - private val project: Project, - private val binaryName: String, - private val version: Property, - - private val perPlatformUrlProvider: (String) -> PerPlatformUrlProvider, - private val downloadDirectory: String, - - private val pgpFingerprintToKeyUrlMap: Map -) { - lateinit var verifySignatureTask: TaskProvider - private val downloadTaskFactory = DownloadTaskFactory(project, downloadDirectory) - - fun registerTasks() { - val binaryDownloadUrl: Provider = version.map { perPlatformUrlProvider(it).url } - val binaryDownloadTask = - downloadTaskFactory.registerDownloadTask("download${binaryName}Binary", binaryDownloadUrl) - - val signatureDownloadUrl: Provider = binaryDownloadUrl.map { "$it.asc" } - val signatureDownloadTask = - downloadTaskFactory.registerDownloadTask("download${binaryName}Signature", signatureDownloadUrl) - - verifySignatureTask = project.tasks.register("verify${binaryName}Binary") { - dependsOn(binaryDownloadTask) - - fileToVerify.set(binaryDownloadTask.flatMap { it.outputFile }) - detachedSignatureFile.set(signatureDownloadTask.flatMap { it.outputFile }) - pgpFingerprintToKeyUrl.set(pgpFingerprintToKeyUrlMap) - - resultFile.set(project.layout.buildDirectory.file("${downloadDirectory}/sha256.result")) - } - } -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/signature/PpgPublicKeyParser.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/signature/PpgPublicKeyParser.kt deleted file mode 100644 index 116ecadaf0..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/signature/PpgPublicKeyParser.kt +++ /dev/null @@ -1,104 +0,0 @@ -package bisq.gradle.tasks.signature - -import org.bouncycastle.openpgp.PGPException -import org.bouncycastle.openpgp.PGPPublicKey -import org.bouncycastle.openpgp.PGPPublicKeyRing -import org.bouncycastle.openpgp.PGPUtil -import org.bouncycastle.openpgp.jcajce.JcaPGPPublicKeyRingCollection -import org.bouncycastle.openpgp.operator.jcajce.JcaPGPContentVerifierBuilderProvider -import org.bouncycastle.util.encoders.Hex -import org.gradle.api.GradleException -import java.io.ByteArrayInputStream -import java.net.URL -import java.security.InvalidKeyException - -class PpgPublicKeyParser( - private val primaryKeyFingerprint: String, - private val keyUrl: URL -) { - - private var masterKey: PGPPublicKey? = null - private val subKeys: MutableList = ArrayList() - - val keyById: Map - get() { - val keyByIdMap = HashMap() - keyByIdMap[masterKey!!.keyID] = masterKey!! - subKeys.forEach { key -> keyByIdMap[key.keyID] = key } - return keyByIdMap - } - - fun parse() { - val publicKey: ByteArray = keyUrl.readBytes() - val byteArrayInputStream = ByteArrayInputStream(publicKey) - PGPUtil.getDecoderStream(byteArrayInputStream) - .use { decoderInputStream -> - val publicKeyRingCollection = JcaPGPPublicKeyRingCollection(decoderInputStream) - parseMasterAndSubKeys(publicKeyRingCollection) - - checkNotNull(masterKey) { "Couldn't find master key." } - verifyMasterKeyFingerprint() - - if (subKeys.isNotEmpty()) { - verifySubKeySignatures() - } - } - } - - private fun parseMasterAndSubKeys(publicKeyRingCollection: JcaPGPPublicKeyRingCollection) { - val rIt: Iterator = publicKeyRingCollection.keyRings - while (rIt.hasNext()) { - val kRing = rIt.next() - val kIt = kRing.publicKeys - while (kIt.hasNext()) { - val k = kIt.next() - - if (k.isMasterKey) { - if (masterKey == null) { - masterKey = k - } else { - throw GradleException("Found multiple find master keys.") - } - - } else { - subKeys.add(k) - } - } - } - } - - private fun verifyMasterKeyFingerprint() { - val fingerprint = Hex.toHexString(masterKey!!.fingerprint) - if (fingerprint != primaryKeyFingerprint) { - throw GradleException("$keyUrl has invalid fingerprint.") - } - } - - private fun verifySubKeySignatures() { - subKeys.forEach { subKey -> - var hasValidSignature = false - subKey.keySignatures.forEach { signature -> - try { - signature.init( - JcaPGPContentVerifierBuilderProvider().setProvider("BC"), - masterKey!! - ) - val isSubKeySignedByMasterKey = signature.verifyCertification(masterKey!!, subKey) - - if (isSubKeySignedByMasterKey) { - hasValidSignature = true - } - } catch (e: PGPException) { - if (e.underlyingException is InvalidKeyException) { - println("Warning: Can't verify subkey `${subKey.keyID}` with masterkey `${masterKey!!.keyID}`.") - hasValidSignature = true - } - } - } - - if (!hasValidSignature) { - throw GradleException("Subkey `$subKey` is not signed by masterkey `$masterKey`") - } - } - } -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/signature/SignatureVerificationTask.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/signature/SignatureVerificationTask.kt deleted file mode 100644 index 570e118dd6..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/signature/SignatureVerificationTask.kt +++ /dev/null @@ -1,46 +0,0 @@ -package bisq.gradle.tasks.signature - -import org.gradle.api.DefaultTask -import org.gradle.api.GradleException -import org.gradle.api.file.RegularFile -import org.gradle.api.file.RegularFileProperty -import org.gradle.api.provider.MapProperty -import org.gradle.api.provider.Property -import org.gradle.api.provider.Provider -import org.gradle.api.tasks.Input -import org.gradle.api.tasks.InputFile -import org.gradle.api.tasks.OutputFile -import org.gradle.api.tasks.TaskAction -import java.net.URL - -abstract class SignatureVerificationTask : DefaultTask() { - - @get:InputFile - abstract val fileToVerify: RegularFileProperty - - @get:InputFile - abstract val detachedSignatureFile: RegularFileProperty - - @get:Input - abstract val pgpFingerprintToKeyUrl: MapProperty - - @get:OutputFile - abstract val resultFile: RegularFileProperty - - @TaskAction - fun verify() { - val signatureVerifier = SignatureVerifier(pgpFingerprintToKeyUrl.get()) - val isSignatureValid = signatureVerifier.verifySignature( - signatureFile = detachedSignatureFile.get().asFile, - fileToVerify = fileToVerify.get().asFile - ) - - resultFile.get().asFile.writeText("$isSignatureValid") - - if (!isSignatureValid) { - throw GradleException( - "Signature verification failed for ${fileToVerify.get().asFile.absolutePath}." - ) - } - } -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/signature/SignatureVerifier.kt b/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/signature/SignatureVerifier.kt deleted file mode 100644 index 7dea031019..0000000000 --- a/wallets/bitcoind/build-logic/gradle-tasks/src/main/kotlin/bisq/gradle/tasks/signature/SignatureVerifier.kt +++ /dev/null @@ -1,84 +0,0 @@ -package bisq.gradle.tasks.signature - -import org.bouncycastle.bcpg.ArmoredInputStream -import org.bouncycastle.jce.provider.BouncyCastleProvider -import org.bouncycastle.openpgp.PGPPublicKey -import org.bouncycastle.openpgp.PGPSignature -import org.bouncycastle.openpgp.PGPSignatureList -import org.bouncycastle.openpgp.jcajce.JcaPGPObjectFactory -import org.bouncycastle.openpgp.operator.jcajce.JcaPGPContentVerifierBuilderProvider -import java.io.ByteArrayInputStream -import java.io.File -import java.net.URL -import java.security.Security - -class SignatureVerifier( - private val pgpFingerprintToKeyUrl: Map -) { - - fun verifySignature( - fileToVerify: File, - signatureFile: File, - ): Boolean { - Security.addProvider(BouncyCastleProvider()) - - val signatureFileInBytes = readSignatureFromFile(signatureFile) - val pgpObjectFactory = JcaPGPObjectFactory(signatureFileInBytes) - val signatureList: PGPSignatureList = pgpObjectFactory.nextObject() as PGPSignatureList - - val signatureVerificationResult = mutableListOf() - pgpFingerprintToKeyUrl.forEach { (fingerprint, keyUrl) -> - val ppgPublicKeyParser = PpgPublicKeyParser(fingerprint, keyUrl) - ppgPublicKeyParser.parse() - - val isSignedByAnyKey = verifyDetachedSignature( - potentialSigningKeys = ppgPublicKeyParser.keyById, - signatureList = signatureList, - data = fileToVerify.readBytes() - ) - - signatureVerificationResult.add(isSignedByAnyKey) - } - - val numberOfSuccessfulVerifications = signatureVerificationResult.filter { isSuccess -> isSuccess } - .count() - return numberOfSuccessfulVerifications == signatureList.size() - } - - private fun readSignatureFromFile(signatureFile: File): ByteArray { - val signatureByteArray = signatureFile.readBytes() - val signatureInputStream = ByteArrayInputStream(signatureByteArray) - val armoredSignatureInputStream = ArmoredInputStream(signatureInputStream) - return armoredSignatureInputStream.readBytes() - } - - private fun verifyDetachedSignature( - potentialSigningKeys: Map, - signatureList: PGPSignatureList, - data: ByteArray - ): Boolean { - var pgpSignature: PGPSignature? = null - var signingKey: PGPPublicKey? = null - - for (s in signatureList) { - signingKey = potentialSigningKeys[s.keyID] - if (signingKey != null) { - pgpSignature = s - break - } - } - - if (signingKey == null) { - return false - } - - checkNotNull(pgpSignature) { "signature for key not found" } - - pgpSignature.init( - JcaPGPContentVerifierBuilderProvider().setProvider("BC"), - signingKey - ) - pgpSignature.update(data) - return pgpSignature.verify() - } -} \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/gradle.properties b/wallets/bitcoind/build-logic/gradle.properties deleted file mode 100644 index 5f1ed7bbe0..0000000000 --- a/wallets/bitcoind/build-logic/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -org.gradle.caching=true \ No newline at end of file diff --git a/wallets/bitcoind/build-logic/settings.gradle.kts b/wallets/bitcoind/build-logic/settings.gradle.kts deleted file mode 100644 index 0677609843..0000000000 --- a/wallets/bitcoind/build-logic/settings.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -dependencyResolutionManagement { - versionCatalogs { - create("libs") { - from(files("../gradle/libs.versions.toml")) - } - } -} - -include("commons") -include("bitcoin-core-binaries") -include("gradle-tasks") - -rootProject.name = "bitcoind-build-logic" \ No newline at end of file diff --git a/wallets/bitcoind/build.gradle.kts b/wallets/bitcoind/build.gradle.kts deleted file mode 100644 index 8e31e0f340..0000000000 --- a/wallets/bitcoind/build.gradle.kts +++ /dev/null @@ -1,4 +0,0 @@ -extensions.findByName("buildScan")?.withGroovyBuilder { - setProperty("termsOfServiceUrl", "https://gradle.com/terms-of-service") - setProperty("termsOfServiceAgree", "yes") -} \ No newline at end of file diff --git a/wallets/bitcoind/core/build.gradle.kts b/wallets/bitcoind/core/build.gradle.kts deleted file mode 100644 index bf4869f4a8..0000000000 --- a/wallets/bitcoind/core/build.gradle.kts +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - id("bisq.java-library") -} - -dependencies { - implementation(project(":json-rpc")) -} \ No newline at end of file diff --git a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/BitcoinWalletSelection.java b/wallets/bitcoind/core/src/main/java/bisq/wallets/core/BitcoinWalletSelection.java deleted file mode 100644 index 071b76f58a..0000000000 --- a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/BitcoinWalletSelection.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.core; - -public enum BitcoinWalletSelection { - BITCOIND, - ELECTRUM, - NONE -} \ No newline at end of file diff --git a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/Wallet.java b/wallets/bitcoind/core/src/main/java/bisq/wallets/core/Wallet.java deleted file mode 100644 index cbd602e052..0000000000 --- a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/Wallet.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.core; - -import bisq.wallets.core.model.Transaction; -import bisq.wallets.core.model.TransactionInfo; -import bisq.wallets.core.model.Utxo; - -import java.util.List; -import java.util.Optional; - -public interface Wallet { - void initialize(Optional walletPassphrase); - - void shutdown(); - - double getBalance(); - - String getUnusedAddress(); - - List getWalletAddresses(); - - List listTransactions(); - - List getTransactions(); - - List listUnspent(); - - String sendToAddress(Optional passphrase, String address, double amount); - - String signMessage(Optional passphrase, String address, String message); -} diff --git a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/exceptions/WalletNotInitializedException.java b/wallets/bitcoind/core/src/main/java/bisq/wallets/core/exceptions/WalletNotInitializedException.java deleted file mode 100644 index b3cd3d00ce..0000000000 --- a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/exceptions/WalletNotInitializedException.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.core.exceptions; - -public class WalletNotInitializedException extends RuntimeException { - public WalletNotInitializedException(String message) { - super(message); - } -} diff --git a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/AddressType.java b/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/AddressType.java deleted file mode 100644 index e8fb48cfb9..0000000000 --- a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/AddressType.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.core.model; - -import lombok.Getter; - -public enum AddressType { - LEGACY("legacy"), - P2SH_SEGWIT("p2sh-segwit"), - BECH32("bech32"); - - @Getter - private final String name; - - AddressType(String name) { - this.name = name; - } -} diff --git a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/Transaction.java b/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/Transaction.java deleted file mode 100644 index 6f19a2c92b..0000000000 --- a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/Transaction.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.core.model; - -import lombok.EqualsAndHashCode; -import lombok.Getter; - -import java.util.Date; -import java.util.List; -import java.util.Optional; - -@Getter -@EqualsAndHashCode -public class Transaction { - private final String txId; - private final List inputs; - private final List outputs; - private final int lockTime; - private final int height; - private final Optional date; - private final int confirmations; - private final long amount; - private final boolean incoming; - - public Transaction(String txId, - List inputs, - List outputs, - int lockTime, - int height, - Optional date, - int confirmations, - long amount, - boolean incoming) { - - this.txId = txId; - this.inputs = inputs; - this.outputs = outputs; - this.lockTime = lockTime; - this.height = height; - this.date = date; - this.confirmations = confirmations; - this.amount = amount; - this.incoming = incoming; - } -} \ No newline at end of file diff --git a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/TransactionInfo.java b/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/TransactionInfo.java deleted file mode 100644 index 7698924a60..0000000000 --- a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/TransactionInfo.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.core.model; - -import java.util.Date; -import java.util.Optional; - -public interface TransactionInfo { - String getTxId(); - - long getAmount(); - - int getConfirmations(); - - Optional getDate(); -} diff --git a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/TransactionInput.java b/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/TransactionInput.java deleted file mode 100644 index c2c3635eb2..0000000000 --- a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/TransactionInput.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.core.model; - -import lombok.EqualsAndHashCode; -import lombok.Getter; - -@Getter -@EqualsAndHashCode -public class TransactionInput { - private final String prevOutTxId; - private final int prevOutIndex; - private final long sequence; - private final String scriptSig; - private final String witness; - - public TransactionInput(String prevOutTxId, int prevOutIndex, long sequence, String scriptSig, String witness) { - this.prevOutTxId = prevOutTxId; - this.prevOutIndex = prevOutIndex; - this.sequence = sequence; - this.scriptSig = scriptSig; - this.witness = witness; - } -} \ No newline at end of file diff --git a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/TransactionOutput.java b/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/TransactionOutput.java deleted file mode 100644 index 85fdc0ce98..0000000000 --- a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/TransactionOutput.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.core.model; - -import lombok.EqualsAndHashCode; -import lombok.Getter; - -@Getter -@EqualsAndHashCode -public class TransactionOutput { - private final long value; - private final String address; - private final String scriptPubKey; - - public TransactionOutput(long value, String address, String scriptPubKey) { - this.value = value; - this.address = address; - this.scriptPubKey = scriptPubKey; - } -} \ No newline at end of file diff --git a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/Utxo.java b/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/Utxo.java deleted file mode 100644 index 04379de229..0000000000 --- a/wallets/bitcoind/core/src/main/java/bisq/wallets/core/model/Utxo.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.core.model; - -public interface Utxo { - String getTxId(); - - String getAddress(); - - double getAmount(); -} diff --git a/wallets/bitcoind/gradle.properties b/wallets/bitcoind/gradle.properties deleted file mode 100644 index 5f1ed7bbe0..0000000000 --- a/wallets/bitcoind/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -org.gradle.caching=true \ No newline at end of file diff --git a/wallets/bitcoind/gradle/libs.versions.toml b/wallets/bitcoind/gradle/libs.versions.toml deleted file mode 100644 index 752099c50f..0000000000 --- a/wallets/bitcoind/gradle/libs.versions.toml +++ /dev/null @@ -1,26 +0,0 @@ -[versions] -assertj-core-lib = { strictly = '3.22.0' } -bouncycastle-lib = { strictly = '1.69' } # Oldest version without known CVEs -google-guava-lib = { strictly = '31.1-jre' } -jeromq-lib = { strictly = '0.5.2' } -junit-jupiter-lib = { strictly = '5.8.2' } -logback-lib = { strictly = '1.2.11' } -lombok-lib = { strictly = '1.18.34' } -mockito-lib = { strictly = '4.11.0' } -slf4j-lib = { strictly = '1.7.36' } -square-moshi-lib = { strictly = '1.14.0' } -square-okhttp-libs = { strictly = '4.10.0' } - -[libraries] -assertj-core = { module = 'org.assertj:assertj-core', version.ref = 'assertj-core-lib' } -bouncycastle-pg = { module = 'org.bouncycastle:bcpg-jdk15on', version.ref = 'bouncycastle-lib' } -google-guava = { module = 'com.google.guava:guava', version.ref = 'google-guava-lib' } -jeromq = { module = 'org.zeromq:jeromq', version.ref = 'jeromq-lib' } -junit-jupiter = { module = 'org.junit.jupiter:junit-jupiter', version.ref = 'junit-jupiter-lib' } -logback-classic = { module = 'ch.qos.logback:logback-classic', version.ref = 'logback-lib' } -logback-core = { module = 'ch.qos.logback:logback-core', version.ref = 'logback-lib' } -lombok = { module = 'org.projectlombok:lombok', version.ref = 'lombok-lib' } -mockito = { module = 'org.mockito:mockito-core', version.ref = 'mockito-lib' } -slf4j-api = { module = 'org.slf4j:slf4j-api', version.ref = 'slf4j-lib' } -square-moshi = { module = 'com.squareup.moshi:moshi', version.ref = 'square-moshi-lib' } -square-okhttp-bom = { module = 'com.squareup.okhttp3:okhttp-bom', version.ref = 'square-okhttp-libs' } \ No newline at end of file diff --git a/wallets/bitcoind/json-rpc/build.gradle.kts b/wallets/bitcoind/json-rpc/build.gradle.kts deleted file mode 100644 index 56d79488b7..0000000000 --- a/wallets/bitcoind/json-rpc/build.gradle.kts +++ /dev/null @@ -1,16 +0,0 @@ -plugins { - id("bisq.java-library") -} - -dependencies { - api(platform(libs.square.okhttp.bom)) - implementation(platform(libs.square.okhttp.bom)) - - api("com.squareup.okhttp3:okhttp") - api(libs.square.moshi) - - implementation("com.squareup.okhttp3:logging-interceptor") - - testImplementation(libs.assertj.core) - testImplementation("com.squareup.okhttp3:mockwebserver") -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/DaemonRpcCall.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/DaemonRpcCall.java deleted file mode 100644 index 4fb6d38a5c..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/DaemonRpcCall.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -public abstract class DaemonRpcCall> extends RpcCall { - public DaemonRpcCall(T request) { - super(request); - } -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcCall.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcCall.java deleted file mode 100644 index 9eeb5029a9..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcCall.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import java.util.UUID; - -@SuppressWarnings("ALL") -public class JsonRpcCall { - private final String jsonrpc = "2.0"; - private final String id; - private final String method; - private final Object params; - - public JsonRpcCall(String method, Object params) { - this.id = UUID.randomUUID().toString(); - this.method = method; - this.params = params; - } -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcClient.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcClient.java deleted file mode 100644 index d0bae47e59..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcClient.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import bisq.wallets.json_rpc.exceptions.InvalidRpcCredentialsException; -import com.squareup.moshi.JsonAdapter; -import com.squareup.moshi.Moshi; -import lombok.extern.slf4j.Slf4j; -import okhttp3.*; -import okhttp3.logging.HttpLoggingInterceptor; - -import java.io.IOException; -import java.util.Objects; -import java.util.concurrent.TimeUnit; - -@Slf4j -public class JsonRpcClient { - - public static final String AUTHORIZATION_HEADER_NAME = "Authorization"; - private static final int HTTP_CODE_UNAUTHORIZED = 401; - - private final JsonRpcEndpointSpec rpcEndpointSpec; - - private final OkHttpClient client; - private final MediaType jsonMediaType = MediaType.parse("application/json"); - - private final Moshi moshi = new Moshi.Builder().build(); - private final JsonAdapter jsonRpcCallJsonAdapter = moshi.adapter(JsonRpcCall.class); - - public JsonRpcClient(JsonRpcEndpointSpec rpcEndpointSpec) { - this.rpcEndpointSpec = rpcEndpointSpec; - - var loggingInterceptor = new HttpLoggingInterceptor(log::info); - loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); - loggingInterceptor.redactHeader(AUTHORIZATION_HEADER_NAME); - - this.client = new OkHttpClient.Builder() - .addInterceptor(loggingInterceptor) - .connectTimeout(1, TimeUnit.MINUTES) - .writeTimeout(1, TimeUnit.MINUTES) - .readTimeout(1, TimeUnit.MINUTES) - .callTimeout(1, TimeUnit.MINUTES) - .build(); - } - - public > R call(RpcCall rpcCall) { - JsonRpcCall jsonRpcCall = new JsonRpcCall(rpcCall.getRpcMethodName(), rpcCall.request); - String jsonRequest = jsonRpcCallJsonAdapter.toJson(jsonRpcCall); - Request request = buildRequest(jsonRequest); - - try (Response response = client.newCall(request).execute()) { - if (response.code() == HTTP_CODE_UNAUTHORIZED) { - throw new InvalidRpcCredentialsException(); - } - - ResponseBody responseBody = response.body(); - Objects.requireNonNull(responseBody); - - JsonAdapter jsonAdapter = rpcCall.getJsonAdapter(); - R parsedJsonResponse = jsonAdapter.fromJson(responseBody.source()); - - if (!rpcCall.isResponseValid(parsedJsonResponse)) { - String message = "RPC Call to '" + rpcCall.getRpcMethodName() + "' failed. "; - if (parsedJsonResponse != null && parsedJsonResponse.getError() != null) { - message += parsedJsonResponse.getError().toString(); - } - throw new RpcCallFailureException(message); - } - - return parsedJsonResponse; - - } catch (IOException e) { - throw new RpcCallFailureException( - "RPC Call to '" + rpcCall.getRpcMethodName() + "' failed. ", - e - ); - } - } - - private Request buildRequest(String body) { - return new Request.Builder() - .url(rpcEndpointSpec.getUrl()) - .addHeader(AUTHORIZATION_HEADER_NAME, rpcEndpointSpec.getAuthHeaderValue()) - .post(RequestBody.create(body, jsonMediaType)) - .build(); - } -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcEndpointSpec.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcEndpointSpec.java deleted file mode 100644 index 42fb0b6e45..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcEndpointSpec.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import lombok.Getter; -import okhttp3.Credentials; -import okhttp3.HttpUrl; - -@Getter -public class JsonRpcEndpointSpec { - private final HttpUrl url; - private final String username; - private final String password; - - public JsonRpcEndpointSpec(String url, String username, String password) { - this(HttpUrl.parse(url), username, password); - } - - public JsonRpcEndpointSpec(HttpUrl url, String username, String password) { - this.url = url; - this.username = username; - this.password = password; - } - - public String getAuthHeaderValue() { - return Credentials.basic(username, password); - } -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcError.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcError.java deleted file mode 100644 index 9e5d75b77b..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcError.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import lombok.Getter; -import lombok.ToString; - -@Getter -@ToString -public class JsonRpcError { - private int code; - private String message; -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcResponse.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcResponse.java deleted file mode 100644 index 0e1cba5093..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/JsonRpcResponse.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -public abstract class JsonRpcResponse { - private String jsonrpc; - private String id; - private T result; - private JsonRpcError error; -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcCall.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcCall.java deleted file mode 100644 index 030bd44a9c..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcCall.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import com.squareup.moshi.JsonAdapter; -import com.squareup.moshi.Moshi; -import lombok.Getter; - -public abstract class RpcCall> { - - @Getter - protected final T request; - - protected final Moshi moshi = new Moshi.Builder().build(); - - public RpcCall(T request) { - this.request = request; - } - - public abstract String getRpcMethodName(); - - public abstract boolean isResponseValid(R response); - - public abstract Class getRpcResponseClass(); - - public JsonAdapter getJsonAdapter() { - return moshi.adapter(getRpcResponseClass()); - } -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcCallFailureException.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcCallFailureException.java deleted file mode 100644 index f08c6bd975..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcCallFailureException.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -public class RpcCallFailureException extends RuntimeException { - public RpcCallFailureException(String message) { - super(message); - } - - public RpcCallFailureException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcClientFactory.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcClientFactory.java deleted file mode 100644 index 7a24a3a817..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcClientFactory.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import java.util.Optional; - -public class RpcClientFactory { - - public static JsonRpcClient createDaemonRpcClient(RpcConfig rpcConfig) { - return createJsonRpcClientWithUrlSuffix(rpcConfig, Optional.empty()); - } - - public static JsonRpcClient createWalletRpcClient(RpcConfig rpcConfig, String walletName) { - var urlSuffix = "/wallet/" + walletName; - return createJsonRpcClientWithUrlSuffix(rpcConfig, Optional.of(urlSuffix)); - } - - private static JsonRpcClient createJsonRpcClientWithUrlSuffix(RpcConfig rpcConfig, Optional urlSuffix) { - String url = createRpcUrlWithWithSuffix(rpcConfig, urlSuffix); - JsonRpcEndpointSpec endpointSpec = new JsonRpcEndpointSpec(url, rpcConfig.getUser(), rpcConfig.getPassword()); - return new JsonRpcClient(endpointSpec); - } - - private static String createRpcUrlWithWithSuffix(RpcConfig rpcConfig, Optional urlSuffix) { - String hostname = rpcConfig.getHostname(); - int port = rpcConfig.getPort(); - @SuppressWarnings("HttpUrlsUsage") - var url = "http://" + hostname + ":" + port; - if (urlSuffix.isPresent()) { - url += urlSuffix.get(); - } - return url; - } -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcConfig.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcConfig.java deleted file mode 100644 index 32c349509b..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/RpcConfig.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import lombok.Builder; -import lombok.Getter; - -@Builder -@Getter -public final class RpcConfig { - private String hostname; - private int port; - private String user; - private String password; -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/VoidJsonRpcResponse.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/VoidJsonRpcResponse.java deleted file mode 100644 index 00cb2a4814..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/VoidJsonRpcResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -public class VoidJsonRpcResponse extends JsonRpcResponse { -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/exceptions/InvalidRpcCredentialsException.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/exceptions/InvalidRpcCredentialsException.java deleted file mode 100644 index 49c90a92a8..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/exceptions/InvalidRpcCredentialsException.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc.exceptions; - -public class InvalidRpcCredentialsException extends RuntimeException { - public InvalidRpcCredentialsException() { - } -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/JsonRpcBooleanResponse.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/JsonRpcBooleanResponse.java deleted file mode 100644 index ef7d4dea37..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/JsonRpcBooleanResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc.reponses; - -import bisq.wallets.json_rpc.JsonRpcResponse; - -public class JsonRpcBooleanResponse extends JsonRpcResponse { -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/JsonRpcStringListResponse.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/JsonRpcStringListResponse.java deleted file mode 100644 index 65a3b0314f..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/JsonRpcStringListResponse.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc.reponses; - -import bisq.wallets.json_rpc.JsonRpcResponse; - -import java.util.List; - -public class JsonRpcStringListResponse extends JsonRpcResponse> { -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/JsonRpcStringResponse.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/JsonRpcStringResponse.java deleted file mode 100644 index 235b544535..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/JsonRpcStringResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc.reponses; - -import bisq.wallets.json_rpc.JsonRpcResponse; - -public class JsonRpcStringResponse extends JsonRpcResponse { -} diff --git a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/VoidJsonRpcResponse.java b/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/VoidJsonRpcResponse.java deleted file mode 100644 index 984e35db08..0000000000 --- a/wallets/bitcoind/json-rpc/src/main/java/bisq/wallets/json_rpc/reponses/VoidJsonRpcResponse.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc.reponses; - -import bisq.wallets.json_rpc.JsonRpcResponse; - -public class VoidJsonRpcResponse extends JsonRpcResponse { -} diff --git a/wallets/bitcoind/json-rpc/src/test/java/bisq/wallets/json_rpc/DummyGetBlockChainInfoRpcCall.java b/wallets/bitcoind/json-rpc/src/test/java/bisq/wallets/json_rpc/DummyGetBlockChainInfoRpcCall.java deleted file mode 100644 index df1a2ee911..0000000000 --- a/wallets/bitcoind/json-rpc/src/test/java/bisq/wallets/json_rpc/DummyGetBlockChainInfoRpcCall.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import java.util.HashMap; -import java.util.Map; - -public class DummyGetBlockChainInfoRpcCall extends RpcCall, DummyJsonRpcResponse> { - public DummyGetBlockChainInfoRpcCall() { - super(new HashMap<>()); - } - - @Override - public String getRpcMethodName() { - return "getblockchaininfo"; - } - - @Override - public boolean isResponseValid(DummyJsonRpcResponse response) { - return true; - } - - @Override - public Class getRpcResponseClass() { - return DummyJsonRpcResponse.class; - } -} diff --git a/wallets/bitcoind/json-rpc/src/test/java/bisq/wallets/json_rpc/DummyJsonRpcResponse.java b/wallets/bitcoind/json-rpc/src/test/java/bisq/wallets/json_rpc/DummyJsonRpcResponse.java deleted file mode 100644 index 39eb5df4b1..0000000000 --- a/wallets/bitcoind/json-rpc/src/test/java/bisq/wallets/json_rpc/DummyJsonRpcResponse.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -public class DummyJsonRpcResponse extends JsonRpcResponse { - public static class Result { - String chain; - } -} diff --git a/wallets/bitcoind/json-rpc/src/test/java/bisq/wallets/json_rpc/JsonRpcClientTest.java b/wallets/bitcoind/json-rpc/src/test/java/bisq/wallets/json_rpc/JsonRpcClientTest.java deleted file mode 100644 index 1c045afc9c..0000000000 --- a/wallets/bitcoind/json-rpc/src/test/java/bisq/wallets/json_rpc/JsonRpcClientTest.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.json_rpc; - -import okhttp3.HttpUrl; -import okhttp3.mockwebserver.MockResponse; -import okhttp3.mockwebserver.MockWebServer; -import okhttp3.mockwebserver.RecordedRequest; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.io.IOException; - -import static org.assertj.core.api.Assertions.assertThat; - -public class JsonRpcClientTest { - - private final MockWebServer server = new MockWebServer(); - - @BeforeEach - void setUp() throws IOException { - String mockResponse = "{\"result\":{\"chain\":\"regtest\",\"blocks\":102,\"headers\":102,\"bestblockhash\":\"5e5bcaaa2690bf99da1046334e4a2d783901608718a5b647846e67ffe0802bc8\",\"difficulty\":4.656542373906925e-10,\"time\":1663343392,\"mediantime\":1663060997,\"verificationprogress\":1,\"initialblockdownload\":true,\"chainwork\":\"00000000000000000000000000000000000000000000000000000000000000ce\",\"size_on_disk\":31048,\"pruned\":false,\"warnings\":\"\"},\"error\":null,\"id\":\"curltest\"}"; - server.enqueue(new MockResponse().setBody(mockResponse)); - server.start(); - } - - @AfterEach - void tearDown() throws IOException { - server.shutdown(); - } - - @Test - void dummyGetBlockchainInfoTest() throws Exception { - HttpUrl baseUrl = server.url("/"); - JsonRpcEndpointSpec endpointSpec = new JsonRpcEndpointSpec(baseUrl, "bisq", "bisq"); - JsonRpcClient jsonRpcClient = new JsonRpcClient(endpointSpec); - - var rpcCall = new DummyGetBlockChainInfoRpcCall(); - DummyJsonRpcResponse.Result dummyJsonRpcResponse = jsonRpcClient.call(rpcCall).getResult(); - - assertThat(dummyJsonRpcResponse).isNotNull(); - assertThat(dummyJsonRpcResponse.chain).isEqualTo("regtest"); - - RecordedRequest recordedRequest = server.takeRequest(); - assertThat("/").isEqualTo(recordedRequest.getPath()); - - String authHeader = recordedRequest.getHeader(JsonRpcClient.AUTHORIZATION_HEADER_NAME); - assertThat(authHeader).isNotNull(); - } -} diff --git a/wallets/bitcoind/regtest/build.gradle.kts b/wallets/bitcoind/regtest/build.gradle.kts deleted file mode 100644 index 3590f4624e..0000000000 --- a/wallets/bitcoind/regtest/build.gradle.kts +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id("bisq.java-library") - id("bisq.gradle.bitcoin_core.BitcoinCorePlugin") -} - -bitcoin_core { - version.set("27.1") -} - -sourceSets { - main { - resources { - srcDir(layout.buildDirectory.file("generated/src/main/resources")) - } - } -} - -dependencies { - implementation(project(":core")) - implementation(project(":bitcoind")) - implementation(project(":json-rpc")) - - implementation(libs.assertj.core) - implementation(libs.junit.jupiter) -} \ No newline at end of file diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/AbstractRegtestSetup.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/AbstractRegtestSetup.java deleted file mode 100644 index 4ae0250b2e..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/AbstractRegtestSetup.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest; - -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.regtest.process.BisqProcess; - -import java.io.IOException; -import java.nio.file.FileVisitResult; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.attribute.BasicFileAttributes; -import java.util.List; - -public abstract class AbstractRegtestSetup implements BisqProcess { - public static final String WALLET_PASSPHRASE = "My super secret passphrase that nobody can guess."; - - protected T daemonProcess; - protected final Path tmpDirPath; - - public AbstractRegtestSetup() throws IOException { - this.tmpDirPath = createTempDir(); - } - - protected abstract T createProcess(); - - public void start() throws InterruptedException { - daemonProcess = createProcess(); - daemonProcess.start(); - } - - public void shutdown() { - daemonProcess.shutdown(); - } - - public abstract List mineOneBlock() throws InterruptedException; - - public abstract RpcConfig getRpcConfig(); - - public static Path createTempDir() throws IOException { - Path tempDirPath = Files.createTempDirectory(null); - recursiveDeleteOnShutdownHook(tempDirPath); - return tempDirPath; - } - - public static void recursiveDeleteOnShutdownHook(Path path) { - Runtime.getRuntime().addShutdownHook(new Thread( - () -> { - try { - Files.walkFileTree(path, new SimpleFileVisitor<>() { - @Override - public FileVisitResult visitFile(Path file, - @SuppressWarnings("unused") BasicFileAttributes attrs) - throws IOException { - Files.delete(file); - return FileVisitResult.CONTINUE; - } - - @Override - public FileVisitResult postVisitDirectory(Path dir, IOException e) - throws IOException { - if (e == null) { - Files.delete(dir); - return FileVisitResult.CONTINUE; - } - // directory iteration failed - throw e; - } - }); - } catch (IOException e) { - throw new RuntimeException("Failed to delete " + path, e); - } - })); - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/AbstractSharedRegtestInstanceTests.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/AbstractSharedRegtestInstanceTests.java deleted file mode 100644 index 20ad193519..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/AbstractSharedRegtestInstanceTests.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest; - -import bisq.wallets.regtest.process.BisqProcess; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.TestInstance; - -import java.io.IOException; - -@TestInstance(TestInstance.Lifecycle.PER_CLASS) -public abstract class AbstractSharedRegtestInstanceTests { - private AbstractRegtestSetup regtestSetup; - - @BeforeAll - public void start() throws IOException, InterruptedException { - regtestSetup = createRegtestSetup(); - regtestSetup.start(); - } - - @AfterAll - public void stop() { - regtestSetup.shutdown(); - } - - public abstract AbstractRegtestSetup createRegtestSetup() throws IOException; -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/BitcoindExtension.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/BitcoindExtension.java deleted file mode 100644 index 9f0891b3c0..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/BitcoindExtension.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest; - -import bisq.wallets.regtest.bitcoind.BitcoindRegtestSetup; -import org.junit.jupiter.api.extension.BeforeAllCallback; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.api.extension.ParameterContext; -import org.junit.jupiter.api.extension.ParameterResolver; - -import java.io.IOException; - -import static org.junit.jupiter.api.extension.ExtensionContext.Namespace.GLOBAL; - -public class BitcoindExtension implements BeforeAllCallback, ExtensionContext.Store.CloseableResource, ParameterResolver { - - private static boolean isRunning; - private static final BitcoindRegtestSetup regtestSetup; - - static { - try { - regtestSetup = new BitcoindRegtestSetup(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - public BitcoindExtension() { - } - - @Override - public synchronized void beforeAll(ExtensionContext context) throws Exception { - if (!isRunning) { - regtestSetup.start(); - isRunning = true; - - // Register close hook - context.getRoot() - .getStore(GLOBAL) - .put("register_bitcoind_close_hook", this); - } - } - - @Override - public synchronized void close() { - if (isRunning) { - regtestSetup.shutdown(); - isRunning = false; - } - } - - @Override - public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) { - Class type = parameterContext.getParameter().getType(); - return type.equals(BitcoindRegtestSetup.class); - } - - @Override - public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) { - Class type = parameterContext.getParameter().getType(); - if (type.equals(BitcoindRegtestSetup.class)) { - return regtestSetup; - } - throw new IllegalStateException("Unknown parameter type"); - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/ConnectionFailureIntegrationTests.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/ConnectionFailureIntegrationTests.java deleted file mode 100644 index 0d725bcbeb..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/ConnectionFailureIntegrationTests.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest; - -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.json_rpc.RpcClientFactory; -import bisq.wallets.json_rpc.JsonRpcClient; -import bisq.wallets.json_rpc.exceptions.InvalidRpcCredentialsException; -import bisq.wallets.regtest.process.BisqProcess; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.Test; - -public abstract class ConnectionFailureIntegrationTests { - - private final AbstractRegtestSetup regtestSetup; - - public ConnectionFailureIntegrationTests(AbstractRegtestSetup regtestSetup) { - this.regtestSetup = regtestSetup; - } - - - @Test - void wrongRpcCredentialsTest() { - RpcConfig validRpcConfig = regtestSetup.getRpcConfig(); - RpcConfig wrongRpcConfig = RpcConfig.builder() - .hostname(validRpcConfig.getHostname()) - .port(validRpcConfig.getPort()) - .user(validRpcConfig.getUser()) - .password("WRONG_PASSWORD") - .build(); - - JsonRpcClient rpcClient = RpcClientFactory.createDaemonRpcClient(wrongRpcConfig); - var minerChainBackend = new BitcoindDaemon(rpcClient); - - Assertions.assertThatExceptionOfType(InvalidRpcCredentialsException.class) - .isThrownBy(minerChainBackend::listWallets); - } - - @Test - void verifyInvalidRpcConfigTest() { - RpcConfig validRpcConfig = regtestSetup.getRpcConfig(); - RpcConfig wrongRpcConfig = RpcConfig.builder() - .hostname(validRpcConfig.getHostname()) - .port(validRpcConfig.getPort()) - .user(validRpcConfig.getUser()) - .password("WRONG_PASSWORD") - .build(); - - boolean isValid = BitcoindDaemon.verifyRpcConfig(wrongRpcConfig); - Assertions.assertThat(isValid).isFalse(); - } - - @Test - void verifyValidRpcConfigTest() { - RpcConfig validRpcConfig = regtestSetup.getRpcConfig(); - boolean isValid = BitcoindDaemon.verifyRpcConfig(validRpcConfig); - Assertions.assertThat(isValid).isTrue(); - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/FileScanner.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/FileScanner.java deleted file mode 100644 index c115cff7d6..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/FileScanner.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest; - -import lombok.extern.slf4j.Slf4j; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Scanner; -import java.util.Set; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -@Slf4j -public class FileScanner extends LogScanner { - - private final Future logFilePath; - - public FileScanner(Set linesToMatch, Future logFilePath) { - super(linesToMatch); - this.logFilePath = logFilePath; - } - - @Override - public boolean waitUntilLogContainsLines() throws IOException, ExecutionException, InterruptedException, TimeoutException { - while (true) { - Path logFilePath = this.logFilePath.get(1, TimeUnit.MINUTES); - try (Scanner scanner = new Scanner(logFilePath)) { - boolean foundAllLines = waitUntilScannerContainsLines(scanner); - if (foundAllLines) { - return true; - } - } - } - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/InputStreamScanner.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/InputStreamScanner.java deleted file mode 100644 index 492590e154..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/InputStreamScanner.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest; - -import lombok.extern.slf4j.Slf4j; - -import java.io.InputStream; -import java.util.Scanner; -import java.util.Set; - -@Slf4j -public class InputStreamScanner extends LogScanner { - - private final InputStream inputStream; - - public InputStreamScanner(Set linesToMatch, InputStream inputStream) { - super(linesToMatch); - this.inputStream = inputStream; - } - - @Override - public boolean waitUntilLogContainsLines() { - try (Scanner scanner = new Scanner(inputStream)) { - return waitUntilScannerContainsLines(scanner); - } - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/LogScanner.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/LogScanner.java deleted file mode 100644 index 41b2d24b19..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/LogScanner.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest; - -import java.io.IOException; -import java.util.HashSet; -import java.util.Scanner; -import java.util.Set; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeoutException; - -public abstract class LogScanner { - - private final Set linesToMatch; - private final Set matchedLines = new HashSet<>(); - - public LogScanner(Set linesToMatch) { - this.linesToMatch = linesToMatch; - } - - public abstract boolean waitUntilLogContainsLines() throws IOException, ExecutionException, InterruptedException, TimeoutException; - - protected boolean waitUntilScannerContainsLines(Scanner scanner) { - while (scanner.hasNextLine()) { - String line = scanner.nextLine(); - - for (String lineToMatch : linesToMatch) { - if (line.contains(lineToMatch)) { - matchedLines.add(lineToMatch); - - if (matchedLines.size() == linesToMatch.size()) { - return true; - } - } - } - } - - return false; - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/Os.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/Os.java deleted file mode 100644 index 16c409103a..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/Os.java +++ /dev/null @@ -1,50 +0,0 @@ -package bisq.wallets.regtest; - -import lombok.Getter; - -import java.util.Locale; - -public enum Os { - LINUX("linux"), - MAC_OS("macos"), - WINDOWS("win"); - - @Getter - private final String canonicalName; - - Os(String canonicalName) { - this.canonicalName = canonicalName; - } - - public static boolean isLinux() { - return isLinux(getOsName()); - } - - public static boolean isLinux(String osName) { - return osName.contains("linux"); - } - - public static boolean isMacOs() { - return isMacOs(getOsName()); - } - - public static boolean isMacOs(String osName) { - return osName.contains("mac") || osName.contains("darwin"); - } - - public static boolean isWindows() { - return isWindows(getOsName()); - } - - public static boolean isWindows(String osName) { - return osName.contains("win"); - } - - public static String getOsName() { - return System.getProperty("os.name").toLowerCase(Locale.US); - } - - public static String getOsVersion() { - return System.getProperty("os.version"); - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/WalletStartupTests.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/WalletStartupTests.java deleted file mode 100644 index 9abfa79ab1..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/WalletStartupTests.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest; - -import bisq.wallets.regtest.process.BisqProcess; -import org.junit.jupiter.api.Test; - -import java.io.IOException; - -public abstract class WalletStartupTests { - - public abstract AbstractRegtestSetup createRegtestSetup() throws IOException; - - @Test - public void startAndStopTest() throws IOException, InterruptedException { - AbstractRegtestSetup regtestSetup = createRegtestSetup(); - regtestSetup.start(); - regtestSetup.shutdown(); - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/bitcoind/BitcoindRegtestProcess.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/bitcoind/BitcoindRegtestProcess.java deleted file mode 100644 index 373240a6f5..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/bitcoind/BitcoindRegtestProcess.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest.bitcoind; - -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.json_rpc.JsonRpcClient; -import bisq.wallets.json_rpc.RpcCallFailureException; -import bisq.wallets.json_rpc.RpcClientFactory; -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.regtest.process.DaemonProcess; -import bisq.wallets.regtest.process.ProcessConfig; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; - -import java.net.ConnectException; -import java.nio.file.Path; -import java.time.Instant; -import java.time.temporal.ChronoUnit; -import java.util.Collections; -import java.util.List; - -@Slf4j -public class BitcoindRegtestProcess extends DaemonProcess { - - private final Path binaryPath; - protected final int p2pPort; - @Getter - protected final RpcConfig rpcConfig; - private final BitcoindDaemon bitcoindDaemon; - - public BitcoindRegtestProcess(Path binaryPath, int p2pPort, RpcConfig rpcConfig, Path dataDir) { - super(dataDir); - this.binaryPath = binaryPath; - this.p2pPort = p2pPort; - this.rpcConfig = rpcConfig; - JsonRpcClient rpcClient = RpcClientFactory.createDaemonRpcClient(rpcConfig); - bitcoindDaemon = new BitcoindDaemon(rpcClient); - } - - @Override - public ProcessConfig createProcessConfig() { - int zmqPort = BitcoindRegtestSetup.findFreeSystemPort(); - return ProcessConfig.builder() - .name(binaryPath.toAbsolutePath().toString()) - .args(List.of( - "-regtest", - "-datadir=" + dataDir.toAbsolutePath(), - "-debug=1", - - "-bind=127.0.0.1:" + p2pPort, - "-whitelist=127.0.0.1", - - "-rpcbind=127.0.0.1:" + rpcConfig.getPort(), - "-rpcallowip=127.0.0.1", - "-rpcuser=" + rpcConfig.getUser(), - "-rpcpassword=" + rpcConfig.getPassword(), - - "-zmqpubhashblock=tcp://127.0.0.1:" + zmqPort, - "-zmqpubrawtx=tcp://127.0.0.1:" + zmqPort, - - "-fallbackfee=0.00000001", - "-txindex=1", - "-peerbloomfilters=1")) - .environmentVars(Collections.emptyMap()) - .build(); - } - - @Override - protected void waitUntilReady() { - Instant timeoutInstant = Instant.now().plus(2, ChronoUnit.MINUTES); - int failedAttempts = 0; - while (true) { - try { - bitcoindDaemon.listWallets(); - log.info("Connected to Bitcoin Core."); - break; - } catch (RpcCallFailureException e) { - if (e.getCause() instanceof ConnectException) { - if (isAfterTimeout(timeoutInstant)) { - throw new IllegalStateException("Bitcoin Core isn't ready after 2 minutes. Giving up."); - } - - failedAttempts++; - double msToWait = Math.min(300 * failedAttempts, 10_000); - log.info("Bitcoind RPC isn't ready yet. Trying again in {}ms.", msToWait); - sleepForMs(msToWait); - } - } - } - } - - private boolean isAfterTimeout(Instant timeoutInstant) { - return Instant.now().isAfter(timeoutInstant); - } - - private void sleepForMs(double ms) { - try { - Thread.sleep((long) ms); - } catch (InterruptedException ex) { - throw new RuntimeException(ex); - } - } - - @Override - public void invokeStopRpcCall() { - try { - bitcoindDaemon.stop(); - } catch (RpcCallFailureException e) { - log.error("Failed to send stop command to bitcoind.", e); - } - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/bitcoind/BitcoindRegtestSetup.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/bitcoind/BitcoindRegtestSetup.java deleted file mode 100644 index 331c553fac..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/bitcoind/BitcoindRegtestSetup.java +++ /dev/null @@ -1,187 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest.bitcoind; - -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.bitcoind.rpc.responses.BitcoindListUnspentResponse; -import bisq.wallets.bitcoind.zmq.ZmqListeners; -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.regtest.AbstractRegtestSetup; -import bisq.wallets.regtest.Os; -import bisq.wallets.regtest.process.MultiProcessCoordinator; -import lombok.Getter; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.ServerSocket; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.Random; - -public class BitcoindRegtestSetup - extends AbstractRegtestSetup { - - @Getter - private final int p2pPort; - @Getter - private final RpcConfig rpcConfig; - private final BitcoindRegtestProcess bitcoindProcess; - @Getter - private final RemoteBitcoind remoteBitcoind; - - public BitcoindRegtestSetup() throws IOException { - super(); - p2pPort = BitcoindRegtestSetup.findFreeSystemPort(); - rpcConfig = createRpcConfig(); - bitcoindProcess = createBitcoindProcess(); - remoteBitcoind = new RemoteBitcoind(rpcConfig); - } - - @Override - protected MultiProcessCoordinator createProcess() { - return new MultiProcessCoordinator( - List.of(bitcoindProcess, remoteBitcoind) - ); - } - - public BitcoindWallet createAndInitializeNewWallet(String walletName) { - return remoteBitcoind.createAndInitializeNewWallet(walletName); - } - - @Override - public List mineOneBlock() throws InterruptedException { - return mineBlocks(1); - } - - public List mineBlocks(int numberOfBlocks) { - return remoteBitcoind.mineBlocks(numberOfBlocks); - } - - public String fundAddress(String address, double amount) throws InterruptedException { - return remoteBitcoind.fundAddress(address, amount); - } - - public String sendBtcAndMineOneBlock(BitcoindWallet senderWallet, - BitcoindWallet receiverWallet, - double amount) throws InterruptedException { - return remoteBitcoind.sendBtcAndMineOneBlock(senderWallet, receiverWallet, amount); - } - - public Optional filterUtxosByAddress( - List utxos, - String address) { - return utxos.stream() - .filter(u -> Objects.equals(u.getAddress(), address)) - .findFirst(); - } - - public static RpcConfig createRpcConfig(String hostname, int port) { - return RpcConfig.builder() - .hostname(hostname) - .user("bisq") - .password("bisq") - .port(port) - .build(); - } - - private RpcConfig createRpcConfig() { - int port = findFreeSystemPort(); - return createRpcConfig("127.0.0.1", port); - } - - private BitcoindRegtestProcess createBitcoindProcess() throws IOException { - Path bitcoindBinaryDir = tmpDirPath.resolve("bitcoind_binary"); - Path bitcoindPath = installBitcoind(bitcoindBinaryDir); - - Path bitcoindDataDir = tmpDirPath.resolve("bitcoind_data_dir"); - return new BitcoindRegtestProcess( - bitcoindPath, - p2pPort, - rpcConfig, - bitcoindDataDir - ); - } - - public Path getDataDir() { - return bitcoindProcess.getDataDir(); - } - - public BitcoindDaemon getDaemon() { - return remoteBitcoind.getDaemon(); - } - - public BitcoindWallet getMinerWallet() { - return remoteBitcoind.getMinerWallet(); - } - - public ZmqListeners getZmqListeners() { - return remoteBitcoind.getZmqListeners(); - } - - private Path installBitcoind(Path bitcoindBinaryDir) throws IOException { - File bitcoindBinaryDirFile = bitcoindBinaryDir.toFile(); - boolean isSuccess = bitcoindBinaryDirFile.mkdirs(); - if (!isSuccess) { - throw new IllegalStateException("Couldn't create " + bitcoindBinaryDir.toAbsolutePath() + " for " + - "bitcoind installation."); - } - - InputStream inputStream = getClass() - .getClassLoader() - .getResourceAsStream("bitcoind"); - - if (inputStream == null) { - throw new IllegalStateException("Can't read bitcoind binary from resources."); - } - - Path bitcoindPath = bitcoindBinaryDir.resolve("bitcoind"); - try (inputStream) { - Files.copy(inputStream, bitcoindPath); - - boolean endOfStreamReached = inputStream.available() == 0; - if (!endOfStreamReached) { - throw new IllegalStateException("Couldn't extract bitcoind binary."); - } - - if (Os.isLinux() || Os.isMacOs()) { - isSuccess = bitcoindPath.toFile().setExecutable(true); - if (!isSuccess) { - throw new IllegalStateException("Couldn't set executable bit on bitcoind binary."); - } - } - - return bitcoindPath; - } - } - - public static int findFreeSystemPort() { - try { - ServerSocket server = new ServerSocket(0); - int port = server.getLocalPort(); - server.close(); - return port; - } catch (IOException ignored) { - return new Random().nextInt(10000) + 50000; - } - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/bitcoind/RemoteBitcoind.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/bitcoind/RemoteBitcoind.java deleted file mode 100644 index 11e71c42e8..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/bitcoind/RemoteBitcoind.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest.bitcoind; - -import bisq.wallets.bitcoind.rpc.BitcoindDaemon; -import bisq.wallets.bitcoind.rpc.BitcoindWallet; -import bisq.wallets.bitcoind.rpc.responses.BitcoindGetZmqNotificationsResponse; -import bisq.wallets.bitcoind.zmq.BitcoindRawTxProcessor; -import bisq.wallets.bitcoind.zmq.ZmqConnection; -import bisq.wallets.bitcoind.zmq.ZmqListeners; -import bisq.wallets.bitcoind.zmq.ZmqTopicProcessors; -import bisq.wallets.core.model.AddressType; -import bisq.wallets.json_rpc.JsonRpcClient; -import bisq.wallets.json_rpc.RpcClientFactory; -import bisq.wallets.json_rpc.RpcConfig; -import bisq.wallets.regtest.process.BisqProcess; -import lombok.Getter; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import static bisq.wallets.regtest.AbstractRegtestSetup.WALLET_PASSPHRASE; - -public class RemoteBitcoind implements BisqProcess { - - public static final String MINER_WALLET_NAME = "miner_wallet"; - - private final RpcConfig rpcConfig; - @Getter - private final BitcoindDaemon daemon; - @Getter - private final ZmqListeners zmqListeners = new ZmqListeners(); - @Getter - private final BitcoindWallet minerWallet; - private final List loadedWallets = new ArrayList<>(); - private ZmqConnection bitcoindZeroMq; - - public RemoteBitcoind(RpcConfig rpcConfig) { - this.rpcConfig = rpcConfig; - this.daemon = createBitcoindDaemon(); - this.minerWallet = new BitcoindWallet(daemon, rpcConfig, MINER_WALLET_NAME); - } - - @Override - public void start() throws InterruptedException { - initializeZmqListeners(); - initializeWallet(minerWallet); - mineInitialRegtestBlocks(); - } - - @Override - public void shutdown() { - bitcoindZeroMq.close(); - loadedWallets.forEach(BitcoindWallet::shutdown); - } - - public BitcoindWallet createAndInitializeNewWallet(String walletName) { - var bitcoindWallet = new BitcoindWallet(daemon, rpcConfig, walletName); - bitcoindWallet.initialize(Optional.of(WALLET_PASSPHRASE)); - return bitcoindWallet; - } - - public List mineBlocks(int numberOfBlocks) { - String minerAddress = minerWallet.getNewAddress(AddressType.BECH32, ""); - return daemon.generateToAddress(numberOfBlocks, minerAddress); - } - - public String fundAddress(String address, double amount) throws InterruptedException { - String txId = minerWallet.sendToAddress(Optional.of(WALLET_PASSPHRASE), address, amount); - mineOneBlock(); - return txId; - } - - public String sendBtcAndMineOneBlock(BitcoindWallet senderWallet, - BitcoindWallet receiverWallet, - double amount) throws InterruptedException { - String receiverAddress = receiverWallet.getNewAddress(AddressType.BECH32, ""); - senderWallet.sendToAddress(Optional.of(WALLET_PASSPHRASE), receiverAddress, amount); - mineOneBlock(); - return receiverAddress; - } - - public List mineOneBlock() throws InterruptedException { - return mineBlocks(1); - } - - private BitcoindDaemon createBitcoindDaemon() { - JsonRpcClient rpcClient = RpcClientFactory.createDaemonRpcClient(rpcConfig); - return new BitcoindDaemon(rpcClient); - } - - private void initializeZmqListeners() { - var bitcoindRawTxProcessor = new BitcoindRawTxProcessor(daemon, zmqListeners); - var bitcoindZmqTopicProcessors = new ZmqTopicProcessors(bitcoindRawTxProcessor, zmqListeners); - bitcoindZeroMq = new ZmqConnection(bitcoindZmqTopicProcessors, zmqListeners); - - List zmqNotifications = daemon.getZmqNotifications(); - bitcoindZeroMq.initialize(zmqNotifications); - } - - private void initializeWallet(BitcoindWallet wallet) { - wallet.initialize(Optional.of(WALLET_PASSPHRASE)); - loadedWallets.add(wallet); - } - - private void mineInitialRegtestBlocks() { - mineBlocks(101); - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/BisqProcess.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/BisqProcess.java deleted file mode 100644 index 46b65f467d..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/BisqProcess.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest.process; - -public interface BisqProcess { - void start() throws InterruptedException; - - void shutdown(); -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/CannotStartProcessException.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/CannotStartProcessException.java deleted file mode 100644 index 0d8bc4ef7c..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/CannotStartProcessException.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest.process; - -public class CannotStartProcessException extends RuntimeException { - public CannotStartProcessException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/DaemonProcess.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/DaemonProcess.java deleted file mode 100644 index e03f2100c2..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/DaemonProcess.java +++ /dev/null @@ -1,128 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest.process; - -import bisq.wallets.regtest.LogScanner; -import lombok.Getter; -import lombok.extern.slf4j.Slf4j; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Path; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.FutureTask; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -@Slf4j -public abstract class DaemonProcess implements BisqProcess { - - @Getter - protected final Path dataDir; - protected Process process; - - public DaemonProcess(Path dataDir) { - this.dataDir = dataDir; - } - - @Override - public void start() { - try { - makeDirs(dataDir.toFile()); - process = createAndStartProcess(); - waitUntilReady(); - } catch (IOException e) { - throw new WalletStartupFailedException("Cannot start wallet process.", e); - } - } - - @Override - public void shutdown() { - invokeStopRpcCall(); - } - - protected void waitUntilReady() { - FutureTask waitingFuture = new FutureTask<>(() -> { - Thread.currentThread().setName("waitUntilLogContainsLines"); - return waitUntilLogContainsLines(); - }); - Thread waitingThread = new Thread(waitingFuture); - waitingThread.start(); - - boolean isSuccess = false; - try { - isSuccess = waitingFuture.get(2, TimeUnit.MINUTES); - } catch (ExecutionException | InterruptedException | TimeoutException e) { - String processName = process.info().command().orElse(""); - log.error("{} didn't start after two minutes.", processName, e); - } - - if (!isSuccess) { - String processName = process.info().command().orElse(""); - throw new WalletStartupFailedException("Cannot start wallet process." + processName, null); - } - } - - protected Set getIsSuccessfulStartUpLogLines() { - return Collections.emptySet(); - } - - public abstract void invokeStopRpcCall(); - - private Process createAndStartProcess() throws IOException { - ProcessConfig processConfig = createProcessConfig(); - List args = processConfig.toCommandList(); - - var processBuilder = new ProcessBuilder(args); - processBuilder.redirectErrorStream(true); - processBuilder.redirectOutput(ProcessBuilder.Redirect.DISCARD); - - Map environment = processBuilder.environment(); - environment.putAll(processConfig.getEnvironmentVars()); - - log.info("Starting Process: {}", processConfig); - return processBuilder.start(); - } - - public abstract ProcessConfig createProcessConfig(); - - protected LogScanner getLogScanner() { - return null; - } - - protected boolean waitUntilLogContainsLines() { - try { - LogScanner logScanner = getLogScanner(); - return logScanner.waitUntilLogContainsLines(); - } catch (ExecutionException | InterruptedException | IOException | TimeoutException e) { - String processName = process.info().command().orElse(""); - log.error("{} didn't start correctly.", processName, e); - throw new CannotStartProcessException(processName, e); - } - } - - private static void makeDirs(File dir) throws IOException { - if (!dir.exists() && !dir.mkdirs()) { - throw new IOException("Could not make dir " + dir); - } - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/MultiProcessCoordinator.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/MultiProcessCoordinator.java deleted file mode 100644 index fb6c78c328..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/MultiProcessCoordinator.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest.process; - -import com.google.common.collect.Lists; - -import java.util.List; - -public class MultiProcessCoordinator implements BisqProcess { - protected final List daemonProcesses; - - public MultiProcessCoordinator(List daemonProcesses) { - this.daemonProcesses = daemonProcesses; - } - - @Override - public void start() { - daemonProcesses.forEach(bisqProcess -> { - try { - bisqProcess.start(); - } catch (InterruptedException e) { - throw new WalletStartupFailedException("Cannot start process.", e); - } - }); - } - - @Override - public void shutdown() { - // Need to shut down processes in correct order! - Lists.reverse(daemonProcesses) - .forEach(BisqProcess::shutdown); - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/ProcessConfig.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/ProcessConfig.java deleted file mode 100644 index 325f45b6d9..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/ProcessConfig.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest.process; - -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -@Builder -@Getter -@ToString -@EqualsAndHashCode -public final class ProcessConfig { - private final String name; - private final List args; - private final Map environmentVars; - - public ProcessConfig(String name, List args, Map environmentVars) { - this.name = name; - this.args = args; - this.environmentVars = environmentVars; - } - - public List toCommandList() { - List commands = new ArrayList<>(); - commands.add(name); - commands.addAll(args); - return commands; - } -} diff --git a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/WalletStartupFailedException.java b/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/WalletStartupFailedException.java deleted file mode 100644 index 77fbbedc2d..0000000000 --- a/wallets/bitcoind/regtest/src/main/java/bisq/wallets/regtest/process/WalletStartupFailedException.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * This file is part of Bisq. - * - * Bisq is free software: you can redistribute it and/or modify it - * under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or (at - * your option) any later version. - * - * Bisq is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public - * License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with Bisq. If not, see . - */ - -package bisq.wallets.regtest.process; - -public class WalletStartupFailedException extends RuntimeException { - public WalletStartupFailedException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/wallets/bitcoind/settings.gradle.kts b/wallets/bitcoind/settings.gradle.kts deleted file mode 100644 index b36c5a98da..0000000000 --- a/wallets/bitcoind/settings.gradle.kts +++ /dev/null @@ -1,13 +0,0 @@ -pluginManagement { - repositories { - gradlePluginPortal() - } - includeBuild("build-logic") -} - -include("core") -include("bitcoind") -include("json-rpc") -include("regtest") - -rootProject.name = "bitcoind" \ No newline at end of file