diff --git a/core/src/main/java/io/bitsquare/btc/FeePolicy.java b/core/src/main/java/io/bitsquare/btc/FeePolicy.java index 42f1da6386..b6dca62517 100644 --- a/core/src/main/java/io/bitsquare/btc/FeePolicy.java +++ b/core/src/main/java/io/bitsquare/btc/FeePolicy.java @@ -40,16 +40,15 @@ public class FeePolicy { // Other good source is: https://tradeblock.com/blockchain 15-100 satoshis/byte - public static final Coin TX_FEE = Coin.valueOf(30000); // 0.0003 BTC about 0.06 EUR @ 200 EUR/BTC: about 90 satoshi /byte + public static final Coin TX_FEE = Coin.valueOf(20000); // 0.0002 BTC about 0.8 EUR @ 400 EUR/BTC: about 70 satoshi /byte static { - // we use our fee as default fee - Wallet.SendRequest.DEFAULT_FEE_PER_KB = FeePolicy.TX_FEE; + Wallet.SendRequest.DEFAULT_FEE_PER_KB = Coin.valueOf(5000); // 0.0005 BTC we use a higher value. original is Coin.valueOf(1000) } public static final Coin DUST = Coin.valueOf(546); - public static final Coin CREATE_OFFER_FEE = Coin.valueOf(100000); // 0.001 BTC 0.1% of 1 BTC about 0.2 EUR @ 200 EUR/BTC + public static final Coin CREATE_OFFER_FEE = Coin.valueOf(100000); // 0.001 BTC 0.1% of 1 BTC about 0.4 EUR @ 400 EUR/BTC public static final Coin TAKE_OFFER_FEE = CREATE_OFFER_FEE; - public static final Coin SECURITY_DEPOSIT = Coin.valueOf(10000000); // 0.1 BTC; about 20 EUR @ 200 EUR/BTC + public static final Coin SECURITY_DEPOSIT = Coin.valueOf(10000000); // 0.1 BTC; about 40 EUR @ 400 EUR/BTC } diff --git a/core/src/main/java/io/bitsquare/btc/WalletService.java b/core/src/main/java/io/bitsquare/btc/WalletService.java index a344034e06..e542347b5b 100644 --- a/core/src/main/java/io/bitsquare/btc/WalletService.java +++ b/core/src/main/java/io/bitsquare/btc/WalletService.java @@ -56,8 +56,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.stream.Collectors; -import static com.google.common.base.Preconditions.checkArgument; - /** * WalletService handles all non trade specific wallet and bitcoin related services. * It startup the wallet app kit and initialized the wallet. @@ -102,11 +100,6 @@ public class WalletService { this.tradeWalletService = tradeWalletService; this.addressEntryList = addressEntryList; this.params = preferences.getBitcoinNetwork().getParameters(); - - // TODO remove after sufficient testing with testnet - checkArgument(!params.getId().equals(NetworkParameters.ID_MAINNET), - "Mainnet is not allowed to be used at that stage of development"); - this.walletDir = new File(walletDir, "bitcoin"); this.userAgent = userAgent; } diff --git a/core/src/main/java/io/bitsquare/trade/offer/OpenOffer.java b/core/src/main/java/io/bitsquare/trade/offer/OpenOffer.java index b805c350ff..3fdb0eca0a 100644 --- a/core/src/main/java/io/bitsquare/trade/offer/OpenOffer.java +++ b/core/src/main/java/io/bitsquare/trade/offer/OpenOffer.java @@ -37,7 +37,7 @@ public class OpenOffer implements Tradable, Serializable { // Timeout for offer reservation during takeoffer process. If deposit tx is not completed in that time we reset the offer to AVAILABLE state. transient private static final long TIMEOUT_SEC = 30; - private java.util.Timer timeoutTimer; + transient private java.util.Timer timeoutTimer; public enum State { AVAILABLE, diff --git a/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeProtocol.java b/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeProtocol.java index a36b4d3484..f67844e848 100644 --- a/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeProtocol.java +++ b/core/src/main/java/io/bitsquare/trade/protocol/trade/TradeProtocol.java @@ -19,7 +19,6 @@ package io.bitsquare.trade.protocol.trade; import io.bitsquare.common.UserThread; import io.bitsquare.common.crypto.PubKeyRing; -import io.bitsquare.common.util.Utilities; import io.bitsquare.p2p.Address; import io.bitsquare.p2p.Message; import io.bitsquare.p2p.messaging.DecryptedMailListener; @@ -124,7 +123,6 @@ public abstract class TradeProtocol { stopTimeout(); timeoutTimer = UserThread.runAfter(() -> { - Utilities.setThreadName("TradeProtocol:Timeout"); log.error("Timeout reached"); trade.setErrorMessage("A timeout occurred."); cleanupTradable(); diff --git a/core/src/main/java/io/bitsquare/user/Preferences.java b/core/src/main/java/io/bitsquare/user/Preferences.java index 96cd07391c..4e287fa5e9 100644 --- a/core/src/main/java/io/bitsquare/user/Preferences.java +++ b/core/src/main/java/io/bitsquare/user/Preferences.java @@ -48,17 +48,17 @@ public class Preferences implements Serializable { // Deactivate mBit for now as most screens are not supporting it yet transient private static final List BTC_DENOMINATIONS = Arrays.asList(MonetaryFormat.CODE_BTC/*, MonetaryFormat.CODE_MBTC*/); transient static final private ArrayList blockChainExplorersTestNet = new ArrayList<>(Arrays.asList( + new BlockChainExplorer("Blocktrail", "https://www.blocktrail.com/tBTC/tx/", "https://www.blocktrail.com/tBTC/address/"), new BlockChainExplorer("Blockexplorer", "https://blockexplorer.com/testnet/tx/", "https://blockexplorer.com/testnet/address/"), new BlockChainExplorer("Biteasy", "https://www.biteasy.com/testnet/transactions/", "https://www.biteasy.com/testnet/addresses/"), - new BlockChainExplorer("Blocktrail", "https://www.blocktrail.com/tBTC/tx/", "https://www.blocktrail.com/tBTC/address/"), new BlockChainExplorer("Blockr.io", "https://tbtc.blockr.io/tx/info/", "https://tbtc.blockr.io/address/info/") )); transient static final private ArrayList blockChainExplorersMainNet = new ArrayList<>(Arrays.asList( - new BlockChainExplorer("Blockexplorer", "https://blockexplorer.com/tx/", "https://blockexplorer.com/address/"), - new BlockChainExplorer("Biteasy", "https://www.biteasy.com/transactions/", "https://www.biteasy.com/addresses/"), new BlockChainExplorer("Blockchain.info", "https://blockchain.info/tx/", "https://blockchain.info/address/"), new BlockChainExplorer("Blocktrail", "https://www.blocktrail.com/BTC/tx/", "https://www.blocktrail.com/BTC/address/"), + new BlockChainExplorer("Blockexplorer", "https://blockexplorer.com/tx/", "https://blockexplorer.com/address/"), + new BlockChainExplorer("Biteasy", "https://www.biteasy.com/transactions/", "https://www.biteasy.com/addresses/"), new BlockChainExplorer("Blockr.io", "https://btc.blockr.io/tx/info/", "https://btc.blockr.io/address/info/") )); diff --git a/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java b/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java index c08b217793..10757897d3 100644 --- a/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java +++ b/gui/src/main/java/io/bitsquare/gui/main/funds/transactions/TransactionsView.java @@ -31,7 +31,8 @@ import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.layout.VBox; import javafx.util.Callback; -import org.bitcoinj.core.Transaction; +import org.bitcoinj.core.*; +import org.bitcoinj.script.Script; import javax.inject.Inject; import java.util.List; @@ -46,11 +47,12 @@ public class TransactionsView extends ActivatableView { TableColumn dateColumn, addressColumn, amountColumn, typeColumn, confidenceColumn; - private ObservableList transactionsListItems; + private final ObservableList transactionsListItems = FXCollections.observableArrayList(); private final WalletService walletService; private final BSFormatter formatter; private final Preferences preferences; + private WalletEventListener walletEventListener; @Inject private TransactionsView(WalletService walletService, BSFormatter formatter, Preferences preferences) { @@ -66,21 +68,63 @@ public class TransactionsView extends ActivatableView { setAddressColumnCellFactory(); setConfidenceColumnCellFactory(); + + walletEventListener = new WalletEventListener() { + @Override + public void onCoinsReceived(Wallet wallet, Transaction tx, Coin prevBalance, Coin newBalance) { + updateList(); + } + + @Override + public void onCoinsSent(Wallet wallet, Transaction tx, Coin prevBalance, Coin newBalance) { + updateList(); + } + + @Override + public void onReorganize(Wallet wallet) { + updateList(); + } + + @Override + public void onTransactionConfidenceChanged(Wallet wallet, Transaction tx) { + } + + @Override + public void onWalletChanged(Wallet wallet) { + updateList(); + } + + @Override + public void onScriptsChanged(Wallet wallet, List