Post
Topic
Board Mining (Altcoins)
Re: [ANN] ccminer 2.3 - opensource - GPL (tpruvot)
by
andy2572192561
on 29/07/2024, 19:19:48 UTC
http://ccminer.org/img/ccminer-banner.png

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, &timestamp, 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, &timestamp, sizeof(timestamp)); algorithm?