Documentation
¶
Overview ¶
btcd is a full-node bitcoin implementation written in Go.
The default options are sane for most users. This means btcd will work 'out of the box' for most users. However, there are also a wide variety of flags that can be used to control it.
The following section provides a usage overview which enumerates the flags. An interesting point to note is that the long form of all of these options (except -C) can be specified in a configuration file that is automatically parsed when btcd starts up. By default, the configuration file is located at ~/.btcd/btcd.conf on POSIX-style operating systems and %LOCALAPPDATA%\btcd\btcd.conf on Windows. The -C (--configfile) flag, as shown below, can be used to override this location.
Usage:
btcd [OPTIONS]
Application Options:
--addcheckpoint= Add a custom checkpoint. Format:
'<height>:<hash>'
-a, --addpeer= Add a peer to connect with at startup
--addrindex Maintain a full address-based transaction index
which makes the searchrawtransactions RPC
available
--banduration= How long to ban misbehaving peers. Valid time
units are {s, m, h}. Minimum 1 second (default:
24h0m0s)
--banthreshold= Maximum allowed ban score before disconnecting
and banning misbehaving peers. (default: 100)
--blockmaxsize= Maximum block size in bytes to be used when
creating a block (default: 750000)
--blockminsize= Minimum block size in bytes to be used when
creating a block
--blockmaxweight= Maximum block weight to be used when creating a
block (default: 3000000)
--blockminweight= Minimum block weight to be used when creating a
block
--blockprioritysize= Size in bytes for high-priority/low-fee
transactions when creating a block (default:
50000)
--blocksonly Do not accept transactions from remote peers.
-C, --configfile= Path to configuration file
--connect= Connect only to the specified peers at startup
--cpuprofile= Write CPU profile to the specified file
-b, --datadir= Directory to store data
--dbtype= Database backend to use for the Block Chain
(default: ffldb)
-d, --debuglevel= Logging level for all subsystems {trace, debug,
info, warn, error, critical} -- You may also
specify
<subsystem>=<level>,<subsystem2>=<level>,... to
set the log level for individual subsystems --
Use show to list available subsystems (default:
info)
--dropaddrindex Deletes the address-based transaction index from
the database on start up and then exits.
--dropcfindex Deletes the index used for committed filtering
(CF) support from the database on start up and
then exits.
--droptxindex Deletes the hash-based transaction index from the
database on start up and then exits.
--externalip= Add an ip to the list of local addresses we claim
to listen on to peers
--generate Generate (mine) bitcoins using the CPU
--limitfreerelay= Limit relay of transactions with no transaction
fee to the given amount in thousands of bytes per
minute (default: 15)
--listen= Add an interface/port to listen for connections
(default all interfaces port: 8333, testnet:
18333, signet: 38333)
--logdir= Directory to log output
--maxorphantx= Max number of orphan transactions to keep in
memory (default: 100)
--maxpeers= Max number of inbound and outbound peers
(default: 125)
--miningaddr= Add the specified payment address to the list of
addresses to use for generated blocks -- At least
one address is required if the generate option is
set
--minrelaytxfee= The minimum transaction fee in BTC/kB to be
considered a non-zero fee. (default: 1e-05)
--nobanning Disable banning of misbehaving peers
--nocfilters Disable committed filtering (CF) support
--nocheckpoints Disable built-in checkpoints. Don't do this
unless you know what you're doing.
--nodnsseed Disable DNS seeding for peers
--nolisten Disable listening for incoming connections --
NOTE: Listening is automatically disabled if the
--connect or --proxy options are used without
also specifying listen interfaces via --listen
--noonion Disable connecting to tor hidden services
--nopeerbloomfilters Disable bloom filtering support
--norelaypriority Do not require free or low-fee transactions to
have high priority for relaying
--norpc Disable built-in RPC server -- NOTE: The RPC
server is disabled by default if no
rpcuser/rpcpass or rpclimituser/rpclimitpass is
specified
--notls Disable TLS for the RPC server -- NOTE: This is
only allowed if the RPC server is bound to
localhost
--onion= Connect to tor hidden services via SOCKS5 proxy
(eg. 127.0.0.1:9050)
--onionpass= Password for onion proxy server
--onionuser= Username for onion proxy server
--profile= Enable HTTP profiling on given port -- NOTE port
must be between 1024 and 65536
--proxy= Connect via SOCKS5 proxy (eg. 127.0.0.1:9050)
--proxypass= Password for proxy server
--proxyuser= Username for proxy server
--regtest Use the regression test network
--rejectnonstd Reject non-standard transactions regardless of
the default settings for the active network.
--relaynonstd Relay non-standard transactions regardless of the
default settings for the active network.
--rpccert= File containing the certificate file
--rpckey= File containing the certificate key
--rpclimitpass= Password for limited RPC connections
--rpclimituser= Username for limited RPC connections
--rpclisten= Add an interface/port to listen for RPC
connections (default port: 8334, testnet: 18334)
--rpcmaxclients= Max number of RPC clients for standard
connections (default: 10)
--rpcmaxconcurrentreqs= Max number of concurrent RPC requests that may be
processed concurrently (default: 20)
--rpcmaxwebsockets= Max number of RPC websocket connections (default:
25)
--rpcquirks Mirror some JSON-RPC quirks of Bitcoin Core --
NOTE: Discouraged unless interoperability issues
need to be worked around
-P, --rpcpass= Password for RPC connections
-u, --rpcuser= Username for RPC connections
--sigcachemaxsize= The maximum number of entries in the signature
verification cache (default: 100000)
--simnet Use the simulation test network
--testnet Use the test network
--torisolation Enable Tor stream isolation by randomizing user
credentials for each connection.
--trickleinterval= Minimum time between attempts to send new
inventory to a connected peer (default: 10s)
--txindex Maintain a full hash-based transaction index
which makes all transactions available via the
getrawtransaction RPC
--uacomment= Comment to add to the user agent -- See BIP 14
for more information.
--upnp Use UPnP to map our listening port outside of NAT
-V, --version Display version information and exit
--whitelist= Add an IP network or IP that will not be banned.
(eg. 192.168.1.0/24 or ::1)
Help Options:
-h, --help Show this help message
Index ¶
- Variables
- type Config
- type NAT
- type Server
- func (s *Server) AddBytesReceived(bytesReceived uint64)
- func (s *Server) AddBytesSent(bytesSent uint64)
- func (s *Server) AddPeer(sp *serverPeer)
- func (s *Server) AddRebroadcastInventory(iv *wire.InvVect, data any)
- func (s *Server) AnnounceNewTransactions(txns []*mempool.TxDesc)
- func (s *Server) BanPeer(sp *serverPeer)
- func (s *Server) BroadcastMessage(msg wire.Message, exclPeers ...*serverPeer)
- func (s *Server) CPUMiner() *cpuminer.CPUMiner
- func (s *Server) Chain() *blockchain.BlockChain
- func (s *Server) ConnectedCount() int32
- func (s *Server) GetBlockTemplateGenerator() *mining.BlkTmplGenerator
- func (s *Server) NetTotals() (uint64, uint64)
- func (s *Server) OutboundGroupCount(key string) int
- func (s *Server) ProcessBlockNoPoW(block *btcutil.Block) (bool, bool, error)
- func (s *Server) RPCServer() *rpcServer
- func (s *Server) RelayInventory(invVect *wire.InvVect, data any)
- func (s *Server) RemoveRebroadcastInventory(iv *wire.InvVect)
- func (s *Server) ScheduleShutdown(duration time.Duration)
- func (s *Server) SetOnTxAccepted(callback func(*btcutil.Tx))
- func (s *Server) Start()
- func (s *Server) Stop() error
- func (s *Server) SyncManager() *netsync.SyncManager
- func (s *Server) TransactionConfirmed(tx *btcutil.Tx)
- func (s *Server) TxMemPool() *mempool.TxPool
- func (s *Server) UpdatePeerHeights(latestBlkHash *chainhash.Hash, latestHeight int32, updateSource *peer.Peer)
- func (s *Server) WaitForShutdown()
Constants ¶
This section is empty.
Variables ¶
var ( // ErrRPCUnimplemented is an error returned to RPC clients when the // provided command is recognized, but not implemented. ErrRPCUnimplemented = &btcjson.RPCError{ Code: btcjson.ErrRPCUnimplemented, Message: "Command unimplemented", } // ErrRPCNoWallet is an error returned to RPC clients when the provided // command is recognized as a wallet command. ErrRPCNoWallet = &btcjson.RPCError{ Code: btcjson.ErrRPCNoWallet, Message: "This implementation does not implement wallet commands", } )
Errors
var BtcvmTestNetParms = chaincfg.Params{ Name: "btcvmtestnet", Net: wire.SimNet, DefaultPort: "18555", DNSSeeds: []chaincfg.DNSSeed{}, GenesisBlock: &btcVMTestNetGenesisBlock, GenesisHash: &btcVMTestNetGenesisHash, PowLimit: btcVMTestNetPowLimit, PowLimitBits: 0x1d00ffff, BIP0034Height: 0, BIP0065Height: 0, BIP0066Height: 0, CoinbaseMaturity: 0, SubsidyReductionInterval: 210000, TargetTimespan: time.Hour * 24 * 14, TargetTimePerBlock: time.Minute * 10, RetargetAdjustmentFactor: 4, ReduceMinDifficulty: true, MinDiffReductionTime: time.Minute * 20, GenerateSupported: true, Checkpoints: nil, RuleChangeActivationThreshold: 75, MinerConfirmationWindow: 100, Deployments: [chaincfg.DefinedDeployments]chaincfg.ConsensusDeployment{ chaincfg.DeploymentTestDummy: { BitNumber: 28, DeploymentStarter: chaincfg.NewMedianTimeDeploymentStarter( time.Time{}, ), DeploymentEnder: chaincfg.NewMedianTimeDeploymentEnder( time.Time{}, ), }, chaincfg.DeploymentTestDummyMinActivation: { BitNumber: 22, CustomActivationThreshold: 50, MinActivationHeight: 600, DeploymentStarter: chaincfg.NewMedianTimeDeploymentStarter( time.Time{}, ), DeploymentEnder: chaincfg.NewMedianTimeDeploymentEnder( time.Time{}, ), }, chaincfg.DeploymentCSV: { BitNumber: 0, DeploymentStarter: chaincfg.NewMedianTimeDeploymentStarter( time.Time{}, ), DeploymentEnder: chaincfg.NewMedianTimeDeploymentEnder( time.Time{}, ), }, chaincfg.DeploymentSegwit: { BitNumber: 1, DeploymentStarter: chaincfg.NewMedianTimeDeploymentStarter( time.Time{}, ), DeploymentEnder: chaincfg.NewMedianTimeDeploymentEnder( time.Time{}, ), }, chaincfg.DeploymentTaproot: { BitNumber: 2, DeploymentStarter: chaincfg.NewMedianTimeDeploymentStarter( time.Time{}, ), DeploymentEnder: chaincfg.NewMedianTimeDeploymentEnder( time.Time{}, ), CustomActivationThreshold: 75, }, chaincfg.DeploymentTestDummyAlwaysActive: { BitNumber: 29, DeploymentStarter: chaincfg.NewMedianTimeDeploymentStarter( time.Time{}, ), DeploymentEnder: chaincfg.NewMedianTimeDeploymentEnder( time.Time{}, ), AlwaysActiveHeight: 1, }, }, RelayNonStdTxs: true, Bech32HRPSegwit: "sb", PubKeyHashAddrID: 0x3f, ScriptHashAddrID: 0x7b, PrivateKeyID: 0x64, WitnessPubKeyHashAddrID: 0x19, WitnessScriptHashAddrID: 0x28, HDPrivateKeyID: [4]byte{0x04, 0x20, 0xb9, 0x00}, HDPublicKeyID: [4]byte{0x04, 0x20, 0xbd, 0x3a}, HDCoinType: 115, }
BtcVMTestNetParams defines the network parameters for the test Bitcoin network (version 3). Not to be confused with the regression test network, this network is sometimes simply called "testnet".
var ErrClientQuit = errors.New("client quit")
ErrClientQuit describes the error where a client send is not processed due to the client having already been disconnected or dropped.
var ErrRescanReorg = btcjson.RPCError{ Code: btcjson.ErrRPCDatabase, Message: "Reorganize", }
ErrRescanReorg defines the error that is returned when an unrecoverable reorganize is detected during a rescan.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
ChainParams *chaincfg.Params `json:"chainParams"`
AddCheckpoints []string `json:"addCheckpoints" long:"addcheckpoint" description:"Add a custom checkpoint. Format: '<height>:<hash>'"`
AddPeers []string `` /* 353-byte string literal not displayed */
AddrIndex bool `` /* 169-byte string literal not displayed */
AgentBlacklist []string `` /* 220-byte string literal not displayed */
AgentWhitelist []string `` /* 343-byte string literal not displayed */
BanDuration time.Duration `` /* 155-byte string literal not displayed */
BanThreshold uint32 `` /* 147-byte string literal not displayed */
BlockMaxSize uint32 `` /* 130-byte string literal not displayed */
BlockMinSize uint32 `` /* 130-byte string literal not displayed */
BlockMaxWeight uint32 `json:"blockMaxWeight" long:"blockmaxweight" description:"Maximum block weight to be used when creating a block"`
BlockMinWeight uint32 `json:"blockMinWeight" long:"blockminweight" description:"Minimum block weight to be used when creating a block"`
BlockPrioritySize uint32 `` /* 144-byte string literal not displayed */
BlocksOnly bool `json:"blocksOnly" long:"blocksonly" description:"Do not accept transactions from remote peers."`
ConfigFile string `` /* 353-byte string literal not displayed */
ConnectPeers []string `json:"connectPeers" long:"connect" description:"Connect only to the specified peers at startup"`
CPUProfile string `json:"cpuProfile" long:"cpuprofile" description:"Write CPU profile to the specified file"`
MemoryProfile string `json:"memoryProfile" long:"memprofile" description:"Write memory profile to the specified file"`
DataDir string `` /* 353-byte string literal not displayed */
DbType string `json:"dbType" long:"dbtype" description:"Database backend to use for the Block Chain"`
DebugLevel string `` /* 353-byte string literal not displayed */
DropAddrIndex bool `` /* 159-byte string literal not displayed */
DropCfIndex bool `` /* 175-byte string literal not displayed */
DropTxIndex bool `` /* 156-byte string literal not displayed */
ExternalIPs []string `` /* 141-byte string literal not displayed */
Generate bool `json:"generate" long:"generate" description:"Generate (mine) bitcoins using the CPU"`
FreeTxRelayLimit float64 `` /* 174-byte string literal not displayed */
Listeners []string `` /* 169-byte string literal not displayed */
LogDir string `json:"logDir" long:"logdir" description:"Directory to log output."`
MaxOrphanTxs int `json:"maxOrphanTxs" long:"maxorphantx" description:"Max number of orphan transactions to keep in memory"`
MaxPeers int `json:"maxPeers" long:"maxpeers" description:"Max number of inbound and outbound peers"`
MiningAddrs []string `` /* 222-byte string literal not displayed */
MinRelayTxFee float64 `` /* 140-byte string literal not displayed */
DisableBanning bool `json:"disableBanning" long:"nobanning" description:"Disable banning of misbehaving peers"`
NoCFilters bool `json:"noCFilters" long:"nocfilters" description:"Disable committed filtering (CF) support"`
DisableCheckpoints bool `` /* 149-byte string literal not displayed */
DisableDNSSeed bool `json:"disableDNSSeed" long:"nodnsseed" description:"Disable DNS seeding for peers"`
DisableListen bool `` /* 257-byte string literal not displayed */
NoOnion bool `json:"noOnion" long:"noonion" description:"Disable connecting to tor hidden services"`
NoPeerBloomFilters bool `json:"noPeerBloomFilters" long:"nopeerbloomfilters" description:"Disable bloom filtering support"`
NoRelayPriority bool `` /* 148-byte string literal not displayed */
NoWinService bool `` /* 191-byte string literal not displayed */
DisableRPC bool `` /* 208-byte string literal not displayed */
DisableStallHandler bool `` /* 172-byte string literal not displayed */
DisableTLS bool `` /* 170-byte string literal not displayed */
OnionProxy string `` /* 138-byte string literal not displayed */
OnionProxyPass string `` /* 370-byte string literal not displayed */
OnionProxyUser string `json:"onionProxyUser" long:"onionuser" description:"Username for onion proxy server"`
Profile string `` /* 149-byte string literal not displayed */
Proxy string `json:"proxy" long:"proxy" description:"Connect via SOCKS5 proxy (eg. 127.0.0.1:9050)"`
ProxyPass string `` /* 370-byte string literal not displayed */
ProxyUser string `json:"proxyUser" long:"proxyuser" description:"Username for proxy server"`
Prune uint64 `` /* 218-byte string literal not displayed */
RegressionTest bool `json:"regressionTest" long:"regtest" description:"Use the regression test network"`
RejectNonStd bool `` /* 161-byte string literal not displayed */
RejectReplacement bool `` /* 205-byte string literal not displayed */
RelayNonStd bool `` /* 160-byte string literal not displayed */
RPCCert string `json:"rpcCert" long:"rpccert" description:"File containing the certificate file"`
RPCKey string `json:"rpcKey" long:"rpckey" description:"File containing the certificate key"`
RPCLimitPass string `` /* 370-byte string literal not displayed */
RPCLimitUser string `json:"rpcLimitUser" long:"rpclimituser" description:"Username for limited RPC connections"`
RPCListeners []string `` /* 158-byte string literal not displayed */
RPCMaxClients int `json:"rpcMaxClients" long:"rpcmaxclients" description:"Max number of RPC clients for standard connections"`
RPCMaxConcurrentReqs int `` /* 142-byte string literal not displayed */
RPCMaxWebsockets int `json:"rpcMaxWebsockets" long:"rpcmaxwebsockets" description:"Max number of RPC websocket connections"`
RPCQuirks bool `` /* 190-byte string literal not displayed */
RPCPass string `` /* 370-byte string literal not displayed */
RPCUser string `` /* 353-byte string literal not displayed */
SigCacheMaxSize uint `` /* 135-byte string literal not displayed */
SimNet bool `json:"simNet" long:"simnet" description:"Use the simulation test network"`
SigNet bool `json:"sigNet" long:"signet" description:"Use the signet test network"`
SigNetChallenge string `` /* 216-byte string literal not displayed */
SigNetSeedNode []string `` /* 174-byte string literal not displayed */
TestNet bool `json:"testNet" long:"testnet" description:"Use the test network"`
TorIsolation bool `` /* 150-byte string literal not displayed */
TrickleInterval time.Duration `` /* 141-byte string literal not displayed */
UtxoCacheMaxSizeMiB uint `json:"utxoCacheMaxSizeMiB" long:"utxocachemaxsize" description:"The maximum size in MiB of the UTXO cache"`
TxIndex bool `` /* 183-byte string literal not displayed */
UserAgentComments []string `` /* 138-byte string literal not displayed */
Upnp bool `json:"upnp" long:"upnp" description:"Use UPnP to map our listening port outside of NAT"`
ShowVersion bool `` /* 353-byte string literal not displayed */
Whitelists []string `` /* 146-byte string literal not displayed */
// contains filtered or unexported fields
}
config defines the configuration options for btcd.
See loadConfig for details on the configuration load process.
func LoadConfig ¶
loadConfig initializes and parses the config using a config file and command line options.
The configuration proceeds as follows:
- Start with a default config with sane settings
- Pre-parse the command line to check for an alternative config file
- Load configuration file overwriting defaults with any specified options
- Parse CLI options and overwrite/add any specified options
The above results in btcd functioning properly without any config settings while still allowing the user to override settings with config files and command line options. Command line options always take precedence.
type NAT ¶
type NAT interface {
// Get the external address from outside the NAT.
GetExternalAddress() (addr net.IP, err error)
// Add a port mapping for protocol ("udp" or "tcp") from external port to
// internal port with description lasting for timeout.
AddPortMapping(protocol string, externalPort, internalPort int, description string, timeout int) (mappedExternalPort int, err error)
// Remove a previously added port mapping from external port to
// internal port.
DeletePortMapping(protocol string, externalPort, internalPort int) (err error)
}
NAT is an interface representing a NAT traversal options for example UPNP or NAT-PMP. It provides methods to query and manipulate this traversal to allow access to services.
type Server ¶
type Server struct {
// OnTxRelay is a callback that is called when transactions are to be relayed.
// This is used by the VM to gossip transactions via the Metal network.
OnTxRelay func([]*mempool.TxDesc)
// OnBlockRelay is a callback that is called when blocks are to be relayed.
// This is used by the VM to gossip blocks via the Metal network.
OnBlockRelay func(*btcutil.Block)
// CustomProcessBlock is an optional callback for custom block processing.
// If set, this will be called instead of the default blockchain processing.
// This is useful for integrating with consensus mechanisms like Metal.
CustomProcessBlock func(*btcutil.Block, blockchain.BehaviorFlags) (bool, error)
// contains filtered or unexported fields
}
server provides a bitcoin server for handling communications to and from bitcoin peers.
func BtcdMain ¶
BtcdMain is the main initialization function for btcd in VM mode. It returns the server instance directly for use by the Metal VM. The VM will handle server lifecycle (Start/Stop) instead of using signals. nodeID is used to create a unique database path for each node.
func (*Server) AddBytesReceived ¶
AddBytesReceived adds the passed number of bytes to the total bytes received counter for the server. It is safe for concurrent access.
func (*Server) AddBytesSent ¶
AddBytesSent adds the passed number of bytes to the total bytes sent counter for the server. It is safe for concurrent access.
func (*Server) AddPeer ¶
func (s *Server) AddPeer(sp *serverPeer)
AddPeer adds a new peer that has already been connected to the server.
func (*Server) AddRebroadcastInventory ¶
AddRebroadcastInventory adds 'iv' to the list of inventories to be rebroadcasted at random intervals until they show up in a block.
func (*Server) AnnounceNewTransactions ¶
AnnounceNewTransactions generates and relays inventory vectors and notifies both websocket and getblocktemplate long poll clients of the passed transactions. This function should be called whenever new transactions are added to the mempool.
func (*Server) BanPeer ¶
func (s *Server) BanPeer(sp *serverPeer)
BanPeer bans a peer that has already been connected to the server by ip.
func (*Server) BroadcastMessage ¶
BroadcastMessage sends msg to all peers currently connected to the server except those in the passed peers to exclude.
func (*Server) Chain ¶
func (s *Server) Chain() *blockchain.BlockChain
func (*Server) ConnectedCount ¶
ConnectedCount returns the number of currently connected peers.
func (*Server) GetBlockTemplateGenerator ¶
func (s *Server) GetBlockTemplateGenerator() *mining.BlkTmplGenerator
GetBlockTemplateGenerator returns the block template generator Used by VM to generate blocks without PoW
func (*Server) NetTotals ¶
NetTotals returns the sum of all bytes received and sent across the network for all peers. It is safe for concurrent access.
func (*Server) OutboundGroupCount ¶
OutboundGroupCount returns the number of peers connected to the given outbound group key.
func (*Server) ProcessBlockNoPoW ¶
ProcessBlockNoPoW processes a block with PoW validation disabled Used for Avalanche consensus where PoW is not required
func (*Server) RelayInventory ¶
RelayInventory relays the passed inventory vector to all connected peers that are not already known to have it.
func (*Server) RemoveRebroadcastInventory ¶
RemoveRebroadcastInventory removes 'iv' from the list of items to be rebroadcasted if present.
func (*Server) ScheduleShutdown ¶
ScheduleShutdown schedules a server shutdown after the specified duration. It also dynamically adjusts how often to warn the server is going down based on remaining duration.
func (*Server) SetOnTxAccepted ¶
SetOnTxAccepted sets a callback for when transactions are accepted
func (*Server) Stop ¶
Stop gracefully shuts down the server by stopping and disconnecting all peers and the main listener.
func (*Server) SyncManager ¶
func (s *Server) SyncManager() *netsync.SyncManager
SyncManager returns the sync manager.
func (*Server) TransactionConfirmed ¶
Transaction has one confirmation on the main chain. Now we can mark it as no longer needing rebroadcasting.
func (*Server) UpdatePeerHeights ¶
func (s *Server) UpdatePeerHeights(latestBlkHash *chainhash.Hash, latestHeight int32, updateSource *peer.Peer)
UpdatePeerHeights updates the heights of all peers who have have announced the latest connected main chain block, or a recognized orphan. These height updates allow us to dynamically refresh peer heights, ensuring sync peer selection has access to the latest block heights for each peer.
func (*Server) WaitForShutdown ¶
func (s *Server) WaitForShutdown()
WaitForShutdown blocks until the main listener and peer handlers are stopped.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package addrmgr implements concurrency safe Bitcoin address manager.
|
Package addrmgr implements concurrency safe Bitcoin address manager. |
|
Package blockchain implements bitcoin block handling and chain selection rules.
|
Package blockchain implements bitcoin block handling and chain selection rules. |
|
fullblocktests
Package fullblocktests provides a set of block consensus validation tests.
|
Package fullblocktests provides a set of block consensus validation tests. |
|
indexers
Package indexers implements optional block chain indexes.
|
Package indexers implements optional block chain indexes. |
|
Package btcjson provides primitives for working with the bitcoin JSON-RPC API.
|
Package btcjson provides primitives for working with the bitcoin JSON-RPC API. |
|
btcutil
module
|
|
|
psbt
module
|
|
|
Package chaincfg defines chain configuration parameters.
|
Package chaincfg defines chain configuration parameters. |
|
chainhash
module
|
|
|
cmd
|
|
|
addblock
command
|
|
|
btcctl
command
|
|
|
findcheckpoint
command
|
|
|
gencerts
command
|
|
|
Package connmgr implements a generic Bitcoin network connection manager.
|
Package connmgr implements a generic Bitcoin network connection manager. |
|
Package database provides a block and metadata storage database.
|
Package database provides a block and metadata storage database. |
|
cmd/dbtool
command
|
|
|
ffldb
Package ffldb implements a driver for the database package that uses leveldb for the backing metadata and flat files for block storage.
|
Package ffldb implements a driver for the database package that uses leveldb for the backing metadata and flat files for block storage. |
|
internal/treap
Package treap implements a treap data structure that is used to hold ordered key/value pairs using a combination of binary search tree and heap semantics.
|
Package treap implements a treap data structure that is used to hold ordered key/value pairs using a combination of binary search tree and heap semantics. |
|
rpctest
Package rpctest provides a btcd-specific RPC testing harness crafting and executing integration tests by driving a `btcd` instance via the `RPC` interface.
|
Package rpctest provides a btcd-specific RPC testing harness crafting and executing integration tests by driving a `btcd` instance via the `RPC` interface. |
|
Package mempool provides a policy-enforced pool of unmined bitcoin transactions.
|
Package mempool provides a policy-enforced pool of unmined bitcoin transactions. |
|
Package netsync implements a concurrency safe block syncing protocol.
|
Package netsync implements a concurrency safe block syncing protocol. |
|
Package peer provides a common base for creating and managing Bitcoin network peers.
|
Package peer provides a common base for creating and managing Bitcoin network peers. |
|
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
|
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client. |
|
examples/bitcoincorehttp
command
|
|
|
examples/bitcoincorehttpbulk
command
|
|
|
examples/bitcoincoreunixsocket
command
|
|
|
examples/btcdwebsockets
command
|
|
|
examples/btcwalletwebsockets
command
|
|
|
examples/customcommand
command
|
|
|
Package txscript implements the bitcoin transaction script language.
|
Package txscript implements the bitcoin transaction script language. |
|
v2transport
module
|
|
|
Package wire implements the bitcoin wire protocol.
|
Package wire implements the bitcoin wire protocol. |