This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
import subprocess | |
import os | |
if os.name == 'posix': | |
RED = "\033[1;31m" | |
BLUE = "\033[0;34m" | |
CYAN = "\033[0;36m" | |
GREEN = "\033[0;32m" | |
RESET = "\033[0;0m" |
Bitcoin nodes relay txs to each other over the P2P network. If a node receives a valid tx from a peer, it adds it to the mempool and relays it to its other peers. If it receives an invalid tx from a peer, it must decide what action to take. We distinguish three cases:
- a transaction which is valid according to consensus rules, but invalid according to the node's policy rules.
- a transaction which is valid according to long-established consensus rules,
https://en.bitcoin.it/wiki/OP_CHECKSIG (note that the diagram has a couple of errors and is only for bare scripts, not P2SH)
https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki
The Bitcoin Core wallet consists of:
- An in memory keystore (in /src/keystore.cpp), which contains:
- private keys stored as
mapKeys
- a map from the CKeyID to the private key. - watchonly public keys, stored as
mapWatchKeys
- a map from the CKeyID to the public key. - scripts, stored as
mapScripts
- a map from the CScriptID to the secrialized script. - watchonly scripts, stored as
setWatch
- a set of serialized scripts.
- private keys stored as
- Additional key metadata such as key birthday, hd derivation path. See
CKeyMetadata
in /src/wallet/walletdb.h
NewerOlder