pktd

command module
v0.0.0-...-dfc2b99 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 23, 2024 License: ISC Imports: 68 Imported by: 0

README

pktd

ISC License Master branch build Status Develop branch build Status

pktd is the primary full node PKT Cash implementation, written in Go.

The PKT Cash project is currently under active development and considered to be beta quality software.

In particular, the development branch of pktd is highly experimental, and should generally not be used in a production environment or on the PKT Cash mainnet.

pktd is the primary mainnet node software for the PKT blockchain. It is known to correctly download, validate, and serve the chain, using rules for block acceptance based on Bitcoin Core, with the addition of PacketCrypt Proofs.

It relays newly mined blocks, and individual transactions that have not yet made it into a block, as well as maintaining a transaction pool. All individual transactions admitted to the pool follow rules defined by the network operators, which include strict checks to filter transactions based on miner requirements ("standard" vs "non-standard" transactions).

Unlike other similar software, pktd does NOT directly include wallet functionality - this was an intentional design decision. You will not be able to make or receive payments with pktd directly.

Example wallet functionality is provided in the included, separate, pktwallet package.

Requirements

  • Google Go (Golang) version 1.14 or higher.
  • A somewhat recent release of Git.

Issue Tracker

Building

Using git, clone the project from the repository:

git clone https://github.com/pkt-cash/pktd

Use the ./do shell script to build pktd, pktwallet, and pktctl.

NOTE: It is highly recommended to use only the toolchain Google distributes at the official Go homepage. Go toolchains provided by Linux distributions often use different defaults or apply non-standard patches to the official sources, usually to meet distribution-specific requirements (for example, Red Hat backports, security fixes, and provides a different default linker configuration vs. the upstream Google Go package.)

Support can only be provided for binaries compiled from unmodified sources, using the official (upstream) Google Golang toolchain. We unfortunately are unable to test and support every distribution specific combination.

The official Google Golang installer for Linux is always available for download here.

Documentation

The documentation for pktd is work-in-progress, and available in the docs folder.

License

pktd is licensed under the Copyfree ISC License.

Documentation

Overview

pktd is a full-node bitcoin implementation written in Go.

The default options are sane for most users. This means pktd 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 pktd starts up. By default, the configuration file is located at ~/.pktd/pktd.conf on POSIX-style operating systems and %LOCALAPPDATA%\pktd\pktd.conf on Windows. The -C (--configfile) flag, as shown below, can be used to override this location.

Usage:

pktd [OPTIONS]

Application Options:

  -V, --version             Display version information and exit
  -C, --configfile=         Path to configuration file
  -b, --datadir=            Directory to store data
      --logdir=             Directory to log output.
  -a, --addpeer=            Add a peer to connect with at startup
      --connect=            Connect only to the specified peers at startup
      --nolisten            Disable listening for incoming connections -- NOTE:
                            Listening is automatically disabled if the --connect
                            option is used without also specifying listening
							interfaces via --listen
      --listen=             Add an interface/port to listen for connections
                            (default all interfaces port: 8333, testnet: 18333)
      --maxpeers=           Max number of inbound and outbound peers (125)
      --nobanning           Disable banning of misbehaving peers
      --banduration=        How long to ban misbehaving peers.  Valid time units
                            are {s, m, h}.  Minimum 1 second (24h0m0s)
      --banthreshold=       Maximum allowed ban score before disconnecting and
                            banning misbehaving peers.
      --whitelist=          Add an IP network or IP that will not be banned.
                            (eg. 192.168.1.0/24 or ::1)
  -u, --rpcuser=            Username for RPC connections
  -P, --rpcpass=            Password for RPC connections
      --rpclimituser=       Username for limited RPC connections
      --rpclimitpass=       Password for limited RPC connections
      --rpclisten=          Add an interface/port to listen for RPC connections
                            (default port: 8334, testnet: 18334)
      --rpccert=            File containing the certificate file
      --rpckey=             File containing the certificate key
      --rpcmaxclients=      Max number of RPC clients for standard connections
                            (10)
      --rpcmaxwebsockets=   Max number of RPC websocket connections (25)
      --rpcquirks           Mirror some JSON-RPC quirks of Bitcoin Core -- NOTE:
                            Discouraged unless interoperability issues need to
                            be worked around
      --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
      --nodnsseed           Disable DNS seeding for peers
      --externalip=         Add an ip to the list of local addresses we claim to
                            listen on to peers
      --homedir=            Creates this directory at startup
      --testnet             Use the test network
      --regtest             Use the regression test network
      --simnet              Use the simulation test network
      --addcheckpoint=      Add a custom checkpoint.  Format: '<height>:<hash>'
      --nocheckpoints       Disable built-in checkpoints.  Don't do this unless
                            you know what you're doing.
      --uacomment=          Comment to add to the user agent --
                            See BIP 14 for more information.
      --dbtype=             Database backend to use for the Block Chain (ffldb)
      --profile=            Enable HTTP profiling on given port -- NOTE port
                            must be between 1024 and 65536
      --cpuprofile=         Write CPU profile to the specified file
  -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 (info)
      --upnp                Use UPnP to map our listening port outside of NAT
      --minrelaytxfee=      The minimum transaction fee in BTC/kB to be
                            considered a non-zero fee.
      --limitfreerelay=     Limit relay of transactions with no transaction fee
                            to the given amount in thousands of bytes per
                            minute (15)
      --norelaypriority     Do not require free or low-fee transactions to have
                            high priority for relaying
      --maxorphantx=        Max number of orphan transactions to keep in memory
                            (100)
      --generate            Generate (mine) bitcoins using the CPU
      --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
      --blockminsize=       Mininum block size in bytes to be used when creating
                            a block
      --blockmaxsize=       Maximum block size in bytes to be used when creating
                            a block (750000)
      --blockprioritysize=  Size in bytes for high-priority/low-fee transactions
                            when creating a block (50000)
      --nopeerbloomfilters  Disable bloom filtering support.
      --nocfilters          Disable committed filtering (CF) support.
      --sigcachemaxsize=    The maximum number of entries in the signature
                            verification cache.
      --blocksonly          Do not accept transactions from remote peers.
      --relaynonstd         Relay non-standard transactions regardless of the
                            default settings for the active network.
      --rejectnonstd        Reject non-standard transactions regardless of the
                            default settings for the active network.

