Welcome to the discussion thread for my ccminer fork.
It contains most algorithms, and was adapted to be usable on both linux and windows.
My releases are generally tuned with the Geforce GTX 750Ti, which was, and still is a good reference for tests (Linux + Windows) and has less hashrate drop in activity (unlike the 9xx and pascal series).
For a comprehensive list of the algorithms supported as well as details about the various configuration parameters, please check the ReadMe file.
Direct links
Windows Binaries : https://github.com/tpruvot/ccminer/releases
Source Code : https://github.com/tpruvot/ccminer
Linux, read first : https://github.com/tpruvot/ccminer/wiki/Compatibility
Sample Command Line : ccminer -a bitcore -o stratum+tcp://yiimp.eu:3556 -u 1Hpjgz8i4aRdnmLXm9Eri8fFgje2dA9BaQ -p c=BTX
http://cryptomining-blog.com/wp-content/uploads/2017/03/ccminer-20-tpruvot-580x293.jpg
void hashx7(void *state, const void *input, uint64_t timestamp)
{
uint32_t _ALIGN(64) hash[7][16];
uint32_t *hash0 = hash[0];
uint32_t *hash1 = hash[1];
uint32_t *hash2 = hash[2];
uint32_t *hash3 = hash[3];
uint32_t *hash4 = hash[4];
uint32_t *hash5 = hash[5];
uint32_t *hash6 = hash[6];
x7_context_overlay ctx;
// Blake512
sph_blake512_init(&ctx.blake);
sph_blake512(&ctx.blake, ×tamp, sizeof(timestamp));
sph_blake512(&ctx.blake, input, 80);
sph_blake512_close(&ctx.blake, hash0);
// BMW512
sph_bmw512_init(&ctx.bmw);
sph_bmw512(&ctx.bmw, hash0, 64);
sph_bmw512_close(&ctx.bmw, hash1);
// XOR with hash0
for (int i = 0; i < 64; ++i) {
hash1 ^= hash0;
}
// groestl
#if defined(__AES__)
groestl512_full(&ctx.groestl, (char*)hash2, (const char*)hash1, 512);
#else
sph_groestl512_init(&ctx.groestl);
sph_groestl512(&ctx.groestl, hash1, 64);
sph_groestl512_close(&ctx.groestl, hash2);
#endif
// Skein512
sph_skein512_init(&ctx.skein);
sph_skein512(&ctx.skein, hash2, 64);
sph_skein512_close(&ctx.skein, hash3);
// XOR with hash2
for (int i = 0; i < 64; ++i) {
hash3 ^= hash2;
}
// Keccak512
sph_keccak512_init(&ctx.keccak);
sph_keccak512(&ctx.keccak, hash3, 64);
sph_keccak512_close(&ctx.keccak, hash4);
#if defined(__aarch64__)
sph_luffa512_init(&ctx.luffa);
sph_luffa512(&ctx.luffa, hash4, 64);
sph_luffa512_close(&ctx.luffa, hash5);
#else
luffa_full(&ctx.luffa, hash5, 512, hash4, 64);
#endif
#if defined(__AES__)
echo_full(&ctx.echo, (BitSequence *)hash6, 512, (const BitSequence *)hash5, 64);
#else
sph_echo512_init(&ctx.echo);
sph_echo512(&ctx.echo, hash5, 64);
sph_echo512_close(&ctx.echo, hash6);
#endif
// XOR with hash5
for (int i = 0; i < 64; ++i) {
hash6 ^= hash5;
}
memcpy(state, hash6, 32);
}
Hello! How does ccminer handle the algorithm with timestamp in sph_blake512(&ctx.blake, ×tamp, sizeof(timestamp)); algorithm?
All other algorithm problems have been solved, but I don't know how to deal with the timestamp.