PKT-FullNode

command module
v0.0.0-...-0cf96f8 Latest Latest
Warning

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

Go to latest
Published: Jan 9, 2024 License: ISC Imports: 71 Imported by: 0

README

PKT-FullNode

ISC License

PKT-FullNode is the core blockchain engine which supports the PKT blockchain. It is based on the pktd codebase which was a single repository combining blockchain engine, wallet, and lightning daemon.

In order to allow the wallet and lightning code to evolve more quickly, the full node was branched off and lives here where it will evolve on it's own path.

Why should I run a FullNode?

A FullNode is not needed to own PKT, mine PKT, or have a wallet. You only need this if you want to:

  1. Set up your own mining pool
  2. Run your own block explorer
  3. Run an ElectrumX instance
  4. Query your FullNode to learn things about the PKT blockchain
  5. Be a good community member and contribute resources

When you run a PKT-FullNode, you are making the PKT Network more decentralized and providing a service to wallets which need to talk to your node in order to know if they have been paid on the blockchain.

How should I run a FullNode?

FullNodes should be run on servers, they need not be housed in big datacenters but they should have a public IP address or ability to forward a port, and should be something which will be turned on most of the time.

As far as resources, a FullNode can run on anything as small as a Raspberry Pi, as long as it is attached to a large (500 GB) SSD and has at least 4GB of available memory.

Note about hard drives

The PKT FullNode runs best on an SSD, it can run on a spinning disk, but the latency makes its database operate much more slowly.

How to install

  1. Install golang if you have not already.
  2. Clone this repository with git
  3. Type ./do
  4. You should find ./bin/pktd now exists

How to run

Typically you can type ./bin/pktd and your PKT-FullNode will begin syncing the PKT blockchain.

Now what?

  1. Make sure you have forwarded port 64764 from the public internet
  2. If your node is on a private IP address (e.g. 192.168.X.X) then you can tell pktd how it is reachable from the internet by using the flag --externalip=133.33.33.7 (replacing 133.33.33.7 with whatever your public IP address is).
  3. Check if how close you are to being in sync ./bin/pktctl getinfo and compare the "blocks" field with a block explorer like explorer.pkt.cash
  4. When you're synced, check on the nodes that are connecting to you with ./bin/pktctl getpeerinfo | jq -r '.[] | select(.inbound == true) | .addr + " " + .subver ' make sure you install jq first. Note that nodes with neutrino in the name are wallets.

Issues and support

For help, check:

More Info

Check https://docs.pkt.cash for more information.

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
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
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
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
Package rpcclient implements a websocket-enabled Bitcoin JSON-RPC client.
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