Help Options:

-h, --help           Show this help message

Directories

Path Synopsis
Package addrmgr implements a concurrently-safe Bitcoin address manager.
Package addrmgr implements a concurrently-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 btcec implements support for the elliptic curves needed for bitcoin.
Package btcec implements support for the elliptic curves needed for bitcoin.
Package btcjson provides primitives for working with the bitcoin JSON-RPC API.
Package btcjson provides primitives for working with the bitcoin JSON-RPC API.
Package btcutil provides bitcoin-specific convenience functions and types.
Package btcutil provides bitcoin-specific convenience functions and types.
base58
Package base58 provides an API for working with modified base58 and Base58Check encodings.
Package base58 provides an API for working with modified base58 and Base58Check encodings.
bech32
Package bech32 provides a Go implementation of the bech32 format specified in BIP 173.
Package bech32 provides a Go implementation of the bech32 format specified in BIP 173.
er
gcs
Package gcs provides an API for building and using a Golomb-coded set filter.
Package gcs provides an API for building and using a Golomb-coded set filter.
hdkeychain
Package hdkeychain provides an API for bitcoin hierarchical deterministic extended keys (BIP0032).
Package hdkeychain provides an API for bitcoin hierarchical deterministic extended keys (BIP0032).
psbt
Package psbt is an implementation of Partially Signed Bitcoin Transactions (PSBT).
Package psbt is an implementation of Partially Signed Bitcoin Transactions (PSBT).
txsort
Package txsort provides the transaction sorting according to BIP 69.
Package txsort provides the transaction sorting according to BIP 69.
Package chaincfg defines chain configuration parameters.
Package chaincfg defines chain configuration parameters.
chainhash
Package chainhash provides abstracted hash functionality.
Package chainhash provides abstracted hash functionality.
globalcfg
Package globalcfg contains configuration which must be available anywhere in the project, do not import anything which is part of pktd.
Package globalcfg contains configuration which must be available anywhere in the project, do not import anything which is part of pktd.
cmd
Package connmgr implements a generic Bitcoin network connection manager.
Package connmgr implements a generic Bitcoin network connection manager.
contrib
Package database provides a block and metadata storage database.
Package database provides a block and metadata storage database.
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.
goleveldb module
leveldb
Package leveldb provides implementation of LevelDB key/value database.
Package leveldb provides implementation of LevelDB key/value database.
leveldb/cache
Package cache provides interface and implementation of a cache algorithms.
Package cache provides interface and implementation of a cache algorithms.
leveldb/comparer
Package comparer provides interface and implementation for ordering sets of data.
Package comparer provides interface and implementation for ordering sets of data.
leveldb/errors
Package errors provides common error types used throughout leveldb.
Package errors provides common error types used throughout leveldb.
leveldb/filter
Package filter provides interface and implementation of probabilistic data structure.
Package filter provides interface and implementation of probabilistic data structure.
leveldb/iterator
Package iterator provides interface and implementation to traverse over contents of a database.
Package iterator provides interface and implementation to traverse over contents of a database.
leveldb/journal
Package journal reads and writes sequences of journals.
Package journal reads and writes sequences of journals.
leveldb/memdb
Package memdb provides in-memory key/value database implementation.
Package memdb provides in-memory key/value database implementation.
leveldb/opt
Package opt provides sets of options used by LevelDB.
Package opt provides sets of options used by LevelDB.
leveldb/storage
Package storage provides storage abstraction for LevelDB.
Package storage provides storage abstraction for LevelDB.
leveldb/table
Package table allows read and write sorted key/value.
Package table allows read and write sorted key/value.
leveldb/util
Package util provides utilities used throughout leveldb.
Package util provides utilities used throughout leveldb.
rpctest
Package rpctest provides a pktd-specific RPC testing harness crafting and executing integration tests by driving a `pktd` instance via the `RPC` interface.
Package rpctest provides a pktd-specific RPC testing harness crafting and executing integration tests by driving a `pktd` instance via the `RPC` interface.
cmd
lnd
chanfitness
Package chanfitness monitors the behaviour of channels to provide insight into the health and performance of a channel.
Package chanfitness monitors the behaviour of channels to provide insight into the health and performance of a channel.
healthcheck
Package healthcheck contains a monitor which takes a set of liveliness checks which it periodically checks.
Package healthcheck contains a monitor which takes a set of liveliness checks which it periodically checks.
labels
Package labels contains labels used to label transactions broadcast by lnd.
Package labels contains labels used to label transactions broadcast by lnd.
lnrpc
Package lnrpc is a reverse proxy.
Package lnrpc is a reverse proxy.
lnrpc/autopilotrpc
Package autopilotrpc is a reverse proxy.
Package autopilotrpc is a reverse proxy.
lnrpc/chainrpc
Package chainrpc is a reverse proxy.
Package chainrpc is a reverse proxy.
lnrpc/invoicesrpc
Package invoicesrpc is a reverse proxy.
Package invoicesrpc is a reverse proxy.
lnrpc/routerrpc
Package routerrpc is a reverse proxy.
Package routerrpc is a reverse proxy.
lnrpc/signrpc
Package signrpc is a reverse proxy.
Package signrpc is a reverse proxy.
lnrpc/verrpc
Package verrpc is a reverse proxy.
Package verrpc is a reverse proxy.
lnrpc/walletrpc
Package walletrpc is a reverse proxy.
Package walletrpc is a reverse proxy.
lnrpc/watchtowerrpc
Package watchtowerrpc is a reverse proxy.
Package watchtowerrpc is a reverse proxy.
lnrpc/wtclientrpc
Package wtclientrpc is a reverse proxy.
Package wtclientrpc is a reverse proxy.
lntest
Package lntest provides testing utilities for the lnd repository.
Package lntest provides testing utilities for the lnd repository.
nat
tlv
tor
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.
pktlog
log
internal/helpers
Package helpers provides convenience functions to simplify wallet code.
Package helpers provides convenience functions to simplify wallet code.
internal/zero
Package zero contains functions to clear data from byte slices and multi-precision integers.
Package zero contains functions to clear data from byte slices and multi-precision integers.
waddrmgr
Package waddrmgr provides a secure hierarchical deterministic wallet address manager.
Package waddrmgr provides a secure hierarchical deterministic wallet address manager.
wallet
Package wallet provides ...
Package wallet provides ...
wallet/txauthor
Package txauthor provides transaction creation code for wallets.
Package txauthor provides transaction creation code for wallets.
wallet/txrules
Package txrules provides transaction rules that should be followed by transaction authors for wide mempool acceptance and quick mining.
Package txrules provides transaction rules that should be followed by transaction authors for wide mempool acceptance and quick mining.
walletdb
Package walletdb provides a namespaced database interface for pktwallet.
Package walletdb provides a namespaced database interface for pktwallet.
walletdb/bdb
Package bdb implements an instance of walletdb that uses boltdb for the backing datastore.
Package bdb implements an instance of walletdb that uses boltdb for the backing datastore.
walletdb/walletdbtest
Package walletdbtest provides exported tests that can be imported and consumed by walletdb driver tests to help ensure that drivers confirm to the database driver interface correctly.
Package walletdbtest provides exported tests that can be imported and consumed by walletdb driver tests to help ensure that drivers confirm to the database driver interface correctly.
wtxmgr
Package wtxmgr provides an implementation of a transaction database handling spend tracking for a bitcoin wallet.
Package wtxmgr provides an implementation of a transaction database handling spend tracking for a bitcoin wallet.
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
test
Package txscript implements the bitcoin transaction script language.
Package txscript implements the bitcoin transaction script language.
Package wire implements the bitcoin wire protocol.
Package wire implements the bitcoin wire protocol.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL