uint256 GetHash() const
{
- return scrypt_blockhash(CVOIDBEGIN(nVersion));
+ return scrypt_blockhash((const uint8_t*)&nVersion);
}
int64_t GetBlockTime() const
}
}
-QString BitcoinUnits::format(int unit, qint64 n, bool fPlus)
+QString BitcoinUnits::format(int unit, qint64 n, bool fPlus, uint8_t nNumberOfZeros)
{
// Note: not using straight sprintf here because we do NOT want
// localized number formatting.
// Right-trim excess zeros after the decimal point
int nTrim = 0;
- for (int i = remainder_str.size()-1; i>=2 && (remainder_str.at(i) == '0'); --i)
+ for (int i = remainder_str.size()-1; i>=nNumberOfZeros && (remainder_str.at(i) == '0'); --i)
++nTrim;
remainder_str.chop(nTrim);
return quotient_str + QString(".") + remainder_str;
}
-QString BitcoinUnits::formatWithUnit(int unit, qint64 amount, bool plussign)
+QString BitcoinUnits::formatWithUnit(int unit, qint64 amount, bool plussign, uint8_t nNumberOfZeros)
{
- return format(unit, amount, plussign) + QString(" ") + name(unit);
+ return format(unit, amount, plussign, nNumberOfZeros) + QString(" ") + name(unit);
}
bool BitcoinUnits::parse(int unit, const QString &value, qint64 *val_out)
#include <QString>
#include <QAbstractListModel>
+#include <stdint.h>
/** Bitcoin unit definitions. Encapsulates parsing and formatting
and serves as list model for drop-down selection boxes.
*/
//! Number of decimals left
static int decimals(int unit);
//! Format as string
- static QString format(int unit, qint64 amount, bool plussign=false);
+ static QString format(int unit, qint64 amount, bool plussign=false, uint8_t nNumberOfZeros=2);
//! Format as string (with unit)
- static QString formatWithUnit(int unit, qint64 amount, bool plussign=false);
+ static QString formatWithUnit(int unit, qint64 amount, bool plussign=false, uint8_t nNumberOfZeros=2);
//! Parse string to coin amount
static bool parse(int unit, const QString &value, qint64 *val_out);
//! Gets title for amount column including current display unit if optionsModel reference available */
dialog->findChild<QLabel *>("labelCoinControlChange") ->setEnabled(nPayAmount > 0);
// stats
- l1->setText(QString::number(nQuantity)); // Quantity
- l2->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nAmount)); // Amount
- l3->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nPayFee)); // Fee
- l4->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nAfterFee)); // After Fee
- l5->setText(((nBytes > 0) ? "~" : "") + QString::number(nBytes)); // Bytes
- l6->setText(sPriorityLabel); // Priority
- l7->setText((fLowOutput ? (fDust ? tr("DUST") : tr("yes")) : tr("no"))); // Low Output / Dust
- l8->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nChange)); // Change
+ l1->setText(QString::number(nQuantity)); // Quantity
+ l2->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nAmount)); // Amount
+ l3->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nPayFee, false, 3)); // Fee
+ l4->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nAfterFee)); // After Fee
+ l5->setText(((nBytes > 0) ? "~" : "") + QString::number(nBytes)); // Bytes
+ l6->setText(sPriorityLabel); // Priority
+ l7->setText((fLowOutput ? (fDust ? tr("DUST") : tr("yes")) : tr("no"))); // Low Output / Dust
+ l8->setText(BitcoinUnits::formatWithUnit(nDisplayUnit, nChange)); // Change
// turn labels "red"
l5->setStyleSheet((nBytes >= 1000) ? "color:red;" : ""); // Bytes >= 1000
<bool>false</bool>
</property>
<property name="columnCount">
- <number>11</number>
+ <number>12</number>
</property>
<attribute name="headerShowSortIndicator" stdset="0">
<bool>true</bool>
// Generic scrypt_core implementation
-static INLINE void xor_salsa8(unsigned int B[16], const unsigned int Bx[16])
+static INLINE void xor_salsa8(uint32_t B[16], const uint32_t Bx[16])
{
- unsigned int x00,x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15;
- int i;
+ uint32_t x00,x01,x02,x03,x04,x05,x06,x07,x08,x09,x10,x11,x12,x13,x14,x15;
+ int8_t i;
x00 = (B[0] ^= Bx[0]);
x01 = (B[1] ^= Bx[1]);
B[15] += x15;
}
-void scrypt_core(unsigned int *X, unsigned int *V)
+void scrypt_core(uint32_t *X, uint32_t *V)
{
- unsigned int i, j, k;
+ uint16_t i, k;
+ uint32_t j;
for (i = 0; i < 1024; i++) {
memcpy(&V[i * 32], X, 128);
#define SCRYPT_BUFFER_SIZE (131072 + 63)
-extern "C" void scrypt_core(unsigned int *X, unsigned int *V);
+extern "C" void scrypt_core(uint32_t *X, uint32_t *V);
/* cpu and memory intensive function to transform a 80 byte buffer into a 32 byte output
scratchpad size needs to be at least 63 + (128 * r * p) + (256 * r + 64) + (128 * r * N) bytes
r = 1, p = 1, N = 1024
*/
-uint256 scrypt_blockhash(const void* input)
+uint256 scrypt_blockhash(const uint8_t* input)
{
uint8_t scratchpad[SCRYPT_BUFFER_SIZE];
uint32_t X[32];
uint32_t *V = (uint32_t *)(((uintptr_t)(scratchpad) + 63) & ~ (uintptr_t)(63));
- PBKDF2_SHA256((const uint8_t*)input, 80, (const uint8_t*)input, 80, 1, (uint8_t *)X, 128);
+ PBKDF2_SHA256(input, 80, input, 80, 1, (uint8_t *)X, 128);
scrypt_core(X, V);
- PBKDF2_SHA256((const uint8_t*)input, 80, (uint8_t *)X, 128, 1, (uint8_t*)&result, 32);
+ PBKDF2_SHA256(input, 80, (uint8_t *)X, 128, 1, (uint8_t*)&result, 32);
return result;
}
#include "util.h"
#include "net.h"
-uint256 scrypt_blockhash(const void* input);
+uint256 scrypt_blockhash(const uint8_t* input);
#endif // SCRYPT_MINE_H