Use https://github.com/pkt-cash/pktd - this is not maintained here.
pktd
is the reference full node PKT Cash
implementation, written in Go.
pktd
is the primary mainnet node software for the PKT blockchain. It is known
to correctly download, validate, and serve the blockchain, using rules for block
acceptance based primarily on Bitcoin Core, with the addition of
PacketCrypt proofs to provide
verification of the unique bandwidth-hard proof-of-work algorithm.
The PKT blockchain provides for a Network Steward, chosen by consensus, who receives a portion of the PKT mined from each block. The role of the Network Steward is to support the PKT blockchain and ecosystem, fighting for enhanced privacy and greater individual autonomy for all. Anyone holding PKT Cash is eligible to cast a vote to choose the Network Steward. The Network Steward's treasury account does not accumulate indefinitely - it "burns" any balance older than 129,600 blocks (~3 months), which encourages the Steward to use their PKT holdings to provide support and funding for worthy projects.
The pktd
software is under active development - releases should be considered
beta quality software. The unreleased code in the develop
branch is highly
experimental and of alpha quality - it has not yet been rigorously tested, and
should not be used in production environments.
It is recommended that users run the most recent tagged release (or a checkout
of the master
branch) for production deployments.
The pktd
full-node software utilizies peer-to-peer networking to relay newly
mined blocks, as well as individual transactions not yet included in a block. It
also maintains a local transaction pool, consisting of transactions that have
been accepted, based on rules defined by network consensus. Transactions undergo
strict checking and filtering based on miner-defined requirements, separating
them into two classes: "standard" and "non-standard", allowing them to be
processed accordingly.
Unlike most cryptocurrency software, pktd
does NOT provide any "built-in"
wallet capability. This intentional design decision was made to enhance overall
security and software modularity. While this means you cannot make or receive
payments using pktd
directly; this functionality is provided by the bundled,
but separate, pktwallet package.
Additional alternative wallet packages are currently under active development.
- Go (Golang), release 1.14.1 or later, running on a supported 64-bit platform.
- A somewhat recent release of Git (used to clone the repository, and by Go to download dependencies).
- Using
git
, clone the project from the repository:git clone -b develop-johnsonjh https://github.com/johnsonjh/pktd
- Then, use the
do
script to buildpktd
,pktwallet
, andpktctl
:cd pktd && ./do
Optionally, run extended tests and generate code coverage reports:
- Using
go get
, install thegocov
andgocov-html
tools into yourGOPATH
:GO111MODULES=off go get -t -u github.com/axw/gocov/gocov
GO111MODULES=off go get -t -u github.com/matm/gocov-html
- Then, run the coverage generation script: (zsh, bash, ksh, or mksh
required.)
PATH=$(go env GOPATH)/bin:${PATH} ./cov_report.sh
It is highly recommended to use the official Go toolchain distributed by Google, available for download from the Go homepage.
Software built and packaged for Linux distributions is often compiled with
different defaults and non-standard patches, often deviating significantly from
the corresponding official upstream release. This usually done to meet
distribution-specific policies and requirements, but presents a unique hazard
for software software such as pktd
, operating on distributed consensus. This
class of software is unique, in that it must maintain bug-for-bug
compatibility in consensus-critical codepaths. Nodes which incorporate their own
changes, even well-intentioned "fixes", may not be able to properly
interoperate on the main network, and, in sufficient numbers, these nodes could,
unintentionally, create an isolated or 'forked' blockchain, usable only by
other similarly broken nodes.
While not currently the source of any known issue, Red Hat will backport cherry-picked updates from unreleased versions (or produce their own patches) to fix specific issues in their releases. They are also known to currently ship a Go distribution with a much different linker configuration than the upstream. Debian is well known for making changes to upstream sources, often extensively, sometimes incorrectly.
For these reasons, support can only be provided for Linux when the software is compiled from unmodified source code, using the official toolchain. If you have any doubts about your installed Go software, Google provides an automated Go installer for Linux.
Currently, documentation for pktd
, pktwallet
, and pktctl
is a
"work-in-progress".
GoDoc documentation is provided, but is mostly developer-focused at this
time. It can be viewed by running godoc -http=:6543
in the directory
containing the pktd
source code tree, then loading
http://localhost:6543/pkg/github.com/johnsonjh/pktd/
in a web browser.
The same GoDoc documentation is also available at
pkg.go.dev/github.com/johnsonjh/pktd,
which does not require a local copy of the source code, or the godoc
tool
installed.
There is also documentation in the docs directory of the source tree available for review.
- PKT.chat is a Matterfoss server providing real-time interaction for the PKT community.
- Other options are available and listed on the PKT.cash web site.
pktd
is licensed under the Copyfree ISC License.