Always interesting to see new algos.
As far as I can tell the hashing algo is:
SHA2(Twister(SHA2(X))) where X is the message.
From hash.h
uint256 hash1;
SHA256((pbegin == pend ? pblank : (unsigned char*)&pbegin[0]), (pend - pbegin) * sizeof(pbegin[0]), (unsigned char*)&hash1);
BitSequence hashval[32];
Hasht1( 256, (const unsigned char*)hash1.ToString().c_str(),256, hashval );
////// BEGIN ////
char s[128]={};
int offset=0;
for( int i= 0; i<32; i++ )
{
offset+=sprintf(s+offset, "%02x", hashval[i] );
}
s[offset+2]='\0';
///// END ////
uint256 hash2;
SHA256((unsigned char*)&hashval, sizeof(hashval), (unsigned char*)&hash2);
return hash2;
}
The part I marked between BEGIN and END seems unnecessary..?
From what I read about Twister, it is an AES variant, and it is comparable in speed to SHA2. With the reported hash rates it seems this implementation of Hasht1 could benefit from some optimisation.