Bitcoin Forum
April 20, 2024, 10:58:28 AM *
News: Latest Bitcoin Core release: 26.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: What does murmurhash do in BTC?  (Read 1109 times)
nuggetbram (OP)
Full Member
***
Offline Offline

Activity: 326
Merit: 100



View Profile
June 28, 2014, 03:02:53 AM
 #1

After inspecting bitcoin's hashing section, I discovered this in hash.cpp

Code:
unsigned int MurmurHash3(unsigned int nHashSeed, const std::vector<unsigned char>& vDataToHash)
{
    // The following is MurmurHash3 (x86_32), see http://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp
    uint32_t h1 = nHashSeed;
    const uint32_t c1 = 0xcc9e2d51;
    const uint32_t c2 = 0x1b873593;

    const int nblocks = vDataToHash.size() / 4;

    //----------
    // body
    const uint32_t * blocks = (const uint32_t *)(&vDataToHash[0] + nblocks*4);

    for(int i = -nblocks; i; i++)
    {
        uint32_t k1 = blocks[i];

        k1 *= c1;
        k1 = ROTL32(k1,15);
        k1 *= c2;

        h1 ^= k1;
        h1 = ROTL32(h1,13);
        h1 = h1*5+0xe6546b64;
    }

    //----------
    // tail
    const uint8_t * tail = (const uint8_t*)(&vDataToHash[0] + nblocks*4);

    uint32_t k1 = 0;

    switch(vDataToHash.size() & 3)
    {
    case 3: k1 ^= tail[2] << 16;
    case 2: k1 ^= tail[1] << 8;
    case 1: k1 ^= tail[0];
            k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1;
    };

    //----------
    // finalization
    h1 ^= vDataToHash.size();
    h1 ^= h1 >> 16;
    h1 *= 0x85ebca6b;
    h1 ^= h1 >> 13;
    h1 *= 0xc2b2ae35;
    h1 ^= h1 >> 16;

    return h1;
}

What/why is there murmurhash in the middle of bitcoin?

What does it do, excatly, and why have I never heard of this anywhere? I'm not very proficient with cryptography, so a detailed explanation would be great Wink

Thanks,
1713610708
Hero Member
*
Offline Offline

Posts: 1713610708

View Profile Personal Message (Offline)

Ignore
1713610708
Reply with quote  #2

1713610708
Report to moderator
If you see garbage posts (off-topic, trolling, spam, no point, etc.), use the "report to moderator" links. All reports are investigated, though you will rarely be contacted about your reports.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1713610708
Hero Member
*
Offline Offline

Posts: 1713610708

View Profile Personal Message (Offline)

Ignore
1713610708
Reply with quote  #2

1713610708
Report to moderator
1713610708
Hero Member
*
Offline Offline

Posts: 1713610708

View Profile Personal Message (Offline)

Ignore
1713610708
Reply with quote  #2

1713610708
Report to moderator
gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4158
Merit: 8382



View Profile WWW
June 28, 2014, 05:37:43 AM
 #2

What/why is there murmurhash in the middle of bitcoin?
What does it do, excatly, and why have I never heard of this anywhere? I'm not very proficient with cryptography, so a detailed explanation would be great Wink
It's not used for a cryptographic purpose.

See BIP0037 (or grep the code base for where it is used!).
nuggetbram (OP)
Full Member
***
Offline Offline

Activity: 326
Merit: 100



View Profile
June 28, 2014, 06:12:17 AM
 #3

What/why is there murmurhash in the middle of bitcoin?
What does it do, excatly, and why have I never heard of this anywhere? I'm not very proficient with cryptography, so a detailed explanation would be great Wink
It's not used for a cryptographic purpose.

See BIP0037 (or grep the code base for where it is used!).


Aah, that makes much more sense. Thanks!
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!