mirror of
https://github.com/haveno-dex/haveno.git
synced 2024-11-16 15:58:08 +00:00
cleanup todos and update to new monero-java api
This commit is contained in:
parent
376f10b7c7
commit
391594198f
8 changed files with 15 additions and 45 deletions
|
@ -521,7 +521,7 @@ public class BisqSetup {
|
|||
// TODO (woodser): check for invalid maker fee txs with xmr?
|
||||
// openOfferManager.getObservableList().forEach(e -> {
|
||||
// String offerFeePaymentTxId = e.getOffer().getOfferFeePaymentTxId();
|
||||
// if (btcWalletService.getConfidenceForTxId(offerFeePaymentTxId) == null) { // TODO (woodser): needed for xmr base?
|
||||
// if (btcWalletService.getConfidenceForTxId(offerFeePaymentTxId) == null) { // TODO (woodser): verify xmr maker fee tx
|
||||
// String message = Res.get("popup.warning.openOfferWithInvalidMakerFeeTx",
|
||||
// e.getOffer().getShortId(), offerFeePaymentTxId);
|
||||
// log.warn(message);
|
||||
|
|
|
@ -103,10 +103,10 @@ public class Balances {
|
|||
});
|
||||
}
|
||||
|
||||
// TODO (woodser): reserved balance = reserved for trade, locked balance = locked in multisig
|
||||
// TODO (woodser): currently reserved balance = reserved for trade (excluding multisig) and locked balance = txs with < 10 confirmations
|
||||
|
||||
private void updateAvailableBalance() {
|
||||
availableBalance.set(Coin.valueOf(xmrWalletService.getWallet().getUnlockedBalance(0).longValue()));
|
||||
availableBalance.set(Coin.valueOf(xmrWalletService.getWallet().getUnlockedBalance(0).longValue()));
|
||||
}
|
||||
|
||||
private void updateReservedBalance() {
|
||||
|
@ -117,7 +117,7 @@ public class Balances {
|
|||
}
|
||||
reservedBalance.set(Coin.valueOf(sum.longValue()));
|
||||
}
|
||||
|
||||
|
||||
private void updateLockedBalance() {
|
||||
BigInteger balance = xmrWalletService.getWallet().getBalance(0);
|
||||
BigInteger unlockedBalance = xmrWalletService.getWallet().getUnlockedBalance(0);
|
||||
|
|
|
@ -91,7 +91,8 @@ public class XmrWalletService {
|
|||
});
|
||||
}
|
||||
|
||||
// TODO (woodser): move hard-coded values to config
|
||||
// TODO (woodser): wallet has single password which is passed here?
|
||||
// TODO (woodser): test retaking failed trade. create new multisig wallet or replace? cannot reuse
|
||||
public MoneroWallet getOrCreateMultisigWallet(String tradeId) {
|
||||
String path = "xmr_multisig_trade_" + tradeId;
|
||||
MoneroWallet multisigWallet = null;
|
||||
|
|
|
@ -51,7 +51,7 @@ public final class PaymentMethod implements PersistablePayload, Comparable<Payme
|
|||
|
||||
// time in blocks (average 10 min for one block confirmation
|
||||
//private static final long DAY = TimeUnit.HOURS.toMillis(24);
|
||||
private static final long DAY = TimeUnit.MINUTES.toMillis(1); // TODO (woodser): changed to 1 minute for development
|
||||
private static final long DAY = TimeUnit.MINUTES.toMillis(1); // TODO (woodser): changed to 1 minute for development, move to config?
|
||||
|
||||
// Default trade limits.
|
||||
// We initialize very early before reading persisted data. We will apply later the limit from
|
||||
|
|
|
@ -622,8 +622,8 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
|
|||
//System.out.println("Creating feeEstimateTx!");
|
||||
MoneroTxWallet feeEstimateTx = multisigWallet.createTx(new MoneroTxConfig()
|
||||
.setAccountIndex(0)
|
||||
.addDestination(new MoneroDestination(buyerPayoutAddress, buyerPayoutAmount.multiply(BigInteger.valueOf(4)).divide(BigInteger.valueOf(5)))) // reduce payment amount to compute fee of similar tx
|
||||
.addDestination(new MoneroDestination(sellerPayoutAddress, sellerPayoutAmount.multiply(BigInteger.valueOf(4)).divide(BigInteger.valueOf(5)))) // TODO (woodser): support addDestination(addr, amt) without new
|
||||
.addDestination(buyerPayoutAddress, buyerPayoutAmount.multiply(BigInteger.valueOf(4)).divide(BigInteger.valueOf(5))) // reduce payment amount to compute fee of similar tx
|
||||
.addDestination(sellerPayoutAddress, sellerPayoutAmount.multiply(BigInteger.valueOf(4)).divide(BigInteger.valueOf(5)))
|
||||
.setRelay(false)
|
||||
);
|
||||
|
||||
|
@ -640,12 +640,11 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
|
|||
numAttempts++;
|
||||
payoutTx = multisigWallet.createTx(new MoneroTxConfig()
|
||||
.setAccountIndex(0)
|
||||
.addDestination(new MoneroDestination(buyerPayoutAddress, buyerPayoutAmount.subtract(feeEstimate.divide(BigInteger.valueOf(2))))) // split fee subtracted from each payout amount
|
||||
.addDestination(new MoneroDestination(sellerPayoutAddress, sellerPayoutAmount.subtract(feeEstimate.divide(BigInteger.valueOf(2))))) // TODO (woodser): support addDestination(addr, amt) without new
|
||||
.addDestination(buyerPayoutAddress, buyerPayoutAmount.subtract(feeEstimate.divide(BigInteger.valueOf(2)))) // split fee subtracted from each payout amount
|
||||
.addDestination(sellerPayoutAddress, sellerPayoutAmount.subtract(feeEstimate.divide(BigInteger.valueOf(2))))
|
||||
.setRelay(false));
|
||||
} catch (MoneroError e) {
|
||||
e.printStackTrace();
|
||||
System.out.println("FAILED TO CREATE PAYOUT TX, ITERATING...");
|
||||
// exception expected // TODO: better way of estimating fee?
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,6 @@ public class TradeTaskRunner extends TaskRunner<Trade> {
|
|||
|
||||
public TradeTaskRunner(Trade sharedModel, ResultHandler resultHandler, ErrorMessageHandler errorMessageHandler) {
|
||||
//noinspection unchecked
|
||||
super(sharedModel, (Class<Trade>) Trade.class, resultHandler, errorMessageHandler); // TODO (woodser): getSuperClass().getSuperClass(), just to get to Trade.class?
|
||||
super(sharedModel, (Class<Trade>) Trade.class, resultHandler, errorMessageHandler);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -97,8 +97,8 @@ public class BuyerCreateAndSignPayoutTx extends TradeTask {
|
|||
System.out.println("Creating feeEstimateTx!");
|
||||
MoneroTxWallet feeEstimateTx = multisigWallet.createTx(new MoneroTxConfig()
|
||||
.setAccountIndex(0)
|
||||
.addDestination(new MoneroDestination(buyerPayoutAddress, buyerPayoutAmount.multiply(BigInteger.valueOf(4)).divide(BigInteger.valueOf(5)))) // reduce payment amount to compute fee of similar tx
|
||||
.addDestination(new MoneroDestination(sellerPayoutAddress, sellerPayoutAmount.multiply(BigInteger.valueOf(4)).divide(BigInteger.valueOf(5)))) // TODO (woodser): support addDestination(addr, amt) without new
|
||||
.addDestination(buyerPayoutAddress, buyerPayoutAmount.multiply(BigInteger.valueOf(4)).divide(BigInteger.valueOf(5))) // reduce payment amount to compute fee of similar tx
|
||||
.addDestination(sellerPayoutAddress, sellerPayoutAmount.multiply(BigInteger.valueOf(4)).divide(BigInteger.valueOf(5)))
|
||||
.setRelay(false)
|
||||
);
|
||||
|
||||
|
|
30
todo.txt
30
todo.txt
|
@ -1,30 +0,0 @@
|
|||
configurable daemon for poc
|
||||
trade removed from books immediately or when taker pays fee? see ProcessOfferAvailabilityResponse
|
||||
one TraderProtocol which supports maker, taker, buyer, seller methods to prevent duplicate implementations
|
||||
script to launch local network
|
||||
use "deposit tx" terminology instead of "fund multisig"
|
||||
use rpc instead of jni bindings? requires notifications in monero-java
|
||||
resume listeners on startup (BisqSetup.start() - init multisig?)
|
||||
finalize protocol (when to remove trade from books, tx ids, no arbitrator till ms?)
|
||||
deploy seed
|
||||
balances: total, locked, reserved?
|
||||
verify payout txs in dispute
|
||||
user can review/accept/reject arbitrator payout decision
|
||||
arbitrator fee?
|
||||
proper error handling
|
||||
peer verify fee tx
|
||||
multisig wallets replaced if exist and trade restarted
|
||||
multisig wallets named with trade id + trade peer id for concurrent acceptance?
|
||||
use getNewAddressEntry() to register payout destination
|
||||
use BigIntegers instead of satoshi conversion?
|
||||
remove bitcoinj dependency?
|
||||
manage all funds in account 0 with reserved subaddresses or move failed trade account funds to account 0 (incurs miner fee + 10 block wait time)
|
||||
refactor State/Phase for CleanupTradeableOnFault
|
||||
temp node address vs trusting/persisitng into trade model
|
||||
ui designs
|
||||
flatten ProcessModel into Trade / other model refactors?
|
||||
might occasionally need to reimburse taker fee if maker does not enter into multisig
|
||||
test disconnection from daemon at various stages
|
||||
|
||||
BEFORE PRODUCTION
|
||||
build status like bisq: https://travis-ci.org/bisq-network/bisq
|
Loading…
Reference in a new issue