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.
251fail-fast: false252matrix:253configuration:254- env_vars: {}255cc:256- 'gcc'257- 'clang'258- 'gcc-snapshot'259- 'clang-snapshot'261steps:262- *CHECKOUT263- *CI_SCRIPT_IN_DOCKER264- *PRINT_LOGS266ppc64le_debian:267name: "ppc64le: Linux (Debian stable, QEMU)"268runs-on: ubuntu-latest269needs: docker_cache271strategy:272matrix:273configuration:274- env_vars: {}276env:277WRAPPER_CMD: 'qemu-ppc64le'278SECP256K1_TEST_ITERS: 16279HOST: 'powerpc64le-linux-gnu'280WITH_VALGRIND: 'no'281ECDH: 'yes'282RECOVERY: 'yes'283EXTRAKEYS: 'yes'284SCHNORRSIG: 'yes'285MUSIG: 'yes'286ELLSWIFT: 'yes'287SILENTPAYMENTS: 'yes'288CTIMETESTS: 'no'290steps:291- *CHECKOUT292- *CI_SCRIPT_IN_DOCKER293- *PRINT_LOGS295valgrind_debian:296name: "Valgrind ${{ matrix.configuration.binary_arch }} (memcheck)"297runs-on: ${{ matrix.configuration.runner }}298needs: docker_cache300strategy:301fail-fast: false302matrix:303configuration:304- runner: ubuntu-latest305binary_arch: x64306env_vars: { CC: 'clang', ASM: 'auto' }307- runner: ubuntu-latest308binary_arch: i686309env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' }310- runner: ubuntu-24.04-arm311binary_arch: arm64312env_vars: { CC: 'clang', ASM: 'auto' }313- runner: ubuntu-latest314binary_arch: x64315env_vars: { CC: 'clang', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 }316- runner: ubuntu-latest317binary_arch: i686318env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 }319- runner: ubuntu-24.04-arm320binary_arch: arm64321env_vars: { CC: 'clang', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 }323env:324# The `--error-exitcode` is required to make the test fail if valgrind found errors,325# otherwise it will return 0 (https://www.valgrind.org/docs/manual/manual-core.html).326WRAPPER_CMD: 'valgrind --error-exitcode=42'327ECDH: 'yes'328RECOVERY: 'yes'329EXTRAKEYS: 'yes'330SCHNORRSIG: 'yes'331MUSIG: 'yes'332ELLSWIFT: 'yes'333SILENTPAYMENTS: 'yes'334CTIMETESTS: 'no'335SECP256K1_TEST_ITERS: 2337steps:338- *CHECKOUT339- *CI_SCRIPT_IN_DOCKER340- *PRINT_LOGS342sanitizers_debian:343name: "UBSan, ASan, LSan"344runs-on: ubuntu-latest345needs: docker_cache347strategy:348fail-fast: false349matrix:350configuration:351- env_vars: { CC: 'clang', ASM: 'auto' }352- env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'auto' }353- env_vars: { CC: 'clang', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 }354- env_vars: { CC: 'i686-linux-gnu-gcc', HOST: 'i686-linux-gnu', ASM: 'no', ECMULTGENKB: 2, ECMULTWINDOW: 2 }356env:357ECDH: 'yes'358RECOVERY: 'yes'359EXTRAKEYS: 'yes'360SCHNORRSIG: 'yes'361MUSIG: 'yes'362ELLSWIFT: 'yes'363SILENTPAYMENTS: 'yes'364CTIMETESTS: 'no'365CFLAGS: '-fsanitize=undefined,address -g'366UBSAN_OPTIONS: 'print_stacktrace=1:halt_on_error=1'367ASAN_OPTIONS: 'strict_string_checks=1:detect_stack_use_after_return=1:detect_leaks=1'368LSAN_OPTIONS: 'use_unaligned=1'369SECP256K1_TEST_ITERS: 32370SYMBOL_CHECK: 'no'372steps:373- *CHECKOUT374- *CI_SCRIPT_IN_DOCKER375- *PRINT_LOGS377msan_debian:378name: "MSan"379runs-on: ubuntu-latest380needs: docker_cache382strategy:383fail-fast: false384matrix:385configuration:386- env_vars:387CTIMETESTS: 'yes'388CFLAGS: '-fsanitize=memory -fsanitize-recover=memory -g'389- env_vars:390ECMULTGENKB: 2391ECMULTWINDOW: 2392CTIMETESTS: 'yes'393CFLAGS: '-fsanitize=memory -fsanitize-recover=memory -g -O3'394- env_vars:395# -fsanitize-memory-param-retval is clang's default, but our build system disables it396# when ctime_tests when enabled.397CFLAGS: '-fsanitize=memory -fsanitize-recover=memory -fsanitize-memory-param-retval -g'398CTIMETESTS: 'no'399cc:400- 'clang'401- 'clang-snapshot'403env:404ECDH: 'yes'405RECOVERY: 'yes'406EXTRAKEYS: 'yes'407SCHNORRSIG: 'yes'408MUSIG: 'yes'409ELLSWIFT: 'yes'410SILENTPAYMENTS: 'yes'411CC: ${{ matrix.cc }}412SECP256K1_TEST_ITERS: 32413ASM: 'no'414WITH_VALGRIND: 'no'415SYMBOL_CHECK: 'no'417steps:418- *CHECKOUT419- *CI_SCRIPT_IN_DOCKER420- *PRINT_LOGS422mingw_debian:423name: ${{ matrix.configuration.job_name }}424runs-on: ubuntu-latest425needs: docker_cache427env:428WRAPPER_CMD: 'wine'429WITH_VALGRIND: 'no'430ECDH: 'yes'431RECOVERY: 'yes'432EXTRAKEYS: 'yes'433SCHNORRSIG: 'yes'434MUSIG: 'yes'435ELLSWIFT: 'yes'436SILENTPAYMENTS: 'yes'437CTIMETESTS: 'no'439strategy:440fail-fast: false441matrix:442configuration:443- job_name: 'x86_64 (mingw32-w64): Windows (Debian stable, Wine)'444env_vars:445HOST: 'x86_64-w64-mingw32'446- job_name: 'i686 (mingw32-w64): Windows (Debian stable, Wine)'447env_vars:448HOST: 'i686-w64-mingw32'450steps:451- *CHECKOUT452- *CI_SCRIPT_IN_DOCKER453- *PRINT_LOGS455x86_64-macos-native:456name: "x86_64: macOS Sequoia, Valgrind"457runs-on: macos-15-intel459env:460CC: 'clang'461HOMEBREW_NO_AUTO_UPDATE: 1462HOMEBREW_NO_INSTALL_CLEANUP: 1463SYMBOL_CHECK: 'no'465strategy:466fail-fast: false467matrix:468env_vars:469- { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }470- { WIDEMUL: 'int128_struct', ECMULTGENKB: 2, ECMULTWINDOW: 4 }471- { WIDEMUL: 'int128', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }472- { WIDEMUL: 'int128', RECOVERY: 'yes' }473- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }474- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes', CC: 'gcc' }475- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }476- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes', CC: 'gcc', WRAPPER_CMD: 'valgrind --error-exitcode=42', SECP256K1_TEST_ITERS: 2 }477- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', CPPFLAGS: '-DVERIFY', CTIMETESTS: 'no' }478- BUILD: 'distcheck'480steps:481- *CHECKOUT483- name: Install Homebrew packages484run: |485brew install --quiet automake libtool gcc486ln -s $(brew --prefix gcc)/bin/gcc-?? /usr/local/bin/gcc488- name: Install and cache Valgrind489uses: ./.github/actions/install-homebrew-valgrind491- &CI_SCRIPT_ON_HOST492name: CI script493env: ${{ matrix.env_vars }}494run: ./ci/ci.sh496- &SYMBOL_CHECK_MACOS497name: Symbol check498env:499VIRTUAL_ENV: '${{ github.workspace }}/venv'500run: |
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.