From 5202470300632a3aa3b5bc6f9a34622264d005be Mon Sep 17 00:00:00 2001 From: fsb4000 Date: Thu, 20 Nov 2014 07:00:38 +0600 Subject: [PATCH] columnPoSReward MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Добавлен столбец показывающий потенциальную PoS награду. --- src/kernelrecord.cpp | 15 +++++++++++++++ src/kernelrecord.h | 1 + src/qt/locale/bitcoin_ru.ts | 12 ++++++++++++ src/qt/mintingtablemodel.cpp | 31 ++++++++++++++++++++++++------- src/qt/mintingtablemodel.h | 4 +++- src/qt/mintingview.cpp | 7 +++++-- 6 files changed, 60 insertions(+), 10 deletions(-) diff --git a/src/kernelrecord.cpp b/src/kernelrecord.cpp index 8c1d778..2c6f2d9 100644 --- a/src/kernelrecord.cpp +++ b/src/kernelrecord.cpp @@ -4,6 +4,8 @@ #include "base58.h" #include "main.h" +#include + using namespace std; bool KernelRecord::showTransaction(const CWalletTx &wtx) @@ -75,6 +77,19 @@ int64 KernelRecord::getAge() const return (GetAdjustedTime() - nTime) / 86400; } +double KernelRecord::getPoSReward(double difficulty, int minutes) +{ + double PoSReward; + int nWeight = GetAdjustedTime() - nTime + minutes * 60; + if( nWeight < nStakeMinAge) + return 0; + uint64 coinAge = (nValue * nWeight ) / (COIN * 86400); + double nRewardCoinYear = floor(pow((0.03125 / difficulty), 1.0/3) *100)/100; + PoSReward = (coinAge * nRewardCoinYear )/365; + PoSReward = min(PoSReward,10.0); + return PoSReward; +} + double KernelRecord::getProbToMintStake(double difficulty, int timeOffset) const { //double maxTarget = pow(static_cast(2), 224); diff --git a/src/kernelrecord.h b/src/kernelrecord.h index d54e551..41b30ed 100644 --- a/src/kernelrecord.h +++ b/src/kernelrecord.h @@ -43,6 +43,7 @@ public: int64 getAge() const; double getProbToMintStake(double difficulty, int timeOffset = 0) const; double getProbToMintWithinNMinutes(double difficulty, int minutes); + double getPoSReward(double difficulty, int timeOffset); protected: int prevMinutes; double prevDifficulty; diff --git a/src/qt/locale/bitcoin_ru.ts b/src/qt/locale/bitcoin_ru.ts index 2cd4930..b71a3b5 100644 --- a/src/qt/locale/bitcoin_ru.ts +++ b/src/qt/locale/bitcoin_ru.ts @@ -92,6 +92,10 @@ Вероятность PoS + MintReward + Награда PoS + + minutes минут @@ -131,10 +135,18 @@ Chance to mint a block within given time interval. Шанс найти блок в течение выбранного временного интервала. + + The size of the potential rewards if the block is found at the beginning and the end given time interval. + Размер потенциальной награды если блок найден в начале и конце выбранного временного интервала. + QObject + Potential PoS reward = from %1 to %2 + Потенциальная PoS награда = от %1 до %2 + + %1 d %1 д diff --git a/src/qt/mintingtablemodel.cpp b/src/qt/mintingtablemodel.cpp index 4973480..f97520c 100644 --- a/src/qt/mintingtablemodel.cpp +++ b/src/qt/mintingtablemodel.cpp @@ -24,12 +24,13 @@ extern double GetDifficulty(const CBlockIndex* blockindex); static int column_alignments[] = { - Qt::AlignLeft|Qt::AlignVCenter, - Qt::AlignLeft|Qt::AlignVCenter, - Qt::AlignRight|Qt::AlignVCenter, - Qt::AlignRight|Qt::AlignVCenter, - Qt::AlignRight|Qt::AlignVCenter, - Qt::AlignRight|Qt::AlignVCenter + Qt::AlignCenter|Qt::AlignVCenter, + Qt::AlignCenter|Qt::AlignVCenter, + Qt::AlignCenter|Qt::AlignVCenter, + Qt::AlignCenter|Qt::AlignVCenter, + Qt::AlignCenter|Qt::AlignVCenter, + Qt::AlignCenter|Qt::AlignVCenter, + Qt::AlignCenter|Qt::AlignVCenter }; struct TxLessThan @@ -202,7 +203,7 @@ MintingTableModel::MintingTableModel(CWallet *wallet, WalletModel *parent): mintingInterval(10), priv(new MintingTablePriv(wallet, this)) { - columns << tr("Transaction") << tr("Address") << tr("Age") << tr("Balance") << tr("CoinDay") << tr("MintProbability"); + columns << tr("Transaction") << tr("Address") << tr("Age") << tr("Balance") << tr("CoinDay") << tr("MintProbability") << tr("MintReward"); priv->refreshWallet(); QTimer *timer = new QTimer(this); @@ -273,6 +274,8 @@ QVariant MintingTableModel::data(const QModelIndex &index, int role) const return formatTxCoinDay(rec); case MintProbability: return formatDayToMint(rec); + case MintReward: + return formatTxPoSReward(rec); } break; case Qt::TextAlignmentRole: @@ -316,6 +319,8 @@ QVariant MintingTableModel::data(const QModelIndex &index, int role) const return rec->nValue; case MintProbability: return getDayToMint(rec); + case MintReward: + return formatTxPoSReward(rec); } break; case Qt::BackgroundColorRole: @@ -359,6 +364,16 @@ QString MintingTableModel::lookupAddress(const std::string &address, bool toolti return description; } +QString MintingTableModel::formatTxPoSReward(KernelRecord *wtx) const +{ + QString posReward; + const CBlockIndex *p = GetLastBlockIndex(pindexBest, true); + double difficulty = GetDifficulty(p); + posReward += QString(QObject::tr("Potential PoS reward = from %1 to %2 ")).arg(QString::number(wtx->getPoSReward(difficulty, 0),'f', 6), + QString::number(wtx->getPoSReward(difficulty, mintingInterval),'f', 6)); + return posReward; +} + double MintingTableModel::getDayToMint(KernelRecord *wtx) const { const CBlockIndex *p = GetLastBlockIndex(pindexBest, true); @@ -428,6 +443,8 @@ QVariant MintingTableModel::headerData(int section, Qt::Orientation orientation, return tr("Coin age in the output."); case MintProbability: return tr("Chance to mint a block within given time interval."); + case MintReward: + return tr("The size of the potential rewards if the block is found at the beginning and the end given time interval."); } } } diff --git a/src/qt/mintingtablemodel.h b/src/qt/mintingtablemodel.h index c265ce5..68f963c 100644 --- a/src/qt/mintingtablemodel.h +++ b/src/qt/mintingtablemodel.h @@ -23,7 +23,8 @@ public: Age = 2, Balance = 3, CoinDay = 4, - MintProbability = 5 + MintProbability = 5, + MintReward = 6 }; @@ -51,6 +52,7 @@ private: QString formatTxAge(const KernelRecord *wtx) const; QString formatTxBalance(const KernelRecord *wtx) const; QString formatTxCoinDay(const KernelRecord *wtx) const; + QString formatTxPoSReward(KernelRecord *wtx) const; private slots: void update(); diff --git a/src/qt/mintingview.cpp b/src/qt/mintingview.cpp index 07ecadf..40bd5ee 100644 --- a/src/qt/mintingview.cpp +++ b/src/qt/mintingview.cpp @@ -118,7 +118,7 @@ void MintingView::setModel(WalletModel *model) mintingView->verticalHeader()->hide(); mintingView->horizontalHeader()->resizeSection( - MintingTableModel::Address, 420); + MintingTableModel::Address, 300); #if QT_VERSION < 0x050000 mintingView->horizontalHeader()->setResizeMode( MintingTableModel::TxHash, QHeaderView::Stretch); @@ -133,7 +133,9 @@ void MintingView::setModel(WalletModel *model) mintingView->horizontalHeader()->resizeSection( MintingTableModel::CoinDay,120); mintingView->horizontalHeader()->resizeSection( - MintingTableModel::MintProbability, 160); + MintingTableModel::MintProbability, 120); + mintingView->horizontalHeader()->resizeSection( + MintingTableModel::MintReward, 300); } } @@ -179,6 +181,7 @@ void MintingView::exportClicked() writer.addColumn(tr("CoinDay"), 0, MintingTableModel::CoinDay); writer.addColumn(tr("Balance"), 0, MintingTableModel::Balance); writer.addColumn(tr("MintingProbability"), 0, MintingTableModel::MintProbability); + writer.addColumn(tr("MintingReward"), 0, MintingTableModel::MintReward); if(!writer.write()) { -- 1.7.1