bitcoin/doc
glozow 2aff9a36c3
Merge bitcoin/bitcoin#30352: policy: Add PayToAnchor(P2A), OP_1 <0x4e73> as a standard output script for spending
75648cea5a test: add P2A ProduceSignature coverage (Greg Sanders)
7998ce6b20 Add release note for P2A output feature (Greg Sanders)
71c9b02a04 test: add P2A coverage for decodescript (Greg Sanders)
1349e9ec15 test: Add anchor mempool acceptance test (Greg Sanders)
9d89209937 policy: stop 3rd party wtxid malleability of anchor spend (Greg Sanders)
b60aaf8b23 policy: make anchor spend standard (Greg Sanders)
455fca86cf policy: Add OP_1 <0x4e73> as a standard output type (Greg Sanders)

Pull request description:

  This is a sub-feature taken out of the original proposal for ephemeral anchors #30239

  This PR makes *spending* of `OP_1 <0x4e73>` (i.e. `bc1pfeessrawgf`) standard. Creation of this output type is already standard.

  Any future witness output types are considered relay-standard to create, but not to spend. This preserves upgrade hooks, such as a completely new output type for a softfork such as BIP341.  It also gives us a bit of room to use a new output type for policy uses.

  This particular sized witness program has no other known use-cases (https://bitcoin.stackexchange.com/a/110664/17078), s it affords insufficient cryptographic security for a secure commitment to data, such as a script or a public key. This makes this type of output "keyless", or unauthenticated.

  As a witness program, the `scriptSig` of the input MUST be blank, by BIP141. This helps ensure txid-stability of the spending transaction, which may be required for smart contracting wallets. If we do not use segwit, a miner can simply insert an `OP_NOP` in the `scriptSig` without effecting the result of program execution.

  An additional relay restriction is to disallow non-empty witness data, which an adversary may use to penalize the "honest" transactor when RBF'ing the transaction due to the incremental fee requirement of RBF rules.

  The intended use-case for this output type is to "anchor" the transaction with a spending child to bring exogenous CPFP fees into the transaction package, encouraging the inclusion of the package in a block. The minimal size of creation and spending of this output makes it an attractive contrast to outputs like `p2sh(OP_TRUE)` and `p2wsh(OP_TRUE)` which
  are significantly larger in vbyte terms.

  Combined with TRUC transactions which limits the size of child transactions significantly, this is an attractive option for presigned transactions that need to be fee-bumped after the fact.

ACKs for top commit:
  sdaftuar:
    utACK 75648cea5a
  theStack:
    re-ACK 75648cea5a
  ismaelsadeeq:
    re-ACK 75648cea5a via [diff](e7ce6dc070..75648cea5a)
  glozow:
    ACK 75648cea5a
  tdb3:
    ACK 75648cea5a

Tree-SHA512: d529de23d20857e6cdb40fa611d0446b49989eaafed06c28280e8fd1897f1ed8d89a4eabbec1bbf8df3d319910066c3dbbba5a70a87ff0b2967d5205db32ad1e
2024-08-02 15:49:44 +01:00
..
design doc: Remove reference to resolved issue 2024-07-31 14:22:57 +02:00
man scripted-diff: Fix typo in stub manual pages 2021-01-12 16:46:55 +01:00
policy doc: reword package RBF documentation 2024-06-18 09:30:30 -04:00
release-notes [doc] archive v26.2 release notes 2024-07-09 15:36:36 +01:00
.gitignore Ignore Doxyfile generated from Doxyfile.in template. 2017-04-07 16:28:12 +02:00
assets-attribution.md [doc] Merge doc/assets-attribution.md into contrib/debian/copyright 2015-09-18 18:14:42 +02:00
benchmarking.md doc: update doc/benchmarking.md 2021-06-24 11:15:29 +02:00
bips.md [doc] update bips.md for 431 2024-06-02 20:21:56 +02:00
bitcoin-conf.md system: use %LOCALAPPDATA% as default datadir on windows 2024-04-30 11:03:04 -04:00
bitcoin_logo_doxygen.png Lossless image optimization 2013-12-02 10:10:22 +01:00
build-freebsd.md doc: suggest only necessary Qt packages for installation on FreeBSD 2024-04-24 14:14:18 +02:00
build-netbsd.md doc: Update NetBSD Build Guide 2024-05-20 12:59:15 +01:00
build-openbsd.md doc: mention optional dependencies (qrencode, zmq) in OpenBSD build docs 2024-07-30 22:34:35 +02:00
build-osx.md doc: add LLVM instruction for macOS < 13 2024-04-29 10:33:21 +02:00
build-unix.md Merge bitcoin/bitcoin#29756: doc: Override -g properly to skip debugging information 2024-04-01 16:54:44 +02:00
build-windows.md doc: remove mingw-w64 install for "older" systems 2023-11-17 10:57:51 +00:00
cjdns.md doc: update getnodeaddresses for CJDNS, I2P and Tor and rm link 2023-06-01 15:52:51 +02:00
dependencies.md build: Bump clang minimum supported version to 16 2024-06-26 18:48:05 +02:00
descriptors.md tests: improve wallet multisig descriptor test and docs 2024-05-19 19:59:38 -05:00
developer-notes.md Fix lint-spelling warnings 2024-07-22 13:59:42 +02:00
dnsseed-policy.md Update the developer mailing list address. 2024-04-02 15:38:40 -03:00
Doxyfile.in Generate doxygen documentation for test sources 2021-05-19 22:08:18 -07:00
external-signer.md wallet: compare address returned by displayaddress 2024-04-16 17:47:43 +02:00
files.md system: use %LOCALAPPDATA% as default datadir on windows 2024-04-30 11:03:04 -04:00
fuzzing.md doc: remove references to disable-asm option now that it's gone 2024-02-29 19:10:31 +00:00
guix.md docs: Point to contrib/guix/README.md in doc/guix.md 2021-01-08 11:40:01 -05:00
i2p.md doc: i2p: improve -i2pacceptincoming mention 2024-04-04 18:32:39 -03:00
init.md Merge bitcoin/bitcoin#28167: init: Add option for rpccookie permissions (replace 26088) 2024-06-27 17:35:08 -04:00
JSON-RPC-interface.md minor: remove unnecessary semicolons from RPC content type examples 2024-06-07 10:47:24 -04:00
managing-wallets.md Merge bitcoin/bitcoin#27064: system: use %LOCALAPPDATA% as default datadir on windows 2024-05-23 12:11:55 -04:00
multiprocess.md doc: Add multiprocess design doc 2023-12-22 16:23:33 -05:00
multisig-tutorial.md doc: remove obsolete mention and link to closed PR 2024-07-31 12:38:29 +02:00
offline-signing-tutorial.md doc: update signet faucet link in offline-signing-tutorial.md 2024-03-04 00:14:29 +07:00
p2p-bad-ports.md init, doc: improve -onlynet help and tor/i2p documentation 2022-03-03 16:14:01 +01:00
productivity.md doc: add distcc to productivity notes 2022-06-13 16:13:11 +02:00
psbt.md doc: M-of-N multisig using descriptor wallets and PSBTs, as well as a signing flow 2021-08-16 10:43:07 +05:00
README.md build, test, doc: Temporarily remove Android-related stuff 2024-05-06 11:29:14 +01:00
README_doxygen.md doc: Improve doxygen readme navigation section 2019-09-23 19:22:06 -04:00
README_windows.txt doc: Remove version numbers from READMEs 2017-04-05 09:40:48 +02:00
reduce-memory.md doc: Be vague instead of wrong about MALLOC_ARENA_MAX 2023-09-20 17:12:24 +00:00
reduce-traffic.md doc: update/clarify max outbound connection count 2023-12-11 20:05:25 +01:00
release-28984.md Add release note for size 2 package rbf 2024-06-13 09:52:59 -04:00
release-notes-27101.md doc: update and link for JSON-RPC 2.0 2024-06-07 09:26:50 -04:00
release-notes-27114.md docs: add release notes for #27114 2024-02-28 10:05:56 -03:00
release-notes-27307.md wallet: update mempool conflicts tests + docs 2024-07-01 12:27:43 -04:00
release-notes-27375.md doc: add release notes and help text for unix sockets 2024-03-01 14:47:29 -05:00
release-notes-27679.md doc: release notes for PR 27679 2024-04-16 14:14:42 -04:00
release-notes-29091-29165.md build: Bump clang minimum supported version to 16 2024-06-26 18:48:05 +02:00
release-notes-29496.md [doc] add release note for TRUC 2024-07-02 12:20:12 +01:00
release-notes-29612.md doc: Add release notes for #29612 2024-05-24 12:42:06 +02:00
release-notes-29845.md rpc: return warnings as an array instead of just a single one 2024-05-01 14:44:57 +01:00
release-notes-29987.md guix: use glibc 2.31 2024-06-12 10:33:17 +01:00
release-notes-30058.md introduce and use the generalized node::Warnings interface 2024-06-13 11:20:48 +01:00
release-notes-30192.md build: remove --enable-lcov-branch-coverage 2024-05-30 10:36:55 +01:00
release-notes-30352.md Add release note for P2A output feature 2024-07-30 14:06:58 -04:00
release-notes-30482.md doc: Add release notes for two pull requests 2024-07-24 17:40:24 +02:00
release-notes-empty-template.md doc: add minimum required Linux Kernel to release-notes 2023-12-07 13:53:41 +00:00
release-process.md [doc] update release-process.md and backports section of CONTRIBUTING 2024-04-18 17:07:57 +01:00
REST-interface.md Merge bitcoin/bitcoin#26207: rest: add verbose and mempool_sequence query params for mempool/contents 2023-03-15 19:39:30 -04:00
tor.md Merge bitcoin/bitcoin#27719: doc: remove Tor link & generalize onion getnodeaddresses RPC 2023-06-01 15:24:23 +01:00
tracing.md Use int32_t type for most transaction size/weight values 2023-06-12 19:47:19 +01:00
translation_process.md doc: Update translation_process.md 2024-02-14 21:39:39 -03:00
translation_strings_policy.md doc: Do not translate technical or extremely rare errors 2020-05-05 04:46:08 +03:00
zmq.md validationinterface: only send zmq notifications for active 2023-09-30 06:38:47 -04:00

Bitcoin Core

Setup

Bitcoin Core is the original Bitcoin client and it builds the backbone of the network. It downloads and, by default, stores the entire history of Bitcoin transactions, which requires a few hundred gigabytes of disk space. Depending on the speed of your computer and network connection, the synchronization process can take anywhere from a few hours to a day or more.

To download Bitcoin Core, visit bitcoincore.org.

Running

The following are some helpful notes on how to run Bitcoin Core on your native platform.

Unix

Unpack the files into a directory and run:

  • bin/bitcoin-qt (GUI) or
  • bin/bitcoind (headless)

Windows

Unpack the files into a directory, and then run bitcoin-qt.exe.

macOS

Drag Bitcoin Core to your applications folder, and then run Bitcoin Core.

Need Help?

Building

The following are developer notes on how to build Bitcoin Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc.

Development

The Bitcoin repo's root README contains relevant information on the development process and automated testing.

Resources

Miscellaneous

License

Distributed under the MIT software license.