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.
251actually using them on mainnet has been previously inconvenient as252standard Bitcoin Core nodes wouldn't relay them to miners, nor would253most miners include them in blocks they mined.255bitcoin-tx256----------258It has been observed that many of the RPC functions offered by bitcoind are259"pure functions", and operate independently of the bitcoind wallet. This260included many of the RPC "raw transaction" API functions, such as261createrawtransaction.263bitcoin-tx is a newly introduced command line utility designed to enable easy264manipulation of bitcoin transactions. A summary of its operation may be265obtained via "bitcoin-tx --help" Transactions may be created or signed in a266manner similar to the RPC raw tx API. Transactions may be updated, deleting267inputs or outputs, or appending new inputs and outputs. Custom scripts may be268easily composed using a simple text notation, borrowed from the bitcoin test269suite.271This tool may be used for experimenting with new transaction types, signing272multi-party transactions, and many other uses. Long term, the goal is to273deprecate and remove "pure function" RPC API calls, as those do not require a274server round-trip to execute.276Other utilities "bitcoin-key" and "bitcoin-script" have been proposed, making277key and script operations easily accessible via command line.279Mining and relay policy enhancements280------------------------------------282Bitcoin Core's block templates are now for version 3 blocks only, and any mining283software relying on its `getblocktemplate` must be updated in parallel to use284libblkmaker either version 0.4.2 or any version from 0.5.1 onward.285If you are solo mining, this will affect you the moment you upgrade Bitcoin286Core, which must be done prior to BIP66 achieving its 951/1001 status.287If you are mining with the stratum mining protocol: this does not affect you.288If you are mining with the getblocktemplate protocol to a pool: this will affect289you at the pool operator's discretion, which must be no later than BIP66290achieving its 951/1001 status.292The `prioritisetransaction` RPC method has been added to enable miners to293manipulate the priority of transactions on an individual basis.295Bitcoin Core now supports BIP 22 long polling, so mining software can be296notified immediately of new templates rather than having to poll periodically.298Support for BIP 23 block proposals is now available in Bitcoin Core's299`getblocktemplate` method. This enables miners to check the basic validity of300their next block before expending work on it, reducing risks of accidental301hardforks or mining invalid blocks.303Two new options to control mining policy:304- `-datacarrier=0/1` : Relay and mine "data carrier" (OP_RETURN) transactions305if this is 1.306- `-datacarriersize=n` : Maximum size, in bytes, we consider acceptable for307"data carrier" outputs.309The relay policy has changed to more properly implement the desired behavior of not310relaying free (or very low fee) transactions unless they have a priority above the311AllowFreeThreshold(), in which case they are relayed subject to the rate limiter.313BIP 66: strict DER encoding for signatures314------------------------------------------316Bitcoin Core 0.10 implements BIP 66, which introduces block version 3, and a new317consensus rule, which prohibits non-DER signatures. Such transactions have been318non-standard since Bitcoin v0.8.0 (released in February 2013), but were319technically still permitted inside blocks.321This change breaks the dependency on OpenSSL's signature parsing, and is322required if implementations would want to remove all of OpenSSL from the323consensus code.325The same miner-voting mechanism as in BIP 34 is used: when 751 out of a326sequence of 1001 blocks have version number 3 or higher, the new consensus327rule becomes active for those blocks. When 951 out of a sequence of 1001328blocks have version number 3 or higher, it becomes mandatory for all blocks.330Backward compatibility with current mining software is NOT provided, thus miners331should read the first paragraph of "Mining and relay policy enhancements" above.3330.10.0 Change log334=================336Detailed release notes follow. This overview includes changes that affect external337behavior, not code moves, refactors or string updates.339RPC:340- `f923c07` Support IPv6 lookup in bitcoin-cli even when IPv6 only bound on localhost341- `b641c9c` Fix addnode "onetry": Connect with OpenNetworkConnection342- `171ca77` estimatefee / estimatepriority RPC methods343- `b750cf1` Remove cli functionality from bitcoind344- `f6984e8` Add "chain" to getmininginfo, improve help in getblockchaininfo345- `99ddc6c` Add nLocalServices info to RPC getinfo346- `cf0c47b` Remove getwork() RPC call347- `2a72d45` prioritisetransaction <txid> <priority delta> <priority tx fee>348- `e44fea5` Add an option `-datacarrier` to allow users to disable relaying/mining data carrier transactions349- `2ec5a3d` Prevent easy RPC memory exhaustion attack350- `d4640d7` Added argument to getbalance to include watchonly addresses and fixed errors in balance calculation351- `83f3543` Added argument to listaccounts to include watchonly addresses352- `952877e` Showing 'involvesWatchonly' property for transactions returned by 'listtransactions' and 'listsinceblock'. It is only appended when the transaction involves a watchonly address353- `d7d5d23` Added argument to listtransactions and listsinceblock to include watchonly addresses354- `f87ba3d` added includeWatchonly argument to 'gettransaction' because it affects balance calculation355- `0fa2f88` added includedWatchonly argument to listreceivedbyaddress/...account356- `6c37f7f` `getrawchangeaddress`: fail when keypool exhausted and wallet locked357- `ff6a7af` getblocktemplate: longpolling support358- `c4a321f` Add peerid to getpeerinfo to allow correlation with the logs359- `1b4568c` Add vout to ListTransactions output360- `b33bd7a` Implement "getchaintips" RPC command to monitor blockchain forks361- `733177e` Remove size limit in RPC client, keep it in server362- `6b5b7cb` Categorize rpc help overview363- `6f2c26a` Closely track mempool byte total. Add "getmempoolinfo" RPC364- `aa82795` Add detailed network info to getnetworkinfo RPC365- `01094bd` Don't reveal whether password is <20 or >20 characters in RPC366- `57153d4` rpc: Compute number of confirmations of a block from block height367- `ff36cbe` getnetworkinfo: export local node's client sub-version string368- `d14d7de` SanitizeString: allow '(' and ')'369- `31d6390` Fixed setaccount accepting foreign address370- `b5ec5fe` update getnetworkinfo help with subversion371- `ad6e601` RPC additions after headers-first372- `33dfbf5` rpc: Fix leveldb iterator leak, and flush before `gettxoutsetinfo`373- `2aa6329` Enable customising node policy for datacarrier data size with a -datacarriersize option374- `f877aaa` submitblock: Use a temporary CValidationState to determine accurately the outcome of ProcessBlock375- `e69a587` submitblock: Support for returning specific rejection reasons376- `af82884` Add "warmup mode" for RPC server377- `e2655e0` Add unauthenticated HTTP REST interface to public blockchain data378- `683dc40` Disable SSLv3 (in favor of TLS) for the RPC client and server379- `44b4c0d` signrawtransaction: validate private key380- `9765a50` Implement BIP 23 Block Proposal381- `f9de17e` Add warning comment to getinfo383Command-line options:384- `ee21912` Use netmasks instead of wildcards for IP address matching385- `deb3572` Add `-rpcbind` option to allow binding RPC port on a specific interface386- `96b733e` Add `-version` option to get just the version387- `1569353` Add `-stopafterblockimport` option388- `77cbd46` Let -zapwallettxes recover transaction meta data389- `1c750db` remove -tor compatibility code (only allow -onion)390- `4aaa017` rework help messages for fee-related options391- `4278b1d` Clarify error message when invalid -rpcallowip392- `6b407e4` -datadir is now allowed in config files393- `bdd5b58` Add option `-sysperms` to disable 077 umask (create new files with system default umask)394- `cbe39a3` Add "bitcoin-tx" command line utility and supporting modules395- `dbca89b` Trigger -alertnotify if network is upgrading without you396- `ad96e7c` Make -reindex cope with out-of-order blocks397- `16d5194` Skip reindexed blocks individually398- `ec01243` --tracerpc option for regression tests399- `f654f00` Change -genproclimit default to 1400- `3c77714` Make -proxy set all network types, avoiding a connect leak401- `57be955` Remove -printblock, -printblocktree, and -printblockindex402- `ad3d208` remove -maxorphanblocks config parameter since it is no longer functional404Block and transaction handling:405- `7a0e84d` ProcessGetData(): abort if a block file is missing from disk406- `8c93bf4` LoadBlockIndexDB(): Require block db reindex if any `blk*.dat` files are missing407- `77339e5` Get rid of the static chainMostWork (optimization)408- `4e0eed8` Allow ActivateBestChain to release its lock on cs_main409- `18e7216` Push cs_mains down in ProcessBlock410- `fa126ef` Avoid undefined behavior using CFlatData in CScript serialization411- `7f3b4e9` Relax IsStandard rules for pay-to-script-hash transactions412- `c9a0918` Add a skiplist to the CBlockIndex structure413- `bc42503` Use unordered_map for CCoinsViewCache with salted hash (optimization)414- `d4d3fbd` Do not flush the cache after every block outside of IBD (optimization)415- `ad08d0b` Bugfix: make CCoinsViewMemPool support pruned entries in underlying cache416- `5734d4d` Only remove actualy failed blocks from setBlockIndexValid417- `d70bc52` Rework block processing benchmark code418- `714a3e6` Only keep setBlockIndexValid entries that are possible improvements419- `ea100c7` Reduce maximum coinscache size during verification (reduce memory usage)420- `4fad8e6` Reject transactions with excessive numbers of sigops421- `b0875eb` Allow BatchWrite to destroy its input, reducing copying (optimization)422- `92bb6f2` Bypass reloading blocks from disk (optimization)423- `2e28031` Perform CVerifyDB on pcoinsdbview instead of pcoinsTip (reduce memory usage)424- `ab15b2e` Avoid copying undo data (optimization)425- `341735e` Headers-first synchronization426- `afc32c5` Fix rebuild-chainstate feature and improve its performance427- `e11b2ce` Fix large reorgs428- `ed6d1a2` Keep information about all block files in memory429- `a48f2d6` Abstract context-dependent block checking from acceptance430- `7e615f5` Fixed mempool sync after sending a transaction431- `51ce901` Improve chainstate/blockindex disk writing policy432- `a206950` Introduce separate flushing modes433- `9ec75c5` Add a locking mechanism to IsInitialBlockDownload to ensure it never goes from false to true434- `868d041` Remove coinbase-dependant transactions during reorg435- `723d12c` Remove txn which are invalidated by coinbase maturity during reorg436- `0cb8763` Check against MANDATORY flags prior to accepting to mempool437- `8446262` Reject headers that build on an invalid parent438- `008138c` Bugfix: only track UTXO modification after lookup440P2P protocol and network code:441- `f80cffa` Do not trigger a DoS ban if SCRIPT_VERIFY_NULLDUMMY fails442- `c30329a` Add testnet DNS seed of Alex Kotenko443- `45a4baf` Add testnet DNS seed of Andreas Schildbach444- `f1920e8` Ping automatically every 2 minutes (unconditionally)445- `806fd19` Allocate receive buffers in on the fly446- `6ecf3ed` Display unknown commands received447- `aa81564` Track peers' available blocks448- `caf6150` Use async name resolving to improve net thread responsiveness449- `9f4da19` Use pong receive time rather than processing time450- `0127a9b` remove SOCKS4 support from core and GUI, use SOCKS5451- `40f5cb8` Send rejects and apply DoS scoring for errors in direct block validation452- `dc942e6` Introduce whitelisted peers453- `c994d2e` prevent SOCKET leak in BindListenPort()454- `a60120e` Add built-in seeds for .onion455- `60dc8e4` Allow -onlynet=onion to be used456- `3a56de7` addrman: Do not propagate obviously poor addresses onto the network457- `6050ab6` netbase: Make SOCKS5 negotiation interruptible458- `604ee2a` Remove tx from AlreadyAskedFor list once we receive it, not when we process it459- `efad808` Avoid reject message feedback loops460- `71697f9` Separate protocol versioning from clientversion461- `20a5f61` Don't relay alerts to peers before version negotiation462- `b4ee0bd` Introduce preferred download peers463- `845c86d` Do not use third party services for IP detection464- `12a49ca` Limit the number of new addressses to accumulate465- `35e408f` Regard connection failures as attempt for addrman466- `a3a7317` Introduce 10 minute block download timeout467- `3022e7d` Require sufficent priority for relay of free transactions468- `58fda4d` Update seed IPs, based on bitcoin.sipa.be crawler data469- `18021d0` Remove bitnodes.io from dnsseeds.471Validation:472- `6fd7ef2` Also switch the (unused) verification code to low-s instead of even-s473- `584a358` Do merkle root and txid duplicates check simultaneously474- `217a5c9` When transaction outputs exceed inputs, show the offending amounts so as to aid debugging475- `f74fc9b` Print input index when signature validation fails, to aid debugging476- `6fd59ee` script.h: set_vch() should shift a >32 bit value477- `d752ba8` Add SCRIPT_VERIFY_SIGPUSHONLY (BIP62 rule 2) (test only)478- `698c6ab` Add SCRIPT_VERIFY_MINIMALDATA (BIP62 rules 3 and 4) (test only)479- `ab9edbd` script: create sane error return codes for script validation and remove logging480- `219a147` script: check ScriptError values in script tests481- `0391423` Discourage NOPs reserved for soft-fork upgrades482- `98b135f` Make STRICTENC invalid pubkeys fail the script rather than the opcode483- `307f7d4` Report script evaluation failures in log and reject messages484- `ace39db` consensus: guard against openssl's new strict DER checks485- `12b7c44` Improve robustness of DER recoding code486- `76ce5c8` fail immediately on an empty signature488Build system:489- `f25e3ad` Fix build in OS X 10.9490- `65e8ba4` build: Switch to non-recursive make491- `460b32d` build: fix broken boost chrono check on some platforms492- `9ce0774` build: Fix windows configure when using --with-qt-libdir493- `ea96475` build: Add mention of --disable-wallet to bdb48 error messages494- `1dec09b` depends: add shared dependency builder495- `c101c76` build: Add --with-utils (bitcoin-cli and bitcoin-tx, default=yes). Help string consistency tweaks. Target sanity check fix496- `e432a5f` build: add option for reducing exports (v2)497- `6134b43` Fixing condition 'sabotaging' MSVC build498- `af0bd5e` osx: fix signing to make Gatekeeper happy (again)499- `a7d1f03` build: fix dynamic boost check when --with-boost= is used500- `d5fd094` build: fix qt test build when libprotobuf is in a non-standard path
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.