From ad18b94e0eb94ad9ed2765667b5a78dd482dfb34 Mon Sep 17 00:00:00 2001 From: MASM fan Date: Sat, 3 Jan 2015 22:58:39 -0800 Subject: [PATCH] We don't need 32 bit integers for these counters --- src/main.h | 2 +- src/scrypt-generic.c | 11 ++++++----- src/scrypt.cpp | 8 ++++---- src/scrypt.h | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main.h b/src/main.h index 2cb3ea7..0ef9a9d 100644 --- a/src/main.h +++ b/src/main.h @@ -947,7 +947,7 @@ public: uint256 GetHash() const { - return scrypt_blockhash(CVOIDBEGIN(nVersion)); + return scrypt_blockhash((const uint8_t*)&nVersion); } int64_t GetBlockTime() const diff --git a/src/scrypt-generic.c b/src/scrypt-generic.c index 96bcb11..6339c25 100644 --- a/src/scrypt-generic.c +++ b/src/scrypt-generic.c @@ -39,10 +39,10 @@ // 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]); @@ -107,9 +107,10 @@ static INLINE void xor_salsa8(unsigned int B[16], const unsigned int Bx[16]) 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); diff --git a/src/scrypt.cpp b/src/scrypt.cpp index 06d1d23..5779127 100644 --- a/src/scrypt.cpp +++ b/src/scrypt.cpp @@ -8,14 +8,14 @@ #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]; @@ -23,9 +23,9 @@ uint256 scrypt_blockhash(const void* input) 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; } diff --git a/src/scrypt.h b/src/scrypt.h index b28d090..9a648d3 100644 --- a/src/scrypt.h +++ b/src/scrypt.h @@ -7,6 +7,6 @@ #include "util.h" #include "net.h" -uint256 scrypt_blockhash(const void* input); +uint256 scrypt_blockhash(const uint8_t* input); #endif // SCRYPT_MINE_H -- 1.7.1