Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/coincontrol.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ class CCoinControl
{
public:
CTxDestination destChange;
bool useDarkSend;
bool useInstantX;

CCoinControl()
{
Expand All @@ -22,6 +24,8 @@ class CCoinControl
{
destChange = CNoDestination();
setSelected.clear();
useInstantX = false;
useDarkSend = true;
}

bool HasSelected() const
Expand Down
10 changes: 10 additions & 0 deletions src/qt/coincontroldialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,9 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
// Fee
int64_t nFee = nTransactionFee * (1 + (int64_t)nBytes / 1000);

// IX Fee
if(coinControl->useInstantX) nFee = max(nFee, CENT);

// Min Fee
int64_t nMinFee = GetMinFee(txDummy, nBytes, AllowFree(dPriority), GMF_SEND);

Expand All @@ -539,6 +542,13 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
{
nChange = nAmount - nPayFee - nPayAmount;

// DS Fee = overpay
if(coinControl->useDarkSend && nChange > 0)
{
nPayFee += nChange;
nChange = 0;
}

// if sub-cent change is required, the fee must be raised to at least CTransaction::nMinTxFee
if (nPayFee < CTransaction::nMinTxFee && nChange > 0 && nChange < CENT)
{
Expand Down
10 changes: 9 additions & 1 deletion src/qt/sendcoinsdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ SendCoinsDialog::SendCoinsDialog(QWidget *parent) :
connect(ui->checkBoxCoinControlChange, SIGNAL(stateChanged(int)), this, SLOT(coinControlChangeChecked(int)));
connect(ui->lineEditCoinControlChange, SIGNAL(textEdited(const QString &)), this, SLOT(coinControlChangeEdited(const QString &)));
connect(ui->checkUseDarksend, SIGNAL(stateChanged ( int )), this, SLOT(updateDisplayUnit()));
connect(ui->checkInstantX, SIGNAL(stateChanged ( int )), this, SLOT(updateDisplayUnit()));
connect(ui->checkInstantX, SIGNAL(stateChanged ( int )), this, SLOT(updateInstantX()));

// Coin Control: clipboard actions
QAction *clipboardQuantityAction = new QAction(tr("Copy quantity"), this);
Expand Down Expand Up @@ -473,6 +473,14 @@ void SendCoinsDialog::setBalance(qint64 balance, qint64 unconfirmedBalance, qint
void SendCoinsDialog::updateDisplayUnit()
{
setBalance(model->getBalance(), model->getUnconfirmedBalance(), model->getImmatureBalance(), model->getAnonymizedBalance());
CoinControlDialog::coinControl->useDarkSend = ui->checkUseDarksend->isChecked();
coinControlUpdateLabels();
}

void SendCoinsDialog::updateInstantX()
{
CoinControlDialog::coinControl->useInstantX = ui->checkInstantX->isChecked();
coinControlUpdateLabels();
}

void SendCoinsDialog::processSendCoinsReturn(const WalletModel::SendCoinsReturn &sendCoinsReturn, const QString &msgArg)
Expand Down
1 change: 1 addition & 0 deletions src/qt/sendcoinsdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ private slots:
void on_sendButton_clicked();
void removeEntry(SendCoinsEntry* entry);
void updateDisplayUnit();
void updateInstantX();
void coinControlFeatureChanged(bool);
void coinControlButtonClicked();
void coinControlChangeChecked(int);
Expand Down
8 changes: 2 additions & 6 deletions src/wallet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1838,7 +1838,7 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, int64_t> >& vecSend,
LOCK2(cs_main, cs_wallet);
{
nFeeRet = nTransactionFee;
if(useIX && nFeeRet < CENT) nFeeRet = CENT;
if(useIX) nFeeRet = max(CENT, nFeeRet);
while (true)
{
wtxNew.vin.clear();
Expand Down Expand Up @@ -1912,13 +1912,9 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, int64_t> >& vecSend,

//over pay for denominated transactions
if(coin_type == ONLY_DENOMINATED) {
nFeeRet = nChange;
nFeeRet += nChange;
nChange = 0;
wtxNew.mapValue["DS"] = "1";
} else if(useIX && nFeeRet < CENT && nChange > (CENT-nFeeRet)) {
// IX has a minimum fee of 0.01 DRK
nChange -= CENT-nFeeRet;
nFeeRet = CENT;
}

if (nChange > 0)
Expand Down