core-review icon indicating copy to clipboard operation
core-review copied to clipboard

Scripts, tools & info for doing Bitcoin Core development and code review

Core Review

Scripts, tools & info for doing Bitcoin Core development and code review. Based on using a macOS 10.14 system.

  • AppleScript - Scripts for UI & test automation
  • apple-os.py - Build git histories for Apple Open Source libraries.
  • Apt-Cacher NG - Using Apt-Cacher NG for gitian builds.
  • assumevalid Updates - How to review pull requests that update assumevalid.
  • big-wallet.py - Create a wallet with lots of transactions.
  • Binary Compare - Notes on doing binary comparisons of Bitcoin Core
  • Clang Build Analyser - Clangs -ftime-trace & ClangBuildAnalyzer
  • Clang Tools - Setting up & using Clang Tools
  • Compiler Bugs
  • Compiler Defaults
  • Compiler Explorer - Example Compiler Explorer use case.
  • CoreRPC - Swift RPC wrapper.
  • Coz - Profiling bitcoind with Coz
  • depends - notes on using the depends system
  • Determinism - Notes on determinism.
  • diffoscope - A tool for generating diffs.
  • Flame Graphs - Notes on producing Flame Graphs.
  • fortify.py - Calculate _chk % replacement when using FORTIFY_SOURCE
  • Fuzzing - Fuzzing using Clang & libFuzzer.
  • github-merge.py - Script for merging PRs from GitHub.
  • Gitian Building - Quick setup gitian building guide.
  • gnuplot - gnuplot usage for benchmarking and analysis.
  • Guix - Notes on setting up / using Guix.
  • Hardening - Hardening in Bitcoin Core.
  • IRC - Where to find Bitcoin Core related discussion on IRC.
  • Link Time Optimization - Notes on using LTO.
  • Links - Useful links that I would otherwise forget about.
  • LLDB - Notes on using LLDB.
  • Locale Dependence - Locale dependence examples.
  • MacOS dylib checker - macOS dylib and dynamic linker flag auditing.
  • Mesh - Running bitcoind with Mesh
  • NixOS - Building on NixOS
  • Operating Systems - OS's that Core should support.
  • Profile Guided Optimization - Notes on using PGO.
  • reprotest - Using reprotest.
  • rtld-audit - Dynamic Linker Auditing - linux dynamic linker auditing
  • Scripted Diff
  • Subtree Merges - How to verify subtree merges are done correctly.
  • .tbd stubs - Using .tbd stubs.
  • URIs - URIs for testing bitcoin: uri handling.
  • Vagrant - Box definitions for PR review/testing.
  • Valgrind - Installing Valgrind on macOS.
  • Windows - Windows 10 VM setup for native builds.
  • Windows Cross Compile - Building Windows binaries on macOS

TODO

  • Add some notes LD notes for why_live, dead_strip_dyibs, DYLD_ etc.
  • glibc function usage
  • CVE history