Skip to content

Commit

Permalink
change mixin semantics to ring size
Browse files Browse the repository at this point in the history
add support for ring size 1, make 3 default
  • Loading branch information
stoffu committed Mar 29, 2018
1 parent 8887b37 commit 948e80e
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 27 deletions.
7 changes: 6 additions & 1 deletion components/PrivacyLevel.qml
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ Item {
width: row.x

color: {
if(item.fillLevel === 0) return "#FF4F41"
if(item.fillLevel < 3) return "#5FBCD3"
if(item.fillLevel < 13) return "#AAFFBB"
return "#36B25C"
Expand Down Expand Up @@ -125,7 +126,7 @@ Item {
id: delegateItem2
currentX: x + row2.x
currentIndex: index
mainTick: currentIndex === 0
mainTick: currentIndex === 1
Component.onCompleted: {
row.positions[currentIndex] = delegateItem2
}
Expand All @@ -151,5 +152,9 @@ Item {
}
}
}
Component.onCompleted: {
fillRect.width = Qt.binding(function(){ return row.positions[1].currentX + row.x })
item.fillLevel = 1
}
}
}
2 changes: 1 addition & 1 deletion components/TickDelegate.qml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Item {
font.pixelSize: 12 * scaleRatio
color: "#4A4949"
text: {
if(currentIndex === 0) return qsTr("Default") + translationManager.emptyString
if(currentIndex === 1) return qsTr("Default") + translationManager.emptyString
if(currentIndex === 13) return qsTr("High") + translationManager.emptyString
return ""
}
Expand Down
12 changes: 6 additions & 6 deletions main.qml
Original file line number Diff line number Diff line change
Expand Up @@ -554,7 +554,7 @@ ApplicationWindow {
return false;
}

function onTransactionCreated(pendingTransaction,address,paymentId,mixinCount){
function onTransactionCreated(pendingTransaction,address,paymentId,ringSize){
console.log("Transaction created");
hideProcessingSplash();
transaction = pendingTransaction;
Expand Down Expand Up @@ -595,7 +595,7 @@ ApplicationWindow {
+ (paymentId === "" ? "" : (qsTr("\nPayment ID: ") + paymentId))
+ qsTr("\n\nAmount: ") + walletManager.displayAmount(transaction.amount)
+ qsTr("\nFee: ") + walletManager.displayAmount(transaction.fee)
+ qsTr("\n\nRingsize: ") + (mixinCount + 1)
+ qsTr("\n\nRingsize: ") + (ringSize === 0 ? currentWallet.defaultRingSize : ringSize)
+ qsTr("\n\Number of transactions: ") + transaction.txCount
+ (transactionDescription === "" ? "" : (qsTr("\n\nDescription: ") + transactionDescription))
+ translationManager.emptyString
Expand All @@ -606,12 +606,12 @@ ApplicationWindow {


// called on "transfer"
function handlePayment(address, paymentId, amount, mixinCount, priority, description, createFile) {
function handlePayment(address, paymentId, amount, ringSize, priority, description, createFile) {
console.log("Creating transaction: ")
console.log("\taddress: ", address,
", payment_id: ", paymentId,
", amount: ", amount,
", mixins: ", mixinCount,
", ring_size: ", ringSize,
", priority: ", priority,
", description: ", description);

Expand Down Expand Up @@ -651,9 +651,9 @@ ApplicationWindow {
}

if (amount === "(all)")
currentWallet.createTransactionAllAsync(address, paymentId, mixinCount, priority);
currentWallet.createTransactionAllAsync(address, paymentId, ringSize, priority);
else
currentWallet.createTransactionAsync(address, paymentId, amountxmr, mixinCount, priority);
currentWallet.createTransactionAsync(address, paymentId, amountxmr, ringSize, priority);
}

//Choose where to save transaction
Expand Down
4 changes: 2 additions & 2 deletions pages/Transfer.qml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Rectangle {
property bool showAdvanced: false

function scaleValueToMixinCount(scaleValue) {
var scaleToMixinCount = [6,7,8,9,10,11,12,13,14,16,18,20,22,25];
var scaleToMixinCount = [0,2,3,4,5,6,7,8,9,11,13,15,17,19];
if (scaleValue < scaleToMixinCount.length) {
return scaleToMixinCount[scaleValue];
} else {
Expand Down Expand Up @@ -337,7 +337,7 @@ Rectangle {
console.log("amount: " + amountLine.text)
addressLine.text = addressLine.text.trim()
paymentIdLine.text = paymentIdLine.text.trim()
root.paymentClicked(addressLine.text, paymentIdLine.text, amountLine.text, scaleValueToMixinCount(privacyLevelItem.fillLevel),
root.paymentClicked(addressLine.text, paymentIdLine.text, amountLine.text, persistentSettings.transferShowAdvanced ? (scaleValueToMixinCount(privacyLevelItem.fillLevel) + 1) : 0,
priority, descriptionLine.text)

}
Expand Down
30 changes: 18 additions & 12 deletions src/libwalletqt/Wallet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -373,58 +373,58 @@ void Wallet::pauseRefresh() const
}

PendingTransaction *Wallet::createTransaction(const QString &dst_addr, const QString &payment_id,
quint64 amount, quint32 mixin_count,
quint64 amount, quint32 ring_size,
PendingTransaction::Priority priority)
{
std::set<uint32_t> subaddr_indices;
Monero::PendingTransaction * ptImpl = m_walletImpl->createTransaction(
dst_addr.toStdString(), payment_id.toStdString(), amount, mixin_count,
dst_addr.toStdString(), payment_id.toStdString(), amount, ring_size,
static_cast<Monero::PendingTransaction::Priority>(priority), currentSubaddressAccount(), subaddr_indices);
PendingTransaction * result = new PendingTransaction(ptImpl,0);
return result;
}

void Wallet::createTransactionAsync(const QString &dst_addr, const QString &payment_id,
quint64 amount, quint32 mixin_count,
quint64 amount, quint32 ring_size,
PendingTransaction::Priority priority)
{
QFuture<PendingTransaction*> future = QtConcurrent::run(this, &Wallet::createTransaction,
dst_addr, payment_id,amount, mixin_count, priority);
dst_addr, payment_id,amount, ring_size, priority);
QFutureWatcher<PendingTransaction*> * watcher = new QFutureWatcher<PendingTransaction*>();

connect(watcher, &QFutureWatcher<PendingTransaction*>::finished,
this, [this, watcher,dst_addr,payment_id,mixin_count]() {
this, [this, watcher,dst_addr,payment_id,ring_size]() {
QFuture<PendingTransaction*> future = watcher->future();
watcher->deleteLater();
emit transactionCreated(future.result(),dst_addr,payment_id,mixin_count);
emit transactionCreated(future.result(),dst_addr,payment_id,ring_size);
});
watcher->setFuture(future);
}

PendingTransaction *Wallet::createTransactionAll(const QString &dst_addr, const QString &payment_id,
quint32 mixin_count, PendingTransaction::Priority priority)
quint32 ring_size, PendingTransaction::Priority priority)
{
std::set<uint32_t> subaddr_indices;
Monero::PendingTransaction * ptImpl = m_walletImpl->createTransaction(
dst_addr.toStdString(), payment_id.toStdString(), Monero::optional<uint64_t>(), mixin_count,
dst_addr.toStdString(), payment_id.toStdString(), Monero::optional<uint64_t>(), ring_size,
static_cast<Monero::PendingTransaction::Priority>(priority), currentSubaddressAccount(), subaddr_indices);
PendingTransaction * result = new PendingTransaction(ptImpl, this);
return result;
}

void Wallet::createTransactionAllAsync(const QString &dst_addr, const QString &payment_id,
quint32 mixin_count,
quint32 ring_size,
PendingTransaction::Priority priority)
{
QFuture<PendingTransaction*> future = QtConcurrent::run(this, &Wallet::createTransactionAll,
dst_addr, payment_id, mixin_count, priority);
dst_addr, payment_id, ring_size, priority);
QFutureWatcher<PendingTransaction*> * watcher = new QFutureWatcher<PendingTransaction*>();

connect(watcher, &QFutureWatcher<PendingTransaction*>::finished,
this, [this, watcher,dst_addr,payment_id,mixin_count]() {
this, [this, watcher,dst_addr,payment_id,ring_size]() {
QFuture<PendingTransaction*> future = watcher->future();
watcher->deleteLater();
emit transactionCreated(future.result(),dst_addr,payment_id,mixin_count);
emit transactionCreated(future.result(),dst_addr,payment_id,ring_size);
});
watcher->setFuture(future);
}
Expand Down Expand Up @@ -733,6 +733,12 @@ QString Wallet::getWalletLogPath() const
#endif
}

quint32 Wallet::getDefaultRingSize() const
{
const quint32 r = m_walletImpl->defaultRingSize();
return r == 0 ? 3 : r;
}

bool Wallet::blackballOutput(const QString &pubkey)
{
QList<QString> list;
Expand Down
13 changes: 8 additions & 5 deletions src/libwalletqt/Wallet.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class Wallet : public QObject
Q_PROPERTY(QString daemonLogPath READ getDaemonLogPath CONSTANT)
Q_PROPERTY(QString walletLogPath READ getWalletLogPath CONSTANT)
Q_PROPERTY(quint64 walletCreationHeight READ getWalletCreationHeight WRITE setWalletCreationHeight NOTIFY walletCreationHeightChanged)
Q_PROPERTY(quint32 defaultRingSize READ getDefaultRingSize)

public:

Expand Down Expand Up @@ -178,21 +179,21 @@ class Wallet : public QObject

//! creates transaction
Q_INVOKABLE PendingTransaction * createTransaction(const QString &dst_addr, const QString &payment_id,
quint64 amount, quint32 mixin_count,
quint64 amount, quint32 ring_size,
PendingTransaction::Priority priority);

//! creates async transaction
Q_INVOKABLE void createTransactionAsync(const QString &dst_addr, const QString &payment_id,
quint64 amount, quint32 mixin_count,
quint64 amount, quint32 ring_size,
PendingTransaction::Priority priority);

//! creates transaction with all outputs
Q_INVOKABLE PendingTransaction * createTransactionAll(const QString &dst_addr, const QString &payment_id,
quint32 mixin_count, PendingTransaction::Priority priority);
quint32 ring_size, PendingTransaction::Priority priority);

//! creates async transaction with all outputs
Q_INVOKABLE void createTransactionAllAsync(const QString &dst_addr, const QString &payment_id,
quint32 mixin_count, PendingTransaction::Priority priority);
quint32 ring_size, PendingTransaction::Priority priority);

//! creates sweep unmixable transaction
Q_INVOKABLE PendingTransaction * createSweepUnmixableTransaction();
Expand Down Expand Up @@ -277,6 +278,8 @@ class Wallet : public QObject
QString getDaemonLogPath() const;
QString getWalletLogPath() const;

quint32 getDefaultRingSize() const;

// Blackalled outputs
Q_INVOKABLE bool blackballOutput(const QString &pubkey);
Q_INVOKABLE bool blackballOutputs(const QList<QString> &pubkeys, bool add);
Expand Down Expand Up @@ -311,7 +314,7 @@ class Wallet : public QObject
void walletCreationHeightChanged();

// emitted when transaction is created async
void transactionCreated(PendingTransaction * transaction, QString address, QString paymentId, quint32 mixinCount);
void transactionCreated(PendingTransaction * transaction, QString address, QString paymentId, quint32 ringSize);

void connectionStatusChanged(ConnectionStatus status) const;

Expand Down

0 comments on commit 948e80e

Please sign in to comment.