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.
501python3 --version502python3 -m venv $VIRTUAL_ENV503export PATH="$VIRTUAL_ENV/bin:$PATH"504python3 -m pip install lief505python3 ./tools/symbol-check.py .libs/libsecp256k1.dylib507- *PRINT_LOGS509arm64-macos-native:510name: "ARM64: macOS Sonoma"511# See: https://github.com/actions/runner-images#available-images.512runs-on: macos-14514env:515CC: 'clang'516HOMEBREW_NO_AUTO_UPDATE: 1517HOMEBREW_NO_INSTALL_CLEANUP: 1518WITH_VALGRIND: 'no'519CTIMETESTS: 'no'520SYMBOL_CHECK: 'no'522strategy:523fail-fast: false524matrix:525env_vars:526- { WIDEMUL: 'int64', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }527- { WIDEMUL: 'int128_struct', ECMULTGENKB: 2, ECMULTWINDOW: 4 }528- { WIDEMUL: 'int128', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }529- { WIDEMUL: 'int128', RECOVERY: 'yes' }530- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes' }531- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes', CC: 'gcc' }532- { WIDEMUL: 'int128', RECOVERY: 'yes', ECDH: 'yes', EXTRAKEYS: 'yes', SCHNORRSIG: 'yes', MUSIG: 'yes', ELLSWIFT: 'yes', SILENTPAYMENTS: 'yes', CPPFLAGS: '-DVERIFY' }533- BUILD: 'distcheck'535steps:536- *CHECKOUT538- name: Install Homebrew packages539run: |540brew install --quiet automake libtool gcc541ln -s $(brew --prefix gcc)/bin/gcc-?? /usr/local/bin/gcc543- *CI_SCRIPT_ON_HOST544- *SYMBOL_CHECK_MACOS545- *PRINT_LOGS547win64-native:548name: ${{ matrix.configuration.job_name }}549# See: https://github.com/actions/runner-images#available-images.550runs-on: windows-2022552strategy:553fail-fast: false554matrix:555configuration:556- job_name: 'x64 (MSVC): Windows (VS 2022, shared)'557cmake_options: '-A x64 -DBUILD_SHARED_LIBS=ON'558symbol_check: 'true'559- job_name: 'x64 (MSVC): Windows (VS 2022, static)'560cmake_options: '-A x64 -DBUILD_SHARED_LIBS=OFF'561- job_name: 'x64 (MSVC): Windows (VS 2022, int128_struct)'562cmake_options: '-A x64 -DSECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY=int128_struct'563- job_name: 'x64 (MSVC): Windows (VS 2022, int128_struct with __(u)mulh)'564cmake_options: '-A x64 -DSECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY=int128_struct'565cpp_flags: '/DSECP256K1_MSVC_MULH_TEST_OVERRIDE'566- job_name: 'x86 (MSVC): Windows (VS 2022)'567cmake_options: '-A Win32'568- job_name: 'x64 (clang-cl): Windows (VS 2022, shared)'569cmake_options: '-T ClangCL -DBUILD_SHARED_LIBS=ON'570symbol_check: 'true'571- job_name: 'x64 (clang-cl): Windows (VS 2022, static)'572cmake_options: '-T ClangCL -DBUILD_SHARED_LIBS=OFF'573- job_name: 'x64 (clang-cl): Windows (VS 2022, int128_struct)'574cmake_options: '-T ClangCL -DSECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY=int128_struct'575- job_name: 'x64 (clang-cl): Windows (VS 2022, int128_struct with __(u)mulh)'576cmake_options: '-T ClangCL -DSECP256K1_TEST_OVERRIDE_WIDE_MULTIPLY=int128_struct'577cpp_flags: '/DSECP256K1_MSVC_MULH_TEST_OVERRIDE'579steps:580- *CHECKOUT582- name: Generate buildsystem583run: cmake -E env CFLAGS="/WX ${{ matrix.configuration.cpp_flags }}" cmake -B build -DSECP256K1_ENABLE_MODULE_RECOVERY=ON -DSECP256K1_BUILD_EXAMPLES=ON ${{ matrix.configuration.cmake_options }}585- name: Build586run: cmake --build build --config RelWithDebInfo -- /p:UseMultiToolTask=true /maxCpuCount588- name: Binaries info589# Use the bash shell included with Git for Windows.590shell: bash591run: |592cd build/bin/RelWithDebInfo && file *tests.exe bench*.exe libsecp256k1-*.dll || true594- name: Symbol check595if: ${{ matrix.configuration.symbol_check }}596shell: bash597run: |598py -3 --version599py -3 -m pip install lief600py -3 ./tools/symbol-check.py build/bin/RelWithDebInfo/libsecp256k1-*.dll602- name: Check603run: |604ctest -C RelWithDebInfo --test-dir build -j ([int]$env:NUMBER_OF_PROCESSORS + 1)605build\bin\RelWithDebInfo\bench_ecmult.exe606build\bin\RelWithDebInfo\bench_internal.exe607build\bin\RelWithDebInfo\bench.exe609win64-native-headers:610name: "x64 (MSVC): C++ (public headers)"611# See: https://github.com/actions/runner-images#available-images.612runs-on: windows-2022614steps:615- *CHECKOUT617- name: C++ (public headers)618shell: cmd619run: |620call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"621cl.exe -c -WX -TP include/*.h623cxx_fpermissive_debian:624name: "C++ -fpermissive (entire project)"625runs-on: ubuntu-latest626needs: docker_cache628strategy:629matrix:630configuration:631- env_vars: {}633env:634CC: 'g++'635CFLAGS: '-fpermissive -g'636CPPFLAGS: '-DSECP256K1_CPLUSPLUS_TEST_OVERRIDE'637WERROR_CFLAGS:638ECDH: 'yes'639RECOVERY: 'yes'640EXTRAKEYS: 'yes'641SCHNORRSIG: 'yes'642MUSIG: 'yes'643ELLSWIFT: 'yes'644SILENTPAYMENTS: 'yes'646steps:647- *CHECKOUT648- *CI_SCRIPT_IN_DOCKER649- *PRINT_LOGS651cxx_headers_debian:652name: "C++ (public headers)"653runs-on: ubuntu-latest654needs: docker_cache656steps:657- *CHECKOUT659- name: CI script660uses: ./.github/actions/run-in-docker-action661with:662dockerfile: ./ci/linux-debian.Dockerfile663scope: ${{ runner.arch }}-${{ needs.docker_cache.outputs.cache_scope }}664command: |665g++ -Werror include/*.h666clang -Werror -x c++-header include/*.h668sage:669name: "SageMath prover"670runs-on: ubuntu-latest671container:672image: sagemath/sagemath:latest673options: --user root675steps:676- *CHECKOUT678- name: CI script679run: |680cd sage681sage prove_group_implementations.sage683release:684runs-on: ubuntu-latest686steps:687- *CHECKOUT689- run: ./autogen.sh && ./configure --enable-dev-mode && make distcheck691- name: Check installation with Autotools692env:693CI_INSTALL: ${{ runner.temp }}/${{ github.run_id }}${{ github.action }}/install694run: |695./autogen.sh && ./configure --prefix=${{ env.CI_INSTALL }} && make clean && make install && ls -RlAh ${{ env.CI_INSTALL }}696gcc -o ecdsa examples/ecdsa.c $(PKG_CONFIG_PATH=${{ env.CI_INSTALL }}/lib/pkgconfig pkg-config --cflags --libs libsecp256k1) -Wl,-rpath,"${{ env.CI_INSTALL }}/lib" && ./ecdsa698- name: Check installation with CMake699env:700CI_BUILD: ${{ runner.temp }}/${{ github.run_id }}${{ github.action }}/build701CI_INSTALL: ${{ runner.temp }}/${{ github.run_id }}${{ github.action }}/install702run: |703cmake -B ${{ env.CI_BUILD }} -DCMAKE_INSTALL_PREFIX=${{ env.CI_INSTALL }} && cmake --build ${{ env.CI_BUILD }} && cmake --install ${{ env.CI_BUILD }} && ls -RlAh ${{ env.CI_INSTALL }}704gcc -o ecdsa examples/ecdsa.c -I ${{ env.CI_INSTALL }}/include -L ${{ env.CI_INSTALL }}/lib*/ -l secp256k1 -Wl,-rpath,"${{ env.CI_INSTALL }}/lib",-rpath,"${{ env.CI_INSTALL }}/lib64" && ./ecdsa
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.