Inside Bitcoin
Opening the selected file…
Inside Bitcoin
Opening the selected file…
The code behind the network, with room to understand it.
Release published 2026-10-28 · Snapshot fetched 2026-11-01. Latest stable release at fetch time; development branches and Git history are excluded. Only the selected code window and visible folders load here.
251QuadRound(as0, as1, 0xe15d5b1658f4ca9dull, 0xde0b7a040a35b689ull);252QuadRound(bs0, bs1, 0xe15d5b1658f4ca9dull, 0xde0b7a040a35b689ull);253QuadRound(as0, as1, 0x6fab9537a507ea32ull, 0x37088980007f3e86ull);254QuadRound(bs0, bs1, 0x6fab9537a507ea32ull, 0x37088980007f3e86ull);255QuadRound(as0, as1, 0xc0bbbe37cdaa3b6dull, 0x0d8cd6f117406110ull);256QuadRound(bs0, bs1, 0xc0bbbe37cdaa3b6dull, 0x0d8cd6f117406110ull);257QuadRound(as0, as1, 0x6fd15ca70b02e931ull, 0xdb48a36383613bdaull);258QuadRound(bs0, bs1, 0x6fd15ca70b02e931ull, 0xdb48a36383613bdaull);259QuadRound(as0, as1, 0x6d4378906ed41a95ull, 0x31338431521afacaull);260QuadRound(bs0, bs1, 0x6d4378906ed41a95ull, 0x31338431521afacaull);261QuadRound(as0, as1, 0x532fb63cb5c9a0e6ull, 0x9eccabbdc39c91f2ull);262QuadRound(bs0, bs1, 0x532fb63cb5c9a0e6ull, 0x9eccabbdc39c91f2ull);263QuadRound(as0, as1, 0x4c191d76a4954b68ull, 0x07237ea3d2c741c6ull);264QuadRound(bs0, bs1, 0x4c191d76a4954b68ull, 0x07237ea3d2c741c6ull);265as0 = _mm_add_epi32(as0, aso0);266bs0 = _mm_add_epi32(bs0, bso0);267as1 = _mm_add_epi32(as1, aso1);268bs1 = _mm_add_epi32(bs1, bso1);270/* Extract hash */271Unshuffle(as0, as1);272Unshuffle(bs0, bs1);273am0 = as0;274bm0 = bs0;275am1 = as1;276bm1 = bs1;278/* Transform 3 */279bs0 = as0 = _mm_load_si128((const __m128i*)INIT0);280bs1 = as1 = _mm_load_si128((const __m128i*)INIT1);281QuadRound(as0, as1, am0, 0xe9b5dba5B5c0fbcfull, 0x71374491428a2f98ull);282QuadRound(bs0, bs1, bm0, 0xe9b5dba5B5c0fbcfull, 0x71374491428a2f98ull);283QuadRound(as0, as1, am1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull);284QuadRound(bs0, bs1, bm1, 0xab1c5ed5923f82a4ull, 0x59f111f13956c25bull);285ShiftMessageA(am0, am1);286ShiftMessageA(bm0, bm1);287bm2 = am2 = _mm_set_epi64x(0x0ull, 0x80000000ull);288QuadRound(as0, as1, 0x550c7dc3243185beull, 0x12835b015807aa98ull);289QuadRound(bs0, bs1, 0x550c7dc3243185beull, 0x12835b015807aa98ull);290ShiftMessageA(am1, am2);291ShiftMessageA(bm1, bm2);292bm3 = am3 = _mm_set_epi64x(0x10000000000ull, 0x0ull);293QuadRound(as0, as1, 0xc19bf2749bdc06a7ull, 0x80deb1fe72be5d74ull);294QuadRound(bs0, bs1, 0xc19bf2749bdc06a7ull, 0x80deb1fe72be5d74ull);295ShiftMessageB(am2, am3, am0);296ShiftMessageB(bm2, bm3, bm0);297QuadRound(as0, as1, am0, 0x240ca1cc0fc19dc6ull, 0xefbe4786e49b69c1ull);298QuadRound(bs0, bs1, bm0, 0x240ca1cc0fc19dc6ull, 0xefbe4786e49b69c1ull);299ShiftMessageB(am3, am0, am1);300ShiftMessageB(bm3, bm0, bm1);301QuadRound(as0, as1, am1, 0x76f988da5cb0a9dcull, 0x4a7484aa2de92c6full);302QuadRound(bs0, bs1, bm1, 0x76f988da5cb0a9dcull, 0x4a7484aa2de92c6full);303ShiftMessageB(am0, am1, am2);304ShiftMessageB(bm0, bm1, bm2);305QuadRound(as0, as1, am2, 0xbf597fc7b00327c8ull, 0xa831c66d983e5152ull);306QuadRound(bs0, bs1, bm2, 0xbf597fc7b00327c8ull, 0xa831c66d983e5152ull);307ShiftMessageB(am1, am2, am3);308ShiftMessageB(bm1, bm2, bm3);309QuadRound(as0, as1, am3, 0x1429296706ca6351ull, 0xd5a79147c6e00bf3ull);310QuadRound(bs0, bs1, bm3, 0x1429296706ca6351ull, 0xd5a79147c6e00bf3ull);311ShiftMessageB(am2, am3, am0);312ShiftMessageB(bm2, bm3, bm0);313QuadRound(as0, as1, am0, 0x53380d134d2c6dfcull, 0x2e1b213827b70a85ull);314QuadRound(bs0, bs1, bm0, 0x53380d134d2c6dfcull, 0x2e1b213827b70a85ull);315ShiftMessageB(am3, am0, am1);316ShiftMessageB(bm3, bm0, bm1);317QuadRound(as0, as1, am1, 0x92722c8581c2c92eull, 0x766a0abb650a7354ull);318QuadRound(bs0, bs1, bm1, 0x92722c8581c2c92eull, 0x766a0abb650a7354ull);319ShiftMessageB(am0, am1, am2);320ShiftMessageB(bm0, bm1, bm2);321QuadRound(as0, as1, am2, 0xc76c51a3c24b8b70ull, 0xa81a664ba2bfe8A1ull);322QuadRound(bs0, bs1, bm2, 0xc76c51a3c24b8b70ull, 0xa81a664ba2bfe8A1ull);323ShiftMessageB(am1, am2, am3);324ShiftMessageB(bm1, bm2, bm3);325QuadRound(as0, as1, am3, 0x106aa070f40e3585ull, 0xd6990624d192e819ull);326QuadRound(bs0, bs1, bm3, 0x106aa070f40e3585ull, 0xd6990624d192e819ull);327ShiftMessageB(am2, am3, am0);328ShiftMessageB(bm2, bm3, bm0);329QuadRound(as0, as1, am0, 0x34b0bcb52748774cull, 0x1e376c0819a4c116ull);330QuadRound(bs0, bs1, bm0, 0x34b0bcb52748774cull, 0x1e376c0819a4c116ull);331ShiftMessageB(am3, am0, am1);332ShiftMessageB(bm3, bm0, bm1);333QuadRound(as0, as1, am1, 0x682e6ff35b9cca4full, 0x4ed8aa4a391c0cb3ull);334QuadRound(bs0, bs1, bm1, 0x682e6ff35b9cca4full, 0x4ed8aa4a391c0cb3ull);335ShiftMessageC(am0, am1, am2);336ShiftMessageC(bm0, bm1, bm2);337QuadRound(as0, as1, am2, 0x8cc7020884c87814ull, 0x78a5636f748f82eeull);338QuadRound(bs0, bs1, bm2, 0x8cc7020884c87814ull, 0x78a5636f748f82eeull);339ShiftMessageC(am1, am2, am3);340ShiftMessageC(bm1, bm2, bm3);341QuadRound(as0, as1, am3, 0xc67178f2bef9a3f7ull, 0xa4506ceb90befffaull);342QuadRound(bs0, bs1, bm3, 0xc67178f2bef9a3f7ull, 0xa4506ceb90befffaull);343as0 = _mm_add_epi32(as0, _mm_load_si128((const __m128i*)INIT0));344bs0 = _mm_add_epi32(bs0, _mm_load_si128((const __m128i*)INIT0));345as1 = _mm_add_epi32(as1, _mm_load_si128((const __m128i*)INIT1));346bs1 = _mm_add_epi32(bs1, _mm_load_si128((const __m128i*)INIT1));348/* Extract hash into out */349Unshuffle(as0, as1);350Unshuffle(bs0, bs1);351Save(out, as0);352Save(out + 16, as1);353Save(out + 32, bs0);354Save(out + 48, bs1);355}357}359#endif
Independent explanations by MyBitcoinExplorer. Not affiliated with or endorsed by Bitcoin Core. Guides are educational and do not replace the source or its tests.
Bitcoin Core source © its contributors, distributed under the MIT license. Original notices and bundled third-party licenses are retained in the source tree.