diff --git a/pom.xml b/pom.xml index a5fb1da8..4ca61d1e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,20 +6,23 @@ 0.9 jar - UTF-8 - 1.61 - 1.2.2 - 2.5.0 - 2.4.1 - 9.4.17.v20190418 - 2.27 - 2.11.0 - 1.7.12 - 2.0.6 - 3.19.0 - 3.5.0 - 1.1.0 + 0.15.4 + 1.63 ${maven.build.timestamp} + 3.6 + 1.8 + 1.2.2 + 28.1-jre + 2.5.0 + 2.5.0 + 2.29.1 + 9.4.20.v20190813 + 2.12.1 + UTF-8 + 1.7.12 + 2.0.9 + 3.23.8 + 1.1.0 src/main/java @@ -32,11 +35,18 @@ - maven-compiler-plugin - 3.5.1 + org.codehaus.mojo + versions-maven-plugin + 2.5 - 1.8 - 1.8 + false + + + + maven-compiler-plugin + 3.8.0 + + 11 @@ -309,7 +319,7 @@ org.hsqldb sqltool - ${sqltool.version} + ${hsqldb-sqltool.version} test @@ -322,7 +332,7 @@ org.bitcoinj bitcoinj-core - 0.14.7 + ${bitcoin.version} @@ -333,7 +343,7 @@ org.apache.commons commons-text - 1.4 + ${commons-text.version} @@ -356,12 +366,12 @@ commons-net commons-net - 3.3 + ${commons-net.version} com.google.guava guava - 25.0-jre + ${guava.version} diff --git a/src/main/java/org/qora/crosschain/BTC.java b/src/main/java/org/qora/crosschain/BTC.java index 6ee8905a..f1d3ecf2 100644 --- a/src/main/java/org/qora/crosschain/BTC.java +++ b/src/main/java/org/qora/crosschain/BTC.java @@ -226,7 +226,7 @@ public class BTC { protected Wallet createEmptyWallet() { ECKey dummyKey = new ECKey(); - KeyChainGroup keyChainGroup = new KeyChainGroup(params); + KeyChainGroup keyChainGroup = KeyChainGroup.createBasic(params); keyChainGroup.importKeys(dummyKey); Wallet wallet = new Wallet(params, keyChainGroup); @@ -242,12 +242,12 @@ public class BTC { WalletCoinsReceivedEventListener coinsReceivedListener = new WalletCoinsReceivedEventListener() { @Override public void onCoinsReceived(Wallet wallet, Transaction tx, Coin prevBalance, Coin newBalance) { - System.out.println("Coins received via transaction " + tx.getHashAsString()); + System.out.println("Coins received via transaction " + tx.getTxId().toString()); } }; wallet.addCoinsReceivedEventListener(coinsReceivedListener); - Address address = Address.fromBase58(params, base58Address); + Address address = Address.fromString(params, base58Address); wallet.addWatchedAddress(address, startTime); StoredBlock checkpoint = manager.getCheckpointBefore(startTime); diff --git a/src/main/java/org/qora/repository/hsqldb/HSQLDBRepository.java b/src/main/java/org/qora/repository/hsqldb/HSQLDBRepository.java index 5c7897ac..79e07e01 100644 --- a/src/main/java/org/qora/repository/hsqldb/HSQLDBRepository.java +++ b/src/main/java/org/qora/repository/hsqldb/HSQLDBRepository.java @@ -385,7 +385,6 @@ public class HSQLDBRepository implements Repository { * @return ResultSet, or null if there are no found rows * @throws SQLException */ - @SuppressWarnings("resource") public ResultSet checkedExecute(String sql, Object... objects) throws SQLException { PreparedStatement preparedStatement = this.prepareStatement(sql); diff --git a/src/main/java/org/qora/transaction/Transaction.java b/src/main/java/org/qora/transaction/Transaction.java index 2b990dfe..be713b95 100644 --- a/src/main/java/org/qora/transaction/Transaction.java +++ b/src/main/java/org/qora/transaction/Transaction.java @@ -3,6 +3,7 @@ package org.qora.transaction; import java.math.BigDecimal; import java.math.BigInteger; import java.math.MathContext; +import java.math.RoundingMode; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; @@ -347,7 +348,7 @@ public abstract class Transaction { if (recommendedFee.compareTo(BlockChain.getInstance().getUnitFee()) <= 0) { recommendedFee = BlockChain.getInstance().getUnitFee(); } else { - recommendedFee = recommendedFee.setScale(0, BigDecimal.ROUND_UP); + recommendedFee = recommendedFee.setScale(0, RoundingMode.CEILING); } return recommendedFee.setScale(8); diff --git a/src/test/java/org/qora/test/BTCACCTTests.java b/src/test/java/org/qora/test/BTCACCTTests.java index 2afb75f2..943d6b96 100644 --- a/src/test/java/org/qora/test/BTCACCTTests.java +++ b/src/test/java/org/qora/test/BTCACCTTests.java @@ -13,6 +13,7 @@ import org.bitcoinj.core.Address; import org.bitcoinj.core.Coin; import org.bitcoinj.core.ECKey; import org.bitcoinj.core.InsufficientMoneyException; +import org.bitcoinj.core.LegacyAddress; import org.bitcoinj.core.NetworkParameters; import org.bitcoinj.core.Sha256Hash; import org.bitcoinj.core.Transaction; @@ -24,6 +25,7 @@ import org.bitcoinj.crypto.TransactionSignature; import org.bitcoinj.kits.WalletAppKit; import org.bitcoinj.params.TestNet3Params; import org.bitcoinj.script.Script; +import org.bitcoinj.script.Script.ScriptType; import org.bitcoinj.script.ScriptBuilder; import org.bitcoinj.script.ScriptChunk; import org.bitcoinj.script.ScriptOpCodes; @@ -120,11 +122,11 @@ public class BTCACCTTests { kit.wallet().importKey(recipientKey); byte[] senderPubKey = senderKey.getPubKey(); - System.out.println("Sender address: " + senderKey.toAddress(params).toBase58()); + System.out.println("Sender address: " + Address.fromKey(params, senderKey, ScriptType.P2PKH).toString()); System.out.println("Sender pubkey: " + HashCode.fromBytes(senderPubKey).toString()); byte[] recipientPubKey = recipientKey.getPubKey(); - System.out.println("Recipient address: " + recipientKey.toAddress(params).toBase58()); + System.out.println("Recipient address: " + Address.fromKey(params, recipientKey, ScriptType.P2PKH).toString()); System.out.println("Recipient pubkey: " + HashCode.fromBytes(recipientPubKey).toString()); byte[] redeemScriptBytes = buildRedeemScript(secret, senderPubKey, recipientPubKey, lockTime); @@ -132,20 +134,20 @@ public class BTCACCTTests { byte[] redeemScriptHash = hash160(redeemScriptBytes); - Address p2shAddress = Address.fromP2SHHash(params, redeemScriptHash); - System.out.println("P2SH address: " + p2shAddress.toBase58()); + Address p2shAddress = LegacyAddress.fromScriptHash(params, redeemScriptHash); + System.out.println("P2SH address: " + p2shAddress.toString()); // Send amount to P2SH address Transaction fundingTransaction = buildFundingTransaction(params, Sha256Hash.wrap(prevTxHash), prevTxOutputIndex, prevTxBalance, senderKey, sendValue.add(fee), redeemScriptHash); - System.out.println("Sending " + sendValue.add(fee).toPlainString() + " to " + p2shAddress.toBase58()); + System.out.println("Sending " + sendValue.add(fee).toPlainString() + " to " + p2shAddress.toString()); if (!usePreviousFundingTx) broadcastWithConfirmation(kit, fundingTransaction); if (doRefundNotRedeem) { // Refund - System.out.println("Refunding " + sendValue.toPlainString() + " back to " + senderKey.toAddress(params)); + System.out.println("Refunding " + sendValue.toPlainString() + " back to " + Address.fromKey(params, senderKey, ScriptType.P2PKH).toString()); now = System.currentTimeMillis() / 1000L; long refundLockTime = now - 60 * 30; // 30 minutes in the past, needs to before 'now' and before "median block time" (median of previous 11 block @@ -158,7 +160,7 @@ public class BTCACCTTests { broadcastWithConfirmation(kit, refundTransaction); } else { // Redeem - System.out.println("Redeeming " + sendValue.toPlainString() + " to " + recipientKey.toAddress(params)); + System.out.println("Redeeming " + sendValue.toPlainString() + " to " + Address.fromKey(params, recipientKey, ScriptType.P2PKH).toString()); TransactionOutPoint fundingOutPoint = new TransactionOutPoint(params, 0, fundingTransaction); Transaction redeemTransaction = buildRedeemTransaction(params, fundingOutPoint, recipientKey, sendValue, secret, redeemScriptBytes); @@ -168,7 +170,7 @@ public class BTCACCTTests { kit.wallet().cleanup(); for (Transaction transaction : kit.wallet().getTransactionPool(Pool.PENDING).values()) - System.out.println("Pending tx: " + transaction.getHashAsString()); + System.out.println("Pending tx: " + transaction.getTxId().toString()); } private static final byte[] redeemScript1 = HashCode.fromString("76a820").asBytes(); @@ -211,11 +213,11 @@ public class BTCACCTTests { // Fixed amount to P2SH fundingTransaction.addOutput(value, ScriptBuilder.createP2SHOutputScript(redeemScriptHash)); // Change to sender - fundingTransaction.addOutput(balance.minus(value).minus(fee), ScriptBuilder.createOutputScript(sigKey.toAddress(params))); + fundingTransaction.addOutput(balance.minus(value).minus(fee), ScriptBuilder.createOutputScript(Address.fromKey(params, sigKey, ScriptType.P2PKH))); // Input // We create fake "to address" scriptPubKey for prev tx so our spending input is P2PKH type - Script fakeScriptPubKey = ScriptBuilder.createOutputScript(sigKey.toAddress(params)); + Script fakeScriptPubKey = ScriptBuilder.createOutputScript(Address.fromKey(params, sigKey, ScriptType.P2PKH)); TransactionOutPoint prevOut = new TransactionOutPoint(params, outputIndex, prevTxHash); fundingTransaction.addSignedInput(prevOut, fakeScriptPubKey, sigKey); @@ -228,7 +230,7 @@ public class BTCACCTTests { redeemTransaction.setVersion(2); // Outputs - redeemTransaction.addOutput(value, ScriptBuilder.createOutputScript(recipientKey.toAddress(params))); + redeemTransaction.addOutput(value, ScriptBuilder.createOutputScript(Address.fromKey(params, recipientKey, ScriptType.P2PKH))); // Input byte[] recipientPubKey = recipientKey.getPubKey(); @@ -265,7 +267,7 @@ public class BTCACCTTests { refundTransaction.setVersion(2); // Outputs - refundTransaction.addOutput(value, ScriptBuilder.createOutputScript(senderKey.toAddress(params))); + refundTransaction.addOutput(value, ScriptBuilder.createOutputScript(Address.fromKey(params, senderKey, ScriptType.P2PKH))); // Input byte[] recipientPubKey = senderKey.getPubKey(); @@ -299,7 +301,7 @@ public class BTCACCTTests { } private void broadcastWithConfirmation(WalletAppKit kit, Transaction transaction) { - System.out.println("Broadcasting tx: " + transaction.getHashAsString()); + System.out.println("Broadcasting tx: " + transaction.getTxId().toString()); System.out.println("TX hex: " + HashCode.fromBytes(transaction.bitcoinSerialize()).toString()); System.out.println("Number of connected peers: " + kit.peerGroup().numConnectedPeers()); @@ -312,7 +314,7 @@ public class BTCACCTTests { } // wait for confirmation - System.out.println("Waiting for confirmation of tx: " + transaction.getHashAsString()); + System.out.println("Waiting for confirmation of tx: " + transaction.getTxId().toString()); try { transaction.getConfidence().getDepthFuture(1).get(); @@ -320,7 +322,7 @@ public class BTCACCTTests { throw new RuntimeException("Transaction confirmation failed", e); } - System.out.println("Confirmed tx: " + transaction.getHashAsString()); + System.out.println("Confirmed tx: " + transaction.getTxId().toString()); } /** Convert int to little-endian byte array */ diff --git a/src/test/java/org/qora/test/ByteArrayTests.java b/src/test/java/org/qora/test/ByteArrayTests.java index 7ae43cd9..eb40eba1 100644 --- a/src/test/java/org/qora/test/ByteArrayTests.java +++ b/src/test/java/org/qora/test/ByteArrayTests.java @@ -78,6 +78,7 @@ public class ByteArrayTests { } @Test + @SuppressWarnings("unlikely-arg-type") public void testCompareBoxedWithPrimitive() { byte[] testValue = testValues.get(0); ByteArray ba1 = new ByteArray(testValue); @@ -90,6 +91,7 @@ public class ByteArrayTests { } @Test + @SuppressWarnings("unlikely-arg-type") public void testMapContainsKey() { Map testMap = new HashMap<>(); fillMap(testMap); diff --git a/src/test/java/org/qora/test/common/ApiCommon.java b/src/test/java/org/qora/test/common/ApiCommon.java index 02fa3f8b..2707b2a9 100644 --- a/src/test/java/org/qora/test/common/ApiCommon.java +++ b/src/test/java/org/qora/test/common/ApiCommon.java @@ -34,7 +34,7 @@ public class ApiCommon extends Common { public static Object buildResource(Class resourceClass) { try { - Object resource = resourceClass.newInstance(); + Object resource = resourceClass.getDeclaredConstructor().newInstance(); Field requestField = resourceClass.getDeclaredField("request"); requestField.setAccessible(true